何 曦,李良福,王嬌穎,王 潔,盧曉燕,錢(qián) 鈞,楊一洲,劉培楨
(西安應(yīng)用光學(xué)研究所,陜西 西安 710065)
目前目標(biāo)跟蹤算法大致可以分為傳統(tǒng)算法、基于相關(guān)濾波的算法和基于深度網(wǎng)絡(luò)的算法[1]。其中深度學(xué)習(xí)算法,一方面需要大數(shù)據(jù)的支持,另一方面需要強(qiáng)大的算力作保障。CPU、ARM、DSP無(wú)法完成此類(lèi)大規(guī)模并行運(yùn)算,需借助并行處理能力更高的GPU、FPGA 以及NPU。高性能GPU常年被國(guó)外公司所壟斷,我國(guó)的GPU 水平明顯落后于NVIDIA、AMD 等外國(guó)公司,短期之內(nèi)無(wú)法趕超。FPGA 雖能完成大規(guī)模的并行計(jì)算,靈活性高,但其編譯時(shí)間長(zhǎng),巨大的時(shí)間代價(jià)限制了其應(yīng)用。我國(guó)的NPU 水平處于國(guó)際前列,如華為海思的昇騰芯片、阿里的Ali-NPU,都有著不錯(cuò)的性能,其主流平臺(tái)性能對(duì)比見(jiàn)表1 所示。目前日益緊張的國(guó)際形勢(shì),也使得國(guó)產(chǎn)化替代迫在眉睫。
NVIDIA TX2 和Xavier 可使用TensorRT 高性能深度學(xué)習(xí)推理平臺(tái)[2]實(shí)現(xiàn)低延遲和高吞吐量。從表1 中可以看出,Xavier 在TX2 的基礎(chǔ)上增加了48 個(gè)張量核,其AI 算力大幅提升,但Atlas200的AI 總體算力強(qiáng)出TX2 很多,與最新的Xavier 相當(dāng),處于國(guó)際領(lǐng)先地位,性能功耗比更是明顯優(yōu)于TX2 和Xavier。
表 1 主流GPU、NPU 平臺(tái)性能參數(shù)對(duì)比Table 1 Comparison of performance parameters of important GPU and NPU platforms
在應(yīng)用領(lǐng)域,目標(biāo)檢測(cè)算法存在大量圖片數(shù)據(jù)可供訓(xùn)練,發(fā)展速度很快。但目標(biāo)跟蹤算法由于跟蹤對(duì)象的不確定性,不易采用大數(shù)據(jù)訓(xùn)練,工業(yè)上仍大多使用基于相關(guān)濾波的算法,例如KCF[3],DSST[4],文獻(xiàn)[5]等。該類(lèi)方法對(duì)邊緣的預(yù)測(cè)不佳,會(huì)產(chǎn)生累計(jì)誤差,長(zhǎng)時(shí)跟蹤目標(biāo)容易丟失。2016年SiameseFC[6]的出現(xiàn),讓人們看到了深度學(xué)習(xí)跟蹤算法在工業(yè)應(yīng)用的希望,其模型簡(jiǎn)單,運(yùn)行速度快,同時(shí)孿生網(wǎng)絡(luò)很好地解決了跟蹤的離線(xiàn)訓(xùn)練問(wèn)題。之后的SiameseRPN[7]引入了Faster RCNN[8]中的區(qū)域生成網(wǎng)絡(luò)模塊,無(wú)需進(jìn)行多尺度運(yùn)算就可以對(duì)目標(biāo)位置和形狀進(jìn)行回歸,算法的性能大幅提升。但該類(lèi)算法沒(méi)有在線(xiàn)學(xué)習(xí)機(jī)制,對(duì)從未出現(xiàn)過(guò)的目標(biāo)判別能力不佳,且未能有效利用背景信息,當(dāng)目標(biāo)受遮擋時(shí)容易受到干擾。2018年,IoUNet[9]使用交并比(IoU)代替分類(lèi)得分作為評(píng)價(jià)指標(biāo),進(jìn)一步提升了回歸的準(zhǔn)確性。DiMP[10]引入了目標(biāo)模板預(yù)測(cè)網(wǎng)絡(luò),并且設(shè)計(jì)了有效的損失函數(shù)進(jìn)行快速迭代優(yōu)化,最大化預(yù)測(cè)模型的分辨能力,有效利用圖像序列中目標(biāo)與背景信息,提升目標(biāo)跟蹤性能。但此算法網(wǎng)絡(luò)模型較大,加載和推理耗時(shí)高,迭代次數(shù)多,收斂速度慢,目前在高功耗顯卡上雖然能夠達(dá)到40 fps 以上的速度,但在嵌入式平臺(tái)上依然無(wú)法實(shí)時(shí)跟蹤。除此之外,IoU 損失策略還存在其他問(wèn)題,如跟蹤時(shí)候選框來(lái)回跳躍,跟蹤位置不穩(wěn)定,在候選位置與實(shí)際位置不重疊時(shí)IoUNet 存在收斂盲區(qū),無(wú)梯度回傳,無(wú)法正確收斂等。
針對(duì)以上問(wèn)題,本文提出了一種改進(jìn)的孿生網(wǎng)絡(luò)跟蹤算法。在特征特取網(wǎng)絡(luò)中增加微調(diào)網(wǎng)絡(luò)結(jié)構(gòu),可以在保證速度的前提下實(shí)現(xiàn)在線(xiàn)更新;回歸網(wǎng)絡(luò)中,在IoU 損失的基礎(chǔ)上增加了中心距離懲罰項(xiàng),解決了跟蹤時(shí)候選框在相同IoU 位置來(lái)回跳躍和某些情況下無(wú)梯度回傳的問(wèn)題,同時(shí)還提升了IoUNet 的收斂速度;將訓(xùn)練好的網(wǎng)絡(luò)再通過(guò)通道剪枝,壓縮網(wǎng)絡(luò)模型的尺寸,提升模型加載和推理速度,使之滿(mǎn)足推理的實(shí)時(shí)性要求。最后在華為國(guó)產(chǎn)化嵌入式平臺(tái)Atlas200 上實(shí)現(xiàn)了運(yùn)行速度超過(guò)60 fps。
傳統(tǒng)的孿生網(wǎng)絡(luò)系列跟蹤算法存在一個(gè)問(wèn)題,就是其模型權(quán)重只能離線(xiàn)訓(xùn)練,無(wú)法在線(xiàn)更新。在訓(xùn)練中學(xué)習(xí)到通用特征表達(dá)后,面對(duì)新場(chǎng)景有效性會(huì)降低,無(wú)法準(zhǔn)確分辨目標(biāo)此刻的狀態(tài),是否丟失或被遮擋。如果在目標(biāo)丟失或遮擋情況下,盲目更新模板會(huì)造成誤差累積,最終丟失目標(biāo)。不選擇更新模型權(quán)重最主要的原因是模型太大,無(wú)法適應(yīng)實(shí)時(shí)應(yīng)用需求。若要實(shí)現(xiàn)在線(xiàn)更新,則要從模型大小入手。
如果讓整個(gè)網(wǎng)絡(luò)模型全部參與更新,勢(shì)必會(huì)增加更新時(shí)間,無(wú)法滿(mǎn)足實(shí)時(shí)性要求,并且在線(xiàn)的數(shù)據(jù)量遠(yuǎn)小于離線(xiàn)訓(xùn)練的數(shù)據(jù)量,更新整個(gè)網(wǎng)絡(luò)可能會(huì)適得其反。若減少訓(xùn)練的參數(shù),在線(xiàn)更新就成為可能。在基礎(chǔ)特征網(wǎng)絡(luò)后面加入微調(diào)網(wǎng)絡(luò),在離線(xiàn)訓(xùn)練過(guò)程中,將基礎(chǔ)特征網(wǎng)絡(luò)和微調(diào)網(wǎng)絡(luò)作為一個(gè)整體聯(lián)合訓(xùn)練;在推理的過(guò)程中將基礎(chǔ)特征網(wǎng)絡(luò)和微調(diào)網(wǎng)絡(luò)拆開(kāi),鎖定基礎(chǔ)特征網(wǎng)絡(luò)的參數(shù),只更新微調(diào)網(wǎng)絡(luò)。這樣既能實(shí)現(xiàn)模型在線(xiàn)更新,又能夠保證更新速度,還不會(huì)影響離線(xiàn)訓(xùn)練效果。訓(xùn)練與推理時(shí)的參數(shù)更新流程如圖1 所示。
圖1 中基礎(chǔ)特征網(wǎng)絡(luò)為ResNet50 網(wǎng)絡(luò)的特征輸出層,微調(diào)網(wǎng)絡(luò)為2 層卷積層。其效果類(lèi)似于遷移學(xué)習(xí),把基礎(chǔ)特征網(wǎng)絡(luò)ResNet50 的訓(xùn)練過(guò)程當(dāng)作近似目標(biāo)類(lèi)別進(jìn)行訓(xùn)練。微調(diào)網(wǎng)絡(luò)的作用是在線(xiàn)推理過(guò)程中針對(duì)當(dāng)前跟蹤任務(wù)進(jìn)行優(yōu)化。
圖 1 訓(xùn)練與推理時(shí)的參數(shù)更新Fig.1 Parameters update during training and inference
回歸網(wǎng)絡(luò)始終追求的是更準(zhǔn)確的目標(biāo)回歸。但實(shí)際中,基于最大分類(lèi)得分得到的候選框未必是最優(yōu)的,有時(shí)最大分類(lèi)得分框的中心位置與目標(biāo)的實(shí)際中心位置存在一定偏差,這種誤差會(huì)隨著跟蹤過(guò)程逐漸累積,引起漂移,從而造成目標(biāo)丟失。
DiMP 中采用IoUNet 策略就是考慮到這個(gè)缺點(diǎn),以IoU 重疊度得分評(píng)價(jià)策略代替分類(lèi)得分的評(píng)價(jià)策略,在一定程度上改善了該問(wèn)題。針對(duì)不同場(chǎng)景和目標(biāo)的測(cè)試結(jié)果如圖2 所示[9]。圖2 中黃框代表目標(biāo)真實(shí)位置,紅框的分類(lèi)得分均高于綠框,綠框的IoU 重疊度得分均高于紅框,顯然綠框的跟蹤位置更加準(zhǔn)確。但I(xiàn)oU 重疊度得分仍存在3 個(gè)問(wèn)題:1)可能存在多個(gè)候選框IoU 相同情況,輸出的跟蹤框會(huì)在這幾個(gè)框之間來(lái)回跳躍,增加了輸出結(jié)果的不確定性;2)在目標(biāo)框與候選框不相交時(shí)存在收斂盲區(qū),無(wú)法計(jì)算回傳梯度;3)IoUNet 收斂速度慢,需要多次迭代才能收斂。為解決以上問(wèn)題,回歸損失函數(shù)可在IoU 損失的基礎(chǔ)上,增加目標(biāo)中心位置和候選框中心位置距離的懲罰項(xiàng)。
以圖3 為例,圖中實(shí)線(xiàn)框?yàn)槟繕?biāo)真實(shí)位置,虛線(xiàn)框?yàn)楹蜻x框位置,3 個(gè)候選框與真實(shí)目標(biāo)的IoU相同,均為0.7,但所處真實(shí)框的位置不同,最終輸出位置可能會(huì)在圖3(a)、圖3(b)和圖3(c)這3 個(gè)虛線(xiàn)框位置來(lái)回跳躍,不利于保持跟蹤穩(wěn)定。IoU損失函數(shù)為
式中:B為 候選框;為實(shí)際目標(biāo)框。
圖 2 分類(lèi)得分與IoU 重疊度得分效果比較Fig.2 Comparison between classification score and IoU overlap score
圖 3 多個(gè)位置的IoU 損失相同示例Fig.3 Same examples of IoU loss with different locations
為應(yīng)對(duì)上述問(wèn)題,在IoU 損失的基礎(chǔ)上增加候選框與真實(shí)目標(biāo)中心距離的損失信息,即在保證高IoU 的同時(shí),還要保證候選框中心位置與目標(biāo)實(shí)際中心位置盡可能接近。這樣即使在多個(gè)候選框IoU 損失相同的時(shí)候,也能夠選擇出最佳的跟蹤位置輸出,如圖4 所示。加入距離懲罰的損失函數(shù)為
式中:c為 候選框中心;為實(shí)際目標(biāo)框中心;為兩者之間的距離;R為外接矩形的對(duì)角線(xiàn)長(zhǎng)度。從圖4 可看出,雖然3 個(gè)虛線(xiàn)框IoU 相同,均為0.7,但加入中心位置損失判斷后,圖4(c)虛線(xiàn)框的中心距離懲罰項(xiàng)為0,在3 個(gè)虛線(xiàn)框中中心懲罰項(xiàng)最優(yōu)。
圖 4 加入中心位置的損失判斷Fig.4 Loss judgement added into centric position
在實(shí)際測(cè)試中,原始IoUNet 候選框位置需要迭代10 次才能夠收斂,懲罰項(xiàng)同時(shí)還能夠提升IoUNet 的收斂速度。加入中心距離懲罰項(xiàng)后訓(xùn)練得到的網(wǎng)絡(luò),只需要3 次迭代就可以收斂。綜上所述,加入中心位置懲罰項(xiàng),可以解決單純依靠IoU 重疊度存在的3 個(gè)問(wèn)題。
使用DiMP 的離線(xiàn)訓(xùn)練方法,在TrackingNet[11]、LaSOT[12]、GOT10k[13]和COCO[14]數(shù)據(jù)集訓(xùn)練。主干網(wǎng)絡(luò)使用ImageNet[15]權(quán)重進(jìn)行初始化。每個(gè)循環(huán)通過(guò)20 000 個(gè)視頻來(lái)訓(xùn)練,共訓(xùn)練50 個(gè)循環(huán),每10 個(gè)循環(huán)的學(xué)習(xí)率衰減為原來(lái)的0.2。采用ResNet50 架構(gòu)作為主干,將訓(xùn)練的損失函數(shù)設(shè)為L(zhǎng)train=kLIoU+(1-k)Lclf,其中k為0.01。
ResNet50 可帶來(lái)良好的性能,但幾百兆的模型也帶來(lái)了存儲(chǔ)和計(jì)算負(fù)擔(dān)。在相同數(shù)據(jù)量條件下,一個(gè)剪枝后的深層網(wǎng)絡(luò)性能優(yōu)于一個(gè)淺層網(wǎng)絡(luò),所以我們選擇將ResNet50 模型剪枝而不是選ResNet18。將訓(xùn)練好的模型進(jìn)行剪枝,剪枝方法主要有權(quán)重剪枝和結(jié)構(gòu)化剪枝?;跈?quán)重的剪枝方法會(huì)使網(wǎng)絡(luò)結(jié)構(gòu)不規(guī)則,需要硬件的特定優(yōu)化才能實(shí)現(xiàn)推理加速,看似刪剪率很高,實(shí)際加速效果一般。結(jié)構(gòu)化剪枝是通過(guò)刪剪冗余通道,即從一個(gè)寬網(wǎng)絡(luò)中抽離出一個(gè)窄網(wǎng)絡(luò),實(shí)現(xiàn)有效縮減模型尺寸的同時(shí)提升推理速度。
ResNet 具有分支結(jié)構(gòu),采用剪枝方法可參考Network Slimming[16]。該方法實(shí)現(xiàn)簡(jiǎn)單,效果較好,在工業(yè)領(lǐng)域應(yīng)用廣泛。為了降低實(shí)現(xiàn)難度,只針對(duì)網(wǎng)絡(luò)中沒(méi)有分支的部分進(jìn)行剪枝,分支部分結(jié)構(gòu)保留,為每個(gè)無(wú)分支通道設(shè)置一個(gè)重要性因子γ,并與該通道的輸出相乘,聯(lián)合訓(xùn)練網(wǎng)絡(luò)權(quán)重以及對(duì)應(yīng)的重要性因子,并對(duì)后者進(jìn)行稀疏正則化。重要性因子越小,說(shuō)明當(dāng)前通道越不重要,最后裁剪掉那些重要性因子小的通道,并對(duì)剪枝后的網(wǎng)絡(luò)進(jìn)行微調(diào)。
剪枝后的損失函數(shù)為
前項(xiàng)Ltrain為正常損失函數(shù),后項(xiàng)為稀疏懲罰項(xiàng),是 γ的L1 正則化范數(shù)。
通道中批規(guī)范處理層(BN 層)處在卷積層后面,其中縮放因子滿(mǎn)足重要性因子 γ的要求,可以用其充當(dāng)重要性因子 γ,并且不會(huì)增加網(wǎng)絡(luò)的額外開(kāi)銷(xiāo)。論文[16]也證明了這種方法是設(shè)置通道剪枝重要性因子的最有效方式,剪枝前后網(wǎng)絡(luò)分別如圖5(a)和圖5(b)所示。
圖 5 剪枝前后網(wǎng)絡(luò)Fig.5 Network before and after pruning
當(dāng)剪枝率很高時(shí),剪枝會(huì)導(dǎo)致一定的精度損失,但該損失可以通過(guò)網(wǎng)絡(luò)微調(diào)進(jìn)行補(bǔ)償。限制每次的剪枝率,并通過(guò)多次剪枝迭代的方法可使精度損失下降幅度較小,經(jīng)過(guò)微調(diào)的窄網(wǎng)絡(luò)可以達(dá)到原始未剪枝網(wǎng)絡(luò)相近的精度。剪枝流程圖如圖6 所示。所有的重要性因子都初始化為0.5,學(xué)習(xí)率為0.001,λ為10-5。設(shè)置動(dòng)態(tài)閾值,每次修剪掉30%通道,對(duì)每次剪枝后的模型訓(xùn)練5 個(gè)循環(huán)再進(jìn)行微調(diào),同時(shí)迭代3 次。
圖 6 通道剪枝流程圖Fig.6 Flow chart of channel pruning
Atlas200 嵌入式平臺(tái)主要計(jì)算單元包括ARM(CPU 側(cè))和AI CORE(NPU 側(cè)),其中網(wǎng)絡(luò)模型推理適合放在NPU 側(cè)運(yùn)行,其他部分適合放在CPU側(cè)運(yùn)行。要將算法部署至Atlas200 嵌入式平臺(tái),首先要對(duì)算法整體架構(gòu)進(jìn)行分析,將適合在NPU 側(cè)運(yùn)行和適合在CPU 側(cè)運(yùn)行的部分解耦。算法整體架構(gòu)如圖7 所示,主要包括3 部分:初始化單元、跟蹤單元和在線(xiàn)更新單元。
圖 7 算法架構(gòu)圖Fig.7 Structure diagram of algorithm
將Pytorch 訓(xùn)練好的模型部署到Atlas200 嵌入式平臺(tái)需要2 個(gè)步驟:首先將pytorch 的.pth 模型轉(zhuǎn)換成ONNX 的.onnx 模型;然后通過(guò)華為提供的工具鏈MindStudio 將.onnx 模型轉(zhuǎn)換成Atlas200 平臺(tái)所需的.om 模型。
初始化單元如圖8 所示。初始化步驟為:
1)對(duì)第一幀圖像進(jìn)行裁剪,然后對(duì)裁剪后的圖像塊進(jìn)行增廣、整合,得到對(duì)應(yīng)的初始框;
2)利用ResNet50 和微調(diào)網(wǎng)絡(luò)提取初始幀分類(lèi)網(wǎng)絡(luò)特征和IoU 網(wǎng)絡(luò)特征;
3)利用分類(lèi)網(wǎng)絡(luò)特征初始化目標(biāo)分類(lèi)器,得到一個(gè)維度為(1,512,4,4)的目標(biāo)分類(lèi)器,用該分類(lèi)器與后續(xù)幀中的分類(lèi)網(wǎng)絡(luò)特征卷積就可以得到目標(biāo)最大響應(yīng)位置,實(shí)現(xiàn)后續(xù)跟蹤階段準(zhǔn)確區(qū)分目標(biāo)和背景,以確定目標(biāo)具體位置;
4)利用IoU 網(wǎng)絡(luò)特征初始化IoUNet,得到2 個(gè)維度(1,256,1,1)的IoU 調(diào)制向量,用于后續(xù)跟蹤階段計(jì)算目標(biāo)具體尺寸。
初始化單元主要有3 個(gè)功能:
(1)圖像的裁剪增廣可以作為預(yù)處理部分放在CPU 側(cè)運(yùn)行;
圖 8 初始化單元Fig.8 Initialization unit
(2)提取基礎(chǔ)網(wǎng)絡(luò)和微調(diào)網(wǎng)絡(luò)特征可以放在NPU 側(cè)運(yùn)行;
(3)步驟3)和步驟4)這2 個(gè)部分均可放在NPU 側(cè)運(yùn)行。
考慮到所有在NPU 側(cè)運(yùn)行的模塊之間有較強(qiáng)的數(shù)據(jù)依賴(lài)性,故可以將網(wǎng)絡(luò)特征提取、分類(lèi)器初始化和IoUNet 初始化合并,轉(zhuǎn)為一個(gè)初始化模型在NPU 側(cè)進(jìn)行推理。因此,初始化模塊在嵌入式端實(shí)現(xiàn)需要兩部分,即圖像預(yù)處理部分和初始化模型推理部分。
跟蹤單元如圖9 所示。這個(gè)單元的功能包括:
1)對(duì)當(dāng)前幀圖像裁剪采樣;
2)利用ResNet50 和微調(diào)網(wǎng)絡(luò)提取當(dāng)前幀網(wǎng)絡(luò)特征;
3)利用分類(lèi)器和IoUNet 計(jì)算當(dāng)前幀目標(biāo)位置和大??;
4)逐幀記錄基礎(chǔ)網(wǎng)絡(luò)特征和目標(biāo)位置尺寸信息,用于后續(xù)在線(xiàn)更新分類(lèi)器。
跟蹤單元的核心是功能3),功能3)的實(shí)現(xiàn)包含3 個(gè)部分:
(1)利用分類(lèi)器計(jì)算當(dāng)前幀目標(biāo)的位置。實(shí)現(xiàn)原理是用分類(lèi)器對(duì)當(dāng)前幀的特征圖進(jìn)行卷積得到熱力圖,熱力圖的最大值點(diǎn)的位置就是分類(lèi)得分位置,是一個(gè)純推理過(guò)程,可以放在NPU 側(cè)運(yùn)行。
(2)利用IoUNet 和分類(lèi)得分位置計(jì)算當(dāng)前幀目標(biāo)尺寸,IoUNet 的作用是根據(jù)輸入的特征圖預(yù)測(cè)候選框的IoU 得分,優(yōu)化跟蹤位置。首先依據(jù)預(yù)測(cè)出的當(dāng)前幀目標(biāo)位置(x,y)和上一幀目標(biāo)尺寸(w,h)生成1 個(gè)初始框(x,y,w,h),然后在這個(gè)初始bbox的基礎(chǔ)上,通過(guò)隨機(jī)調(diào)整中心點(diǎn)位置和寬高生成15 個(gè)候選框,最后將16 個(gè)候選框送入IoUNet 預(yù)測(cè)各自的IoU 得分,通過(guò)IoU 損失調(diào)整候選框的位置和大小,直到損失收斂。當(dāng)未加入中心距離懲罰項(xiàng)時(shí),需經(jīng)過(guò)10 次迭代,IoU 損失才可收斂。加入中心懲罰項(xiàng)后只需經(jīng)過(guò)3 次迭代,就可以收斂得到IoU 得分最佳的位置,該部分需要CPU 側(cè)和NPU側(cè)配合運(yùn)行。
(3)結(jié)合分類(lèi)得分和IoU 得分位置,得到最終的跟蹤位置。根據(jù)候選框的IoU 得分和分類(lèi)得分加權(quán),輸出最終的跟蹤位置,該部分需要放在CPU側(cè)運(yùn)行。
取序列圖像CarScale 第234 幅圖像為例,如圖10 所示。從圖10(a)中可以看出,分類(lèi)器輸出結(jié)果能夠得到目標(biāo)的大致尺寸和位置,但不夠精細(xì),需要結(jié)合IoUNet 得到精細(xì)化結(jié)果。未加入中心懲罰項(xiàng)的IoUNet 迭代速度慢,迭代3 次仍未收斂到車(chē)輛邊緣,如圖10(b)所示,需要10 次迭代才能收斂到車(chē)輛邊緣。加入中心懲罰項(xiàng)后,IoUNet迭代3 次就能收斂到比較滿(mǎn)意的結(jié)果,如圖10(c)所示,最終輸出結(jié)果如圖10(d)所示。
圖 9 跟蹤單元Fig.9 Tracking unit
圖 10 跟蹤單元中間結(jié)果Fig.10 Intermediate results of tracking unit
在線(xiàn)更新單元如圖11 所示。在線(xiàn)更新并不是每幀都執(zhí)行,功能包括:
1)判斷是否需要進(jìn)行在線(xiàn)更新;
2)如果需要在線(xiàn)更新,利用共軛梯度法更新微調(diào)網(wǎng)絡(luò)。
更新微調(diào)網(wǎng)絡(luò)方法有2 種方式:
(1)定期更新。長(zhǎng)時(shí)跟蹤隨著時(shí)間累積,目標(biāo)會(huì)逐漸發(fā)生變化,定期更新微調(diào)網(wǎng)絡(luò)可以保證分類(lèi)器的時(shí)效性和穩(wěn)定性;
(2)當(dāng)目標(biāo)周?chē)霈F(xiàn)相似目標(biāo)時(shí),疑似目標(biāo)距離中心比目標(biāo)遠(yuǎn),但依然會(huì)對(duì)目標(biāo)造成影響,此時(shí)分類(lèi)器已不能很好地適應(yīng)當(dāng)前目標(biāo),很難得到準(zhǔn)確的目標(biāo)狀態(tài),需要更新微調(diào)網(wǎng)絡(luò)以適應(yīng)這種劇烈變化帶來(lái)的影響。
判斷微調(diào)網(wǎng)絡(luò)何時(shí)需要更新的部分放在CPU側(cè)運(yùn)行,具體更新的微調(diào)網(wǎng)絡(luò)部分放在NPU 側(cè)運(yùn)行。
在線(xiàn)更新單元作用如圖12 所示。左下角出現(xiàn)干擾車(chē)輛,沒(méi)有在線(xiàn)更新的響應(yīng)圖中會(huì)出現(xiàn)明顯的干擾,如圖12(b)所示;加入在線(xiàn)更新后,干擾車(chē)輛在響應(yīng)圖中影響不大,如圖12(c)所示,提高了跟蹤的準(zhǔn)確性和穩(wěn)定性。
圖 11 在線(xiàn)更新單元Fig.11 Online update unit
圖 12 在線(xiàn)更新單元作用Fig.12 Function of online update unit
選擇Atlas 200 DK 開(kāi)發(fā)者套件作為實(shí)驗(yàn)平臺(tái),操作系統(tǒng)版本為ubuntu18.04,CANN 版本5.0.3,sdk版本21.0.2。
Atlas 200 DK 開(kāi)發(fā)者套件主要包含Atlas 200 AI 加速模塊、圖像/音頻接口芯片(Hi3559C)和一些外部接口,其架構(gòu)如圖13 所示。
圖 13 Atlas200 DK 系統(tǒng)框圖Fig.13 System structure diagram of Atlas200 DK
選擇多組圖像序列對(duì)算法進(jìn)行測(cè)試,算法可以在復(fù)雜背景、尺度變換、目標(biāo)遮擋等條件下保持穩(wěn)定跟蹤。選取夜晚場(chǎng)景CarDark 序列進(jìn)行測(cè)試,其測(cè)試結(jié)果如圖14 所示。從圖14(a)可視化結(jié)果可以看出,本文算法對(duì)于夜間復(fù)雜背景目標(biāo)的跟蹤具有較好的適應(yīng)性;圖14(b)是通過(guò)網(wǎng)絡(luò)計(jì)算出特征圖的響應(yīng)圖;圖14(c)為在線(xiàn)更新微調(diào)網(wǎng)絡(luò)后計(jì)算的損失。
圖 14 CarDark 序列測(cè)試結(jié)果Fig.14 Test results of CarDark sequence
選取尺度變化場(chǎng)景CarScale 序列,其測(cè)試結(jié)果如圖15 所示。從圖15(c)可看出,損失隨著目標(biāo)車(chē)輛尺度逐漸變大,曲線(xiàn)不斷上升,但可視化結(jié)果顯示目標(biāo)并未跟丟(見(jiàn)圖15(a)),這說(shuō)明本文算法對(duì)目標(biāo)尺度的變化具有較好的適應(yīng)性。
圖 15 CarScale 序列測(cè)試結(jié)果Fig.15 Test results of CarScale sequence
選取遮擋場(chǎng)景SUV 序列,其測(cè)試結(jié)果如圖16和圖17 所示。在圖像序列中目標(biāo)車(chē)輛出現(xiàn)了被遮擋情況,但跟蹤過(guò)程中跟蹤效果依舊較好。在圖16 中,目標(biāo)車(chē)輛被樹(shù)木完全遮擋,但并未出現(xiàn)跟蹤丟失目標(biāo)情況;在圖17 中,目標(biāo)車(chē)輛重新出現(xiàn)后跟蹤器依舊能夠很好地跟蹤目標(biāo)。對(duì)比圖16 和圖17 的損失曲線(xiàn)可以看出,在目標(biāo)被遮擋階段,損失出現(xiàn)了大幅度的上升,當(dāng)目標(biāo)重新出現(xiàn)時(shí)損失又回到了較低水平。由此可以看出,分類(lèi)器在線(xiàn)更新機(jī)制能很好地適應(yīng)目標(biāo)被遮擋的情況。
圖 16 SUV 序列遮擋時(shí)測(cè)試結(jié)果Fig.16 Test results of SUV sequence with occlusion
圖 17 SUV 序列遮擋后測(cè)試結(jié)果Fig.17 Test results of SUV sequence after occlusion
由于算法基于嵌入式NPU 平臺(tái)運(yùn)行,故未在大規(guī)模數(shù)據(jù)集上進(jìn)行測(cè)試比較。選取具有代表性的共11 個(gè)視頻序列進(jìn)行測(cè)試,其中包含晝夜、縮放、旋轉(zhuǎn)、遮擋等多個(gè)典型場(chǎng)景,目標(biāo)對(duì)比度和尺寸如表2 所示。
設(shè)視頻序列總幀數(shù)為M,正確檢出目標(biāo)且IoU滿(mǎn)足要求的幀數(shù)為N,則準(zhǔn)確率等于N/M。本文算法因?yàn)榧尤肓宋⒄{(diào)網(wǎng)絡(luò)和IoU 中心懲罰項(xiàng),判別力和跟蹤穩(wěn)定性?xún)?yōu)于DiMP,故相比DiMP 有更高的準(zhǔn)確率,如表3 所示。
表 2 數(shù)據(jù)集的目標(biāo)對(duì)比度和尺寸Table 2 Target contrast and size of data set
表 3 本文算法與DiMP 的準(zhǔn)確率比較Table 3 Accuracy comparison of proposed algorithm and DiMP
DiMP 在TiTan X 上能夠達(dá)到40 f/s。但TiTan X 非嵌入式平臺(tái),算力強(qiáng),體積功耗大,其Int8 的算力約為44 TOPS,功耗更是高達(dá)250 W。本文算法采用Atlas200 平臺(tái),功耗僅為12 W,相比TiTan X 功耗相差巨大,尺寸更是小于一張信用卡,但卻能達(dá)到更高的幀率。因?yàn)榧尤胫行膽土P項(xiàng)后IoUNet 收斂速度加快,還通過(guò)通道剪枝壓縮了模型的大小,所以速度快于DiMP,對(duì)比結(jié)果如表4所示。
表 4 本文算法與DiMP 幀率對(duì)比Table 4 Frame rate comparison of proposed algorithm and DiMP
其他主流GPU 平臺(tái)如NVIDIA TX2、NVIDIA Xaiver,算法功耗為15 W,與altas200 平臺(tái)接近,幀率對(duì)比結(jié)果如表5 所示。,從表5 中可以看出,憑借NPU 對(duì)卷積網(wǎng)絡(luò)的性能加速優(yōu)勢(shì),Atlas200在功耗相近的前提下,計(jì)算速度優(yōu)于NVIDIA 的TX2 和Xaiver。
表 5 不同平臺(tái)下的幀率Table 5 Frame rates on different platforms
本文在孿生網(wǎng)絡(luò)跟蹤算法的基礎(chǔ)上,通過(guò)在特征提取網(wǎng)絡(luò)中增加微調(diào)網(wǎng)絡(luò)解決了孿生網(wǎng)絡(luò)無(wú)法在線(xiàn)更新的問(wèn)題。通過(guò)在IoUNet 中增加中心懲罰項(xiàng),解決了單純依靠IoUNet 輸出不穩(wěn)定,無(wú)重疊情況下存在收斂盲區(qū)和收斂速度慢等問(wèn)題。通過(guò)通道剪枝技術(shù)壓縮了模型大小,提升了推理速度,滿(mǎn)足了實(shí)時(shí)要求,并最終在國(guó)產(chǎn)嵌入式平臺(tái)Atlas200上實(shí)現(xiàn)。功耗僅有12 W,在測(cè)試中算法的平均準(zhǔn)確率達(dá)到0.993(IoU>0.5)和0.900(IoU>0.7),高于DiMP 的0.983(IoU>0.5)和0.858(IoU>0.7),計(jì)算幀率達(dá)到66 Hz。