張利紅 吳柔莞 蔡敬菊
1.中國(guó)科學(xué)院光電技術(shù)研究所 四川 成都 610209;2.中國(guó)科學(xué)院大學(xué)電子電氣與通信工程學(xué)院 北京 100049
隨著物聯(lián)網(wǎng)、5G應(yīng)用的發(fā)展,終端的目標(biāo)檢測(cè)算法落地需求不斷增強(qiáng)。自2012年以來(lái),以AlexNet[1]網(wǎng)絡(luò)為代表的深度學(xué)習(xí)算法成為研究主流;2013年Girshick提出基于區(qū)域卷積網(wǎng)絡(luò)的RCNN框架獲得更好的特征提取能力[2],隨后在RCNN框架上誕生了SPPNet[3]、Faster-RCNN[4];近兩年Joseph Redmon[5-7]等人提出的YOLO系列算法解決了不同尺度的目標(biāo)檢測(cè)問(wèn)題,基本上保證檢測(cè)的實(shí)時(shí)性。但基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法參數(shù)量過(guò)大和網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,受限于終端設(shè)備的硬件資源無(wú)法直接運(yùn)行未經(jīng)優(yōu)化的模型[8-10]。為了盡量減小在嵌入式平臺(tái)上實(shí)際應(yīng)用中的功耗和性能開(kāi)銷(xiāo),嵌入式系統(tǒng)上部署目標(biāo)檢測(cè)算法需要從核心算法和硬件開(kāi)發(fā)平臺(tái)兩方面進(jìn)行選取。
在硬件平臺(tái)方面,長(zhǎng)期以來(lái)國(guó)外廠(chǎng)商在芯片的研發(fā)應(yīng)用上占據(jù)優(yōu)勢(shì),國(guó)內(nèi)嵌入式設(shè)備的開(kāi)發(fā)環(huán)境尚不完備。當(dāng)前科研常用設(shè)備也多為ARM的big.LITTLE系列,Xilinx的FPGA或NVIDIA的Jetson TX1、TX2系列。為發(fā)展自主可控的技術(shù)平臺(tái),在國(guó)產(chǎn)嵌入式平臺(tái)進(jìn)行深度學(xué)習(xí)算法的部署落地也成為重要的課題[11-12]。rk3399pro是瑞芯微電子開(kāi)發(fā)的專(zhuān)門(mén)針對(duì)AI終端推理的國(guó)產(chǎn)芯片,采用大小核處理器內(nèi)嵌NPU神經(jīng)網(wǎng)絡(luò)處理器的方案換取高性能、低功耗和高擴(kuò)展性,兼具高速總線(xiàn)PCIE和超強(qiáng)的視頻編解碼能力。以上特點(diǎn)使其適用于目標(biāo)檢測(cè)領(lǐng)域,2020年6月山東大學(xué)的丁月[13]利用Yolov3 tiny在640*480的圖像中實(shí)現(xiàn)30幀/秒的檢測(cè)速度。
近年學(xué)者在算法方面主要提出兩種方案:一是從算法結(jié)構(gòu)進(jìn)行改進(jìn),采用可分離卷積、分組卷積等方式降低參數(shù)量和計(jì)算成本。這類(lèi)方案以谷歌提出的MobileNet[14]、斯坦福提出的SqueezeNet[15]為代表。二是對(duì)已有模型進(jìn)行剪枝壓縮剔除對(duì)檢測(cè)效果影響較小的參數(shù)結(jié)構(gòu),比如8位定點(diǎn)量化、模型蒸餾等。兩者衍生的大量改進(jìn)的輕量化神經(jīng)網(wǎng)絡(luò)部署到終端設(shè)備上的檢測(cè)精度已基本達(dá)到標(biāo)準(zhǔn),但如何針對(duì)特定平臺(tái)的進(jìn)行算法改進(jìn),以更少的資源占用率實(shí)現(xiàn)檢測(cè)速度和精度的平衡尚未被系統(tǒng)研究[16-19]。
目前關(guān)于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為以下兩類(lèi):基于深度學(xué)習(xí)的雙階段檢測(cè)算法和基于深度學(xué)習(xí)的單階段檢測(cè)算法。其中,Yolo系列[5-7]算法將候選區(qū)域生成階段省略掉,直接將檢測(cè)任務(wù)視為回歸問(wèn)題進(jìn)行端到端的檢測(cè),檢測(cè)速度和精度相對(duì)其他深度目標(biāo)檢測(cè)算法在終端設(shè)備上進(jìn)行部署更占優(yōu)勢(shì)。Yolov4[20]算法在yolov3的基礎(chǔ)上通過(guò)替換主干特征提取網(wǎng)絡(luò)、Mosaic數(shù)據(jù)增強(qiáng)、更換激活、損失函數(shù)、標(biāo)簽平滑等方式,利用圖形處理器(GPU)進(jìn)行訓(xùn)練推理工作,取得了權(quán)重參數(shù)量和性能最佳平衡。但在部署至終端時(shí),如果不針對(duì)應(yīng)用平臺(tái)進(jìn)行改進(jìn),硬件推理仍會(huì)耗時(shí)過(guò)長(zhǎng)。
本文選定Yolov4 tiny為模型結(jié)構(gòu)基礎(chǔ),針對(duì)國(guó)產(chǎn)rk3399pro芯片架構(gòu)特點(diǎn)對(duì)算法進(jìn)行改進(jìn),并對(duì)算法在平臺(tái)上的運(yùn)行方式進(jìn)行優(yōu)化,提供了一種Yolov4 tiny算法在瑞芯微平臺(tái)上實(shí)時(shí)目標(biāo)檢測(cè)的較優(yōu)方案。
瑞芯微提供的RKNN工具鏈可支持對(duì)深度學(xué)習(xí)算法的快速移植和應(yīng)用開(kāi)發(fā)。該工具鏈通過(guò)調(diào)用API(Application Programming Interface,應(yīng)用程序接口)接口的方式對(duì)硬件寄存器、MAC(Multiply Accumulate,乘數(shù)累加器)等電路單元進(jìn)行控制,省去復(fù)雜的底層芯片處理工作,支持將訓(xùn)練的caffe、Tensorflow等主流模型轉(zhuǎn)換為RKNN模型,進(jìn)而使瑞芯微平臺(tái)能夠加載推理。
瑞芯微RKNN工具鏈的應(yīng)用開(kāi)發(fā)流程如圖1所示,主要分為模型訓(xùn)練、模型轉(zhuǎn)換、模型推理三部分。通過(guò)主流的深度學(xué)習(xí)模型框架對(duì)目標(biāo)檢測(cè)算法進(jìn)行訓(xùn)練,得到較好的MAP(Mean Average Precision,全類(lèi)平均精度)和recall(召回率);導(dǎo)出模型的參數(shù)權(quán)重至RKNN Toolkit中轉(zhuǎn)換為RKNN模型;通過(guò)調(diào)用API接口在瑞芯微平臺(tái)上加載運(yùn)行RKNN模型,對(duì)模型輸出張量進(jìn)行后處理輸出目標(biāo)檢測(cè)類(lèi)別和位置。

圖1 瑞芯微平臺(tái)開(kāi)發(fā)應(yīng)用流程圖
Yolov4 tiny算法是Yolov4目標(biāo)檢測(cè)算法的精簡(jiǎn)版,它采用CSPDarkNet53-tiny作為主干特征提取網(wǎng)絡(luò)提取圖像的淺層特征,跨層利用FPN結(jié)構(gòu)作為頸部進(jìn)行低層和高層特征的特征融合與加強(qiáng),對(duì)輸出的兩個(gè)特征層沿用yolov3檢測(cè)頭部進(jìn)行分類(lèi)與回歸預(yù)測(cè)。圖2是當(dāng)輸入為416×416的RGB圖像時(shí),Yolov4 tiny的特征結(jié)構(gòu),將輸入的圖像均分為N×N個(gè)網(wǎng)格,若檢測(cè)目標(biāo)的中心坐標(biāo)在某個(gè)網(wǎng)格中,則該網(wǎng)格對(duì)應(yīng)完成對(duì)此目標(biāo)的檢測(cè),輸出B個(gè)邊界框的模型預(yù)測(cè)中心坐標(biāo)、寬高和置信度預(yù)測(cè)值。在模型訓(xùn)練類(lèi)別為C類(lèi)時(shí),Yolov4 tiny輸出N×N(5×B+C)大小的張量。

圖2 Yolov4 tiny網(wǎng)絡(luò)結(jié)構(gòu)
相對(duì)于Yolov4而言,精簡(jiǎn)版的Yolov4的參數(shù)量縮小為十分之一;但在前期開(kāi)發(fā)測(cè)試中發(fā)現(xiàn) Yolov4 tiny直接部署到瑞芯微平臺(tái)上的速度僅在3~4幀/秒,難以滿(mǎn)足實(shí)時(shí)性需求需要進(jìn)行改進(jìn)。
Yolov4 tiny參數(shù)較多、神經(jīng)網(wǎng)絡(luò)算子占用硬件資源較大,在實(shí)際應(yīng)用場(chǎng)景下的檢測(cè)實(shí)時(shí)性無(wú)法被滿(mǎn)足。本文結(jié)合瑞芯微平臺(tái)的rk3399pro芯片資源和算法結(jié)構(gòu)特征,從以下方面對(duì)Yolov4 tiny算法進(jìn)行優(yōu)化。
KITTI數(shù)據(jù)集[21]是目前國(guó)際上最大的自動(dòng)駕駛場(chǎng)景下的計(jì)算機(jī)視覺(jué)算法評(píng)測(cè)數(shù)據(jù)集。原始數(shù)據(jù)集部分類(lèi)別在圖片中像素過(guò)小、標(biāo)注模糊不清,需要對(duì)原有的類(lèi)別標(biāo)簽進(jìn)行處理,將不需要的類(lèi)別標(biāo)簽舍棄。在將其歸一化為416×416大小時(shí),為避免檢測(cè)目標(biāo)的長(zhǎng)寬比發(fā)生畸變,即圖片產(chǎn)生拉伸形變,采用背景填充的方式對(duì)訓(xùn)練和測(cè)試的圖片進(jìn)行壓縮。
Yolov4 tiny原模型中的先驗(yàn)框由coco數(shù)據(jù)集訓(xùn)練而來(lái),對(duì)于應(yīng)用在自動(dòng)駕駛場(chǎng)景的數(shù)據(jù)集而言并不具有普適性。
K-means是一個(gè)迭代型的算法距離公式定義為:

其中,A-聚類(lèi)框大小;B-樣本庫(kù)大小;C-聚類(lèi)中心;IOU表示A、B交互比。
對(duì)標(biāo)簽處理后的KITTI數(shù)據(jù)集使用K-means算法對(duì)目標(biāo)標(biāo)注框進(jìn)行聚類(lèi),分析聚類(lèi)結(jié)果后將占比最大的Anchor值作為檢測(cè)目標(biāo)先驗(yàn)框類(lèi)別,Anchor與標(biāo)注框的平均IOU為67.47%。使用聚類(lèi)后的標(biāo)注框進(jìn)行訓(xùn)練,重復(fù)訓(xùn)練5次平均檢測(cè)精度有了0.56%的提升,如表1所示。

表1 不同anchor box性能對(duì)比
深度目標(biāo)檢測(cè)算法中的卷積層主要由大量的矩陣乘加運(yùn)算實(shí)現(xiàn),導(dǎo)致終端推理耗時(shí)過(guò)多。rk3399pro中有可用于乘加運(yùn)算加速的專(zhuān)用NPU:支持8bit/16bit運(yùn)算,運(yùn)算性能最高可達(dá)3Tops,功耗不到GPU所需要的1%。利用NPU對(duì)卷積層進(jìn)行并行計(jì)算加速,分析NPU中固定MAC結(jié)構(gòu)特點(diǎn),在程序編譯芯片進(jìn)行加速運(yùn)算時(shí),采用3×3的卷積核更有利于實(shí)現(xiàn)最高的MAC利用率?;诖?,將卷積輸出通道數(shù)均改為3的倍數(shù)。
卷積運(yùn)算只是將輸入圖像特征與卷積核做乘加操作,如果不引入激活函數(shù)將無(wú)法解決線(xiàn)性不可分問(wèn)題,造成模型的特征擬合能力不足。除了考量非飽和性、參數(shù)少、單調(diào)性等要求,還要在終端設(shè)備構(gòu)造實(shí)現(xiàn)激活函數(shù)時(shí)計(jì)算量少、函數(shù)簡(jiǎn)單尤為重要。
ReLU函數(shù)[22-23]的數(shù)學(xué)表達(dá)式如公式(2)所示:

相較于sigmod函數(shù)與tanh函數(shù),它的優(yōu)點(diǎn)在于輸入為正數(shù)時(shí),不存在梯度飽和;又由于將矩陣內(nèi)所有負(fù)值都設(shè)為零,訓(xùn)練傳播速度極快。Leaky Relu函數(shù)是ReLU的變體,將函數(shù)輸出負(fù)值給予了一個(gè)小坡度;雖然這能減少靜默神經(jīng)元的出現(xiàn),但同時(shí)會(huì)引入更多的計(jì)算量拖延設(shè)備檢測(cè)時(shí)間?;诖?,將Yolov4 tiny激活函數(shù)由Leaky Relu替換為ReLU函數(shù)。
NPU會(huì)對(duì)卷積層、ReLU及MAX Pooling層進(jìn)行融合,融合示意圖如圖3所示,使其在硬件加速時(shí)被優(yōu)化融合為一個(gè)整體的op (operators,神經(jīng)網(wǎng)絡(luò)計(jì)算的基本單元) 算子,進(jìn)而減少計(jì)算帶寬。

圖3 NPU融合op算子加速示意圖

圖4 改進(jìn)前后特征提取網(wǎng)絡(luò)復(fù)雜度對(duì)比
改進(jìn)的模型在KITTI數(shù)據(jù)集上的map下降了2.29%變?yōu)?9.56%,但參數(shù)計(jì)算量下降使得在GPU上的運(yùn)行速度從169幀/秒提升為225幀/秒。改進(jìn)后的模型部署到rk3399pro上單核檢測(cè)速度也僅每秒6幀左右,仍需要對(duì)算法運(yùn)行方式進(jìn)行優(yōu)化。
文中模型訓(xùn)練均采用GPU:RTX 2060 SUPER,CPU:i5-10400,內(nèi)存16G;python:3.6;CUDA10.1,cuDNN7.6.5,opencv:3.4.5;終端設(shè)備:瑞芯微rk3399pro。為防止單次模型訓(xùn)練中存在的誤差,文中數(shù)據(jù)均是經(jīng)過(guò)5次平均后的結(jié)果。
在rk3399pro中調(diào)用運(yùn)行Yolov4 tiny需要操作系統(tǒng)同應(yīng)用軟件配合。操作系統(tǒng)需移植debian系統(tǒng)、裁剪后的ARM-linux內(nèi)核,安裝NPU支持的固件版本、深度學(xué)習(xí)網(wǎng)絡(luò)需要的開(kāi)發(fā)環(huán)境和庫(kù)文件。應(yīng)用軟件方面需建立和PC間的交叉編譯環(huán)境,安裝Opencv、Qt、Cmake-gui,使用minicom傳輸模型文件。
終端設(shè)備系統(tǒng)環(huán)境就緒后,將目標(biāo)檢測(cè)算法模型按照RKNN模型移植的步驟創(chuàng)建RKNN對(duì)象,啟動(dòng)設(shè)備載入RKNN模型,調(diào)用接口初始化RKNN SDK開(kāi)發(fā)環(huán)境對(duì)輸入的圖像預(yù)處理后進(jìn)行推理計(jì)算,對(duì)模型輸出張量后處理得出檢測(cè)目標(biāo)和類(lèi)別。
rk3399pro支持的模型量化方法有非對(duì)稱(chēng)量化(asymmetric_quantized-u8)、動(dòng)態(tài)定點(diǎn)量化(dynamic_fixed_point-8)和dynamic_fixed_point-16)三種。前兩種量化方式屬于計(jì)算公式不同的8位量化,但對(duì)大部分網(wǎng)絡(luò)而言非對(duì)稱(chēng)unit8量化對(duì)網(wǎng)絡(luò)精度損失最小[24]。

上述公式(3)中,xf代表float32類(lèi)型數(shù)據(jù),n表示量化數(shù)據(jù)的bit,xq表示最終量化值。
當(dāng)對(duì)8位定點(diǎn)的精度損失過(guò)大時(shí),也可利用NPU中的300Gops int16的計(jì)算單元對(duì)dynamic_fixed_point-16量化而來(lái)的卷積層進(jìn)行加速。
對(duì)模型采用不同的量化方式可以發(fā)現(xiàn),不同量化方式轉(zhuǎn)換后的模型大小如圖5所示,使用8位定點(diǎn)量化的模型大小將減至原模型的1/4。將FP32的浮點(diǎn)數(shù)張量轉(zhuǎn)化為uint8張量,有助于減少內(nèi)存帶寬和存儲(chǔ)空間,并進(jìn)一步提高系統(tǒng)吞吐量降低系統(tǒng)延時(shí)。

圖5 Our yolov4 tiny模型不同量化參數(shù)比較
rk3399pro采用big.LITTLE大小核CPU架構(gòu),擁有雙核A72加四核A53,四核GPU Mail-T860。本文采用CPU-GPU-NPU多線(xiàn)程協(xié)同計(jì)算方案優(yōu)化算法運(yùn)行速度,即:①圖像獲取與預(yù)處理;②數(shù)據(jù)推理;③數(shù)據(jù)后處理與顯示。以上三種分支結(jié)構(gòu)中計(jì)算復(fù)雜度最高的就是數(shù)據(jù)推理,數(shù)據(jù)推理中的卷積計(jì)算占到整個(gè)目標(biāo)檢測(cè)系統(tǒng)90%的計(jì)算量,應(yīng)交由NPU工作;其余兩個(gè)分支結(jié)構(gòu)都與圖像處理相關(guān),交由GPU實(shí)現(xiàn)。而CPU則負(fù)責(zé)系統(tǒng)調(diào)度,協(xié)調(diào)各個(gè)預(yù)算單元降低GPU功耗和NPU負(fù)載。在開(kāi)發(fā)測(cè)試過(guò)程中發(fā)現(xiàn),NPU專(zhuān)注推理加速時(shí)整個(gè)模型推理過(guò)程耗時(shí)將極小,而圖像預(yù)處理和后處理時(shí)間較長(zhǎng)。本文將利用兩個(gè)大核分時(shí)復(fù)用NPU對(duì)GPU預(yù)處理的圖像數(shù)據(jù)進(jìn)行推理,隨后小核調(diào)用GPU進(jìn)行數(shù)據(jù)后處理和顯示,如圖6所示。

圖6 CPU-GPU-NPU協(xié)同計(jì)算圖
并在平臺(tái)上進(jìn)行驗(yàn)證不同的量化方式與是否使用線(xiàn)程在不同模型上的檢測(cè)速度。
實(shí)驗(yàn)證明采用不同的優(yōu)化方式在rk3399pro中的檢測(cè)效果差距極大,檢測(cè)結(jié)果如圖7所示。本文使用8位定點(diǎn)量化后的Our yolov4 tiny模型在rk3399pro的理論推理性能達(dá)到80幀/s,比不量化的模型提升了12.7倍。在實(shí)際檢測(cè)應(yīng)用時(shí),由于實(shí)驗(yàn)室攝像頭最高只能輸入每秒60幀的圖像,使用python的多進(jìn)程推理速度接近59幀/s,使用c接口的多線(xiàn)程推理速度接近60幀/s。

圖7 不同優(yōu)化方式檢測(cè)效果對(duì)比
綜上所述,本文提出的CPU-GPU-NPU多線(xiàn)程協(xié)同計(jì)算方案可以有效提升硬件加速效率減少數(shù)據(jù)傳輸耗時(shí)。
rk3399pro等終端AI芯片為實(shí)現(xiàn)低功耗低成本的推理加速,MAC等電路單元會(huì)對(duì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化。因此往往在GPU端訓(xùn)練的模型部署至終端設(shè)備時(shí)會(huì)存在精度和性能損失的問(wèn)題。
驗(yàn)證精度損失的方法主要是對(duì)轉(zhuǎn)換后的RKNN模型在開(kāi)發(fā)板上進(jìn)行推理后,打印出每層網(wǎng)絡(luò)結(jié)構(gòu)輸出的tensor值,與在GPU端推理輸出的tensor值進(jìn)行比較歐式距離或余弦距離,進(jìn)而判斷模型轉(zhuǎn)換的精度損失。但由于在終端設(shè)備部署的模型種類(lèi)繁雜,實(shí)際檢測(cè)中還要考量光線(xiàn)強(qiáng)弱、設(shè)備成像等因素,很難具體驗(yàn)證每個(gè)模型在實(shí)際檢測(cè)中的精度損失。
在本文中,為將訓(xùn)練的模型具體的部署到rk3399pro平臺(tái)實(shí)際使用;對(duì)采用不同量化方式的模型測(cè)試單純?cè)贙ITTI數(shù)據(jù)集上的map損失,實(shí)驗(yàn)數(shù)據(jù)可見(jiàn)表2。

表2 不同模型性能對(duì)比
將經(jīng)過(guò)改進(jìn)后的模型與官方的Yolov4 tiny模型在rk3399pro端檢測(cè)靜態(tài)圖像中的效果進(jìn)行對(duì)比,可以發(fā)現(xiàn)在設(shè)置將經(jīng)過(guò)改進(jìn)后的模型與官方的Yolov4 tiny模型在rk3399pro端檢測(cè)靜態(tài)圖像中的效果進(jìn)行對(duì)比,可以發(fā)現(xiàn)在設(shè)置同樣的目標(biāo)檢測(cè)閾值和NMS閾值時(shí),本文訓(xùn)練的模型可以實(shí)現(xiàn)對(duì)目標(biāo)更精確的定位,在真實(shí)道路場(chǎng)景中會(huì)遇到的遮擋和截?cái)嘁约澳:磺宓葐?wèn)題都能予以正確識(shí)別。

圖8 原Yolov4 tiny模型在rk3399pro端檢測(cè)結(jié)果圖

圖9 Our yolov4 tiny模型在rk3399pro端檢測(cè)結(jié)果圖
而在動(dòng)態(tài)的視頻檢測(cè)中,對(duì)改進(jìn)后模型在終端設(shè)備上的運(yùn)行方式進(jìn)行優(yōu)化后,采用CPU-GPU-NPU多線(xiàn)程協(xié)同計(jì)算方案模型在攝像頭采集的實(shí)時(shí)視頻檢測(cè)速度有了大幅提升,從單線(xiàn)程的15幀/秒提升至60幀/秒。

圖10 Our yolov4 tiny模型在rk3399pro端單線(xiàn)程攝像頭檢測(cè)結(jié)果圖

圖11 Our yolov4 tiny模型在rk3399pro端多線(xiàn)程攝像頭檢測(cè)結(jié)果圖
為了實(shí)現(xiàn)Yolov4 tiny模型在瑞芯微平臺(tái)中部署應(yīng)用,針對(duì)原模型存在的參數(shù)過(guò)多問(wèn)題,采用修改網(wǎng)絡(luò)和量化相結(jié)合的方式去除數(shù)據(jù)冗余,并驗(yàn)證不同的優(yōu)化方式在設(shè)備上檢測(cè)KITTI數(shù)據(jù)集的精確度。
實(shí)驗(yàn)證明:Yolov4 tiny模型經(jīng)過(guò)非對(duì)稱(chēng)8位量化后雖然map精度從PC端的79.56%降至終端端的65.81%,但網(wǎng)絡(luò)大小可從原始的16.8MB減少至4.3MB大小,理論模型推理速度從6.3fps/s提升至80fps/s;在瑞芯微平臺(tái)上取得了理論檢測(cè)速度和精度的較優(yōu)平衡。
同時(shí)為了驗(yàn)證本文提出的算法改進(jìn)和模型運(yùn)行優(yōu)化的方式具有一定普適性,在yolo系列的其他輕量化網(wǎng)絡(luò)進(jìn)行相同的實(shí)驗(yàn)。
數(shù)據(jù)結(jié)果如表3所示,證明以上改進(jìn)方式在國(guó)產(chǎn)rk3399pro平臺(tái)上部署輕量化目標(biāo)檢測(cè)算法提供了理論和技術(shù)支持。

表3 改進(jìn)yolo系列輕量化模型前后檢測(cè)效果對(duì)比
本文針對(duì)rk3399pro芯片結(jié)構(gòu)特點(diǎn)對(duì)Yolov4 tiny 模型在卷積核通道數(shù)、激活函數(shù)等處進(jìn)行改進(jìn);改進(jìn)后的模型與原模型精度相近但檢測(cè)速度大幅提升。同時(shí)搭建了交叉編譯環(huán)境,將GPU端訓(xùn)練的模型通過(guò)工具鏈轉(zhuǎn)換為RKNN模型;并探索了不同的量化方案、多核并行等優(yōu)化方式對(duì)于代碼運(yùn)行的速度提升效果,優(yōu)化方法在不同模型上的通用性等。研究可得,針對(duì)本文的目標(biāo)檢測(cè)算法,采用非對(duì)稱(chēng)8位量化、多線(xiàn)程并行、神經(jīng)網(wǎng)絡(luò)算子融合等方式可以大幅提升終端設(shè)備端的檢測(cè)速度,實(shí)現(xiàn)魯棒精確的檢測(cè)效果。
本文針對(duì)Yolov4 tiny這一模型進(jìn)行改進(jìn)并實(shí)際應(yīng)用在rk3399pro上,但對(duì)除了yolo系列之外的輕量化深度目標(biāo)檢測(cè)模型的通用改進(jìn)方式并未做研究,日后將在這方面進(jìn)行探索。