999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

輕量化目標(biāo)檢測(cè)算法研究及應(yīng)用

2021-10-15 10:08:34黃靖淞左顥睿張建林
計(jì)算機(jī)工程 2021年10期
關(guān)鍵詞:深度檢測(cè)

黃靖淞,左顥睿,張建林

(1.中國(guó)科學(xué)院光電技術(shù)研究所,成都 610209;2.中國(guó)科學(xué)院大學(xué) 計(jì)算機(jī)學(xué)院,北京 100049)

0 概述

近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)被廣泛地應(yīng)用到計(jì)算機(jī)視覺、自然語(yǔ)言處理等領(lǐng)域,各種新的檢測(cè)算法被不斷提出,然而設(shè)計(jì)的深度學(xué)習(xí)模型多數(shù)是為了追求更高的精度[1]和更好的性能,而忽略了模型的大小和推理速度。

在目標(biāo)檢測(cè)領(lǐng)域,REDMON 等提出了YOLOv1[2]、YOLOv2[3]、YOLOv3[4]系列算法。因其在速度和精度之間實(shí)現(xiàn)了較好的權(quán)衡,而引起了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。以Faster R-CNN[5]為代表的雙階段網(wǎng)絡(luò)先生成候選區(qū)域,再提取特定的特征進(jìn)行目標(biāo)檢測(cè),雖然精度較高,但計(jì)算復(fù)雜度也很高,難以在有限算力的情況下實(shí)現(xiàn)實(shí)時(shí)檢測(cè)。以YOLO 為代表的單階段目標(biāo)檢測(cè)算法將生成候選區(qū)和檢測(cè)合二為一,直接得到最終的檢測(cè)結(jié)果,使得網(wǎng)絡(luò)結(jié)構(gòu)變得簡(jiǎn)單,檢測(cè)速度較Faster R-CNN 有近10 倍的提升,這使得深度學(xué)習(xí)目標(biāo)檢測(cè)算法滿足實(shí)時(shí)檢測(cè)條件成為可能。

MobileNet 是由谷歌在2017 年提出的,是一款專注于在移動(dòng)設(shè)備和嵌入式設(shè)備上的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò),并逐步發(fā)展為MobileNetv1[6]、MobileNetv2[7]、MobileNetv3[8]3 個(gè)版本。相比于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò),在準(zhǔn)確率小幅降低的前提下,大幅減小了模型參數(shù)和運(yùn)算量,其中最重要的創(chuàng)新是提出了深度可分離卷積,用深度可分離卷積替換標(biāo)準(zhǔn)卷積可以減少計(jì)算量和參數(shù)量,提升前向推理速度。

另外,網(wǎng)絡(luò)剪枝也是網(wǎng)絡(luò)壓縮和加速中一個(gè)重要的方向,剪枝就是去除網(wǎng)絡(luò)中一些不重要的神經(jīng)元,大幅降低了計(jì)算量和權(quán)重?cái)?shù)量,提高了網(wǎng)絡(luò)運(yùn)行效率[9]。目前剪枝主要分權(quán)重剪枝和濾波器剪枝兩種。濾波器剪枝相對(duì)于權(quán)重剪枝具有一系列優(yōu)點(diǎn),包括它可以得到規(guī)則的模型、減少內(nèi)存消耗、加速網(wǎng)絡(luò)推理等。

本文在YOLOv3 目標(biāo)檢測(cè)算法的基礎(chǔ)上,使用輕量級(jí)的Mobilenet 基礎(chǔ)網(wǎng)絡(luò),將深度可分離卷積替換為標(biāo)準(zhǔn)卷積,并在此基礎(chǔ)上對(duì)網(wǎng)絡(luò)進(jìn)行剪枝,以在不損失檢測(cè)精度的情況下提升檢測(cè)速度。

1 YOLOv3 算法與Mobilenet 基礎(chǔ)網(wǎng)絡(luò)

1.1 YOLOv3 算法

YOLOv3 網(wǎng)絡(luò)以Darknet53 網(wǎng)絡(luò)為backbone,因其有52 個(gè)卷積層外加1 個(gè)全連接層,所以命名為Darknet53。其中卷積層是由1×1 和3×3 的卷積層組成,每個(gè)卷積層后都會(huì)有1 個(gè)BN 層和1 個(gè)LeakyReLU 層。YOLOv3 主體是由許多殘差結(jié)構(gòu)[10]組成,減少了梯度爆炸的風(fēng)險(xiǎn),加強(qiáng)了網(wǎng)絡(luò)的學(xué)習(xí)能力,Concatenate 層用于將當(dāng)前層的多個(gè)輸入進(jìn)行拼接,UpSample 層表示上采樣,每進(jìn)行一次上采樣操作,輸出特征層就擴(kuò)大1 倍。YOLOv3 預(yù)測(cè)的3 個(gè)特征層大小由淺到深分別是輸入特征圖的1/32、1/16、1/8,對(duì)3 個(gè)不同尺度的特征圖進(jìn)行檢測(cè),因而實(shí)現(xiàn)了多尺度檢測(cè)[11]。另外由于淺層網(wǎng)絡(luò)提取到的邊緣、紋理等幾何特征較多,感受野較小,對(duì)小目標(biāo)敏感,而深層網(wǎng)絡(luò)提取到的語(yǔ)義信息較多,感受野較大,對(duì)大目標(biāo)敏感,所以淺層輸出適合檢測(cè)小型目標(biāo),中層輸出適合檢測(cè)中型目標(biāo),最深層輸出適合檢測(cè)大型目標(biāo)。每個(gè)預(yù)測(cè)的輸出可以表示為S×S×3×(5+類別數(shù))。YOLO 將圖像劃分為S×S的網(wǎng)格,當(dāng)目標(biāo)中心落在某個(gè)網(wǎng)格中時(shí),即用該網(wǎng)格去檢測(cè),另外每個(gè)網(wǎng)格需要檢測(cè)3 個(gè)尺度的anchorbox,5 表示的是(x,y,w,h)以及置信度5 種位置信息。最后3 個(gè)輸出經(jīng)過非極大抑制[12]得到最終的坐標(biāo)信息和類別的預(yù)測(cè)值。YOLOv3 算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。

圖1 YOLOv3 算法網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of YOLOv3 algorithm

本文借鑒了Mobilenetv1 網(wǎng)絡(luò)深度可分離卷積的思想[13],將YOLOv3 的backbone 由Darknet53 替換為Mobilenetv1,并將YOLO head 網(wǎng)絡(luò)中的部分3×3標(biāo)準(zhǔn)卷積替換為深度可分離卷積,深度可分離卷積包括深度卷積和逐點(diǎn)卷積兩部分[14],其在盡量提取特征的同時(shí)減少了計(jì)算量。標(biāo)準(zhǔn)卷積和深度可分離卷積的結(jié)構(gòu)如圖2 所示。

圖2 標(biāo)準(zhǔn)卷積和深度可分離卷積結(jié)構(gòu)Fig.2 Structure of standard convolution and depthwise separable convolution

1.2 Mobilenet 基礎(chǔ)網(wǎng)絡(luò)

假設(shè)輸入的特征圖大小為Wi×Hi×C,分別代表輸入特征圖的寬、高、通道數(shù),標(biāo)準(zhǔn)卷積大小為Wc×Hc×C×N,分別代表標(biāo)準(zhǔn)卷積的寬、高、通道數(shù)、濾波器個(gè)數(shù),輸出特征圖大小為Wo×Ho×N。那么標(biāo)準(zhǔn)卷積的計(jì)算量如下:

相應(yīng)的深度可分離卷積是用Wc×Hc×1×C(分別表示寬、高、通道數(shù)、組數(shù))的卷積先進(jìn)行逐通道卷積,再用1×1×C×N的卷積進(jìn)行逐點(diǎn)卷積,其計(jì)算量如下:

兩者之比為:

Amount(dw)/Amount(Conv)=1/N+1/(Wc×Hc)

若輸入3×608×608 的特征圖,經(jīng)過256×3×3×3的卷積核,那么計(jì)算量的比值為1/256+1/(3×3),也就是說(shuō)將標(biāo)準(zhǔn)卷積替換為深度可分離卷積后,計(jì)算量會(huì)減少8~9 倍。

基礎(chǔ)網(wǎng)絡(luò)Mobilenetv1 輸入為1×3×608×608 的圖片,網(wǎng)絡(luò)參數(shù)如表1 所示。網(wǎng)絡(luò)包括1 層標(biāo)準(zhǔn)卷積,后面接13 層深度可分離卷積,每1 層卷積后都跟1 個(gè)Batch_norm 層 和Relu 層。其中,Conv3_2、Conv4_2、Conv6 層深度可分離卷積的3 個(gè)輸出分別作為YOLO_head 網(wǎng)絡(luò)部分的3 個(gè)輸入,另外YOLO_head 網(wǎng)絡(luò)中只包含1×1 和3×3 的卷積,將其中部分3×3 卷積也改為深度可分離卷積。表1 是Mobilenetv1 的網(wǎng)絡(luò)結(jié)構(gòu)。

表1 Mobilnetv1 網(wǎng)絡(luò)結(jié)構(gòu)Table 1 Structure of Mobilenetv1 network

2 網(wǎng)絡(luò)剪枝技術(shù)

2.1 剪枝

網(wǎng)絡(luò)剪枝的目的是減掉對(duì)檢測(cè)結(jié)果貢獻(xiàn)不大的網(wǎng)絡(luò)層,以提升前向推理的速度[15],由于大量的運(yùn)算量都在卷積層部分,因此本文主要討論對(duì)卷積層濾波器個(gè)數(shù)的剪枝,對(duì)于某一層卷積層,對(duì)其所有filter進(jìn)行重要性排序,將排在后面不重要的filter減掉,這樣能在減少整體運(yùn)算量的同時(shí),對(duì)檢測(cè)精度沒有太大影響。

對(duì)濾波器重要性排序的方法如下:

1)以filter 非零權(quán)重值的個(gè)數(shù)為基準(zhǔn)進(jìn)行排序,即權(quán)重L0 范數(shù)[16]。

2)對(duì)filter 每個(gè)權(quán)重值求絕對(duì)值之和進(jìn)行排序,即權(quán)重L1 范數(shù)[17]。

3)基于幾何中心的卷積核剪枝方法FPGM[18]。

L0范數(shù)以當(dāng)前卷積層的每個(gè)濾波器矩陣非零元素個(gè)數(shù)為排序依據(jù),非零元素個(gè)數(shù)越多就越重要,對(duì)檢測(cè)結(jié)果的貢獻(xiàn)也越大。L1范數(shù)以當(dāng)前卷積層的每個(gè)濾波器矩陣元素絕對(duì)值之和為排序依據(jù),絕對(duì)值之和越大,該濾波器就越重要。文獻(xiàn)[18]提出了基于幾何中心的濾波器評(píng)價(jià)指標(biāo)FPGM(Filter Pruning via Geometric Median),認(rèn)為很多方法都是基于“較小范數(shù)不重要”的準(zhǔn)則進(jìn)行剪枝,其有效性依賴于2個(gè)要求:卷積核的范數(shù)值分布偏差必須大,即方差大;卷積核中的最小范數(shù)必須足夠小。為解決在不滿足上述2個(gè)要求的情況下也能壓縮網(wǎng)絡(luò),該方法的思想是計(jì)算每個(gè)filter與其他所有filter的歐式距離之和作為得分,得分越低表示該濾波器信息跟其他濾波器重合度越高,可以用其他濾波器替代該濾波器。

2.2 敏感度分析

本文依據(jù)L1 范數(shù)對(duì)濾波器進(jìn)行重要性排序,只對(duì)YOLO_head 網(wǎng)絡(luò)進(jìn)行剪枝,保持基礎(chǔ)網(wǎng)絡(luò)Mobilenetv1的完整性。剪枝率取0.1~0.9、步長(zhǎng)為0.1 的一系列剪枝比率,然后對(duì)所需要剪的每一層卷積層按不同剪枝率進(jìn)行剪枝,分析不同剪枝情況下檢測(cè)精度的損失情況,并繪制敏感度曲線。卷積層敏感度曲線如圖3 所示,如果曲線上升很快,則表示當(dāng)前卷積層比較敏感,如果剪枝率過大會(huì)有較大的精度損失,否則如果曲線上升平緩,則表示該卷積層對(duì)檢測(cè)結(jié)果的貢獻(xiàn)不大,可以采用較大的剪枝率。據(jù)此對(duì)于給定的可接受的精度損失來(lái)確定每個(gè)層的剪枝率。

圖3 卷積層敏感度曲線Fig.3 Sensitivity curve of convolution layer

從圖3 可以看出,某些卷積層比如yolo_block.0.0.1_sep_weights、yolo_block.0.1.1_sep_weights、yolo_block.0.tip_sep_weights等層上升曲線很快,對(duì)檢測(cè)結(jié)果的貢獻(xiàn)很大,所以只剪很少比例的filter數(shù)目,而對(duì)于例如yolo_block.2.1.1_sep_weights、yolo_block.2.2.conv.weights、yolo_block.2.tip_sep_weights等層,當(dāng)剪枝率達(dá)到0.9 時(shí)也幾乎不丟失精度,本文實(shí)驗(yàn)以剪枝率0.7 作為剪枝上限。

2.3 剪枝網(wǎng)絡(luò)配置

對(duì)于標(biāo)準(zhǔn)卷積(Conv)和逐點(diǎn)卷積(sep),給定剪枝率后,其filter 的個(gè)數(shù)會(huì)相應(yīng)減少,而深度卷積(dw)的組數(shù)等于輸入特征圖的通道數(shù),所以不需給出剪枝率,其組數(shù)會(huì)隨上一層卷積層濾波器的個(gè)數(shù)而變化。表2 是剪枝前后YOLO_head 的網(wǎng)絡(luò)結(jié)構(gòu)。

表2 剪枝前后YOLO_head 網(wǎng)絡(luò)結(jié)構(gòu)Table 2 YOLO_head network structure before and after pruning

3 軟硬件配置

3.1 軟硬件平臺(tái)

本文實(shí)驗(yàn)訓(xùn)練平臺(tái)是遠(yuǎn)程云端GPU Tesla V100,顯存16 GB,推理部署平臺(tái)是英偉達(dá)嵌入式GPU Jetson TX2,該平臺(tái)擁有256 顆Pascal 架構(gòu)CUDA 核心,6 顆CPU 核心[19-20]。所用訓(xùn)練集和測(cè)試集來(lái)自VOC2007、VOC2012,模型的評(píng)估指標(biāo)mAP。所使用深度學(xué)習(xí)框架為百度飛槳Paddle[21]框架、PaddleSlim 壓縮框架以及Paddle Inference C++推理預(yù)測(cè)庫(kù),并用CMake 管理項(xiàng)目文件,CMake全稱為Cross platform Make,是一個(gè)跨平臺(tái)的構(gòu)建系統(tǒng),可以編寫一個(gè)與平臺(tái)無(wú)關(guān)的CMakeLists.txt 文件定制整個(gè)編譯流程,然后再進(jìn)一步生成所需的Makefile 和工程文件[22]。使用pycharm 作為python 集成開發(fā)環(huán)境,clion 作為C++開發(fā)環(huán)境。

3.2 訓(xùn)練設(shè)置及測(cè)試結(jié)果

在進(jìn)行訓(xùn)練時(shí),與預(yù)訓(xùn)練模型相匹配的層直接加載該部分網(wǎng)絡(luò)的參數(shù),不匹配的部分則讀取程序中定義的網(wǎng)絡(luò)結(jié)構(gòu)。訓(xùn)練的最大batch 數(shù)設(shè)置為28 萬(wàn),batch_size 為16,初始學(xué)習(xí)率為0.000 5,在batch 數(shù)為11 萬(wàn)和12.4 萬(wàn)的地方學(xué)習(xí)率變?yōu)橹暗?.1 倍。

表3 是在Tesla V100 顯卡上進(jìn)行測(cè)試的結(jié)果,可以看出在YOLOv3_MobileNetV1 網(wǎng)絡(luò)基礎(chǔ)上,將YOLO_head 網(wǎng)絡(luò)部分卷積改為深度可分離卷積之后再進(jìn)行剪枝,在幾乎不損失精度的前提下,使得FPS 分別提升了25.9%和40.8%。實(shí)驗(yàn)結(jié)果表明:?jiǎn)渭冊(cè)龃骲atch_size 后速度并不一定會(huì)比減小batch_size 快,并且GPU 利用率也會(huì)明顯增加,這可能跟CPU 與GPU 之間的數(shù)據(jù)傳輸、硬盤的讀寫速度等因素有關(guān)。

表3 Tesla V100 測(cè)試結(jié)果Table 3 Test results of Tesla V100

4 算法嵌入式部署

如果將訓(xùn)練好的模型用到實(shí)際工程中,需要在一些嵌入式硬件平臺(tái)進(jìn)行部署,以達(dá)到項(xiàng)目落地的效果。將訓(xùn)練好的模型導(dǎo)出為推理模型,并在嵌入式GPU TX2 平臺(tái)以C++進(jìn)行前向推理,并用CMake管理頭文件和庫(kù)文件。除Paddle 本身的依賴庫(kù)之外,還用到了第三方開源庫(kù)gflags,gflags 是Google的一個(gè)命令行參數(shù)處理的開源庫(kù),用于將命令行參數(shù)傳入到程序中,另外還有yaml-cpp 開源庫(kù),用于對(duì)yaml 文件的讀取,兩者也都是用CMake 來(lái)進(jìn)行構(gòu)建和編譯的。在TX2 上的部署流程如圖4 所示,首先通過命令行判斷讀取磁盤圖片或者板載攝像頭讀取視頻幀,然后進(jìn)行目標(biāo)檢測(cè),最后將檢測(cè)結(jié)果進(jìn)行顯示,并不斷重復(fù)。

圖4 TX2 推理流程Fig.4 TX2 inferential procedure

表4 是在嵌入式GPU TX2 平臺(tái)上的測(cè)試結(jié)果,計(jì)算4 952 張VOC 測(cè)試數(shù)據(jù)集的網(wǎng)絡(luò)前向推理幀率。YOLOv3_MobileNetV1 的幀率是5.0 frame/s,將YOLO_head 網(wǎng)絡(luò)中部分卷積層改為深度可分離卷積后的幀率為9.6 frame/s,在此基礎(chǔ)上進(jìn)行剪枝后幀率達(dá)到了12.0 frame/s,分別實(shí)現(xiàn)了1.92 倍和2.4 的加速,模型規(guī)模分別減小了67.9%和78.5%,有效提升了嵌入式設(shè)備上目標(biāo)檢測(cè)的推理速度。這是在盡可能不丟失精度的前提下的實(shí)驗(yàn)結(jié)果,如果實(shí)際情況對(duì)速度有更高的要求,則還可以提高剪枝率,進(jìn)一步加速前向推理。

表4 TX2 測(cè)試結(jié)果Table 4 TX2 test results

5 結(jié)束語(yǔ)

本文在YOLOv3 目標(biāo)檢測(cè)算法的基礎(chǔ)上,采用輕量級(jí)的Mobilenet 分類網(wǎng)絡(luò)作為backbone,并將深度可分離卷積替換YOLO_head 網(wǎng)絡(luò)部分標(biāo)準(zhǔn)卷積,在此基礎(chǔ)上通過L1 范數(shù)對(duì)卷積層filter 打分,并以此作為排序依據(jù)對(duì)網(wǎng)絡(luò)做剪枝。測(cè)試結(jié)果表明,改進(jìn)算法在檢測(cè)精度丟失很少的前提下,較大地提高了算法的檢測(cè)速度,并實(shí)現(xiàn)了算法在嵌入式平臺(tái)上的部署。由于該算法具有通用性,下一步將研究算法在其他不同平臺(tái)的部署,以實(shí)現(xiàn)諸如手機(jī)移動(dòng)端等硬件平臺(tái)的目標(biāo)檢測(cè)。

猜你喜歡
深度檢測(cè)
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
“幾何圖形”檢測(cè)題
“角”檢測(cè)題
深度理解一元一次方程
深度觀察
深度觀察
深度觀察
深度觀察
主站蜘蛛池模板: 欧美激情福利| 久久女人网| 激情乱人伦| 91精品免费高清在线| 国产一二三区在线| 在线va视频| 亚洲美女操| 超碰精品无码一区二区| av在线无码浏览| 97人人做人人爽香蕉精品| 狠狠色婷婷丁香综合久久韩国| 97在线公开视频| 色天天综合久久久久综合片| 国产va在线观看| 天堂在线亚洲| 成人在线欧美| 国产成人精品免费av| 伊人婷婷色香五月综合缴缴情| 天堂岛国av无码免费无禁网站| 欧美性久久久久| 国内精品小视频福利网址| 天天躁夜夜躁狠狠躁图片| a级免费视频| 无码乱人伦一区二区亚洲一| 国产精品xxx| 美女高潮全身流白浆福利区| 亚洲男女在线| 国产成人精品亚洲日本对白优播| 亚洲欧美另类久久久精品播放的| 日本一区中文字幕最新在线| 国产波多野结衣中文在线播放 | 国产精品美女网站| 国产成人亚洲精品无码电影| 波多野结衣视频网站| 一区二区午夜| 国产日产欧美精品| 免费jizz在线播放| 国产粉嫩粉嫩的18在线播放91| 免费精品一区二区h| 亚洲综合第一页| 无码国内精品人妻少妇蜜桃视频| 波多野结衣中文字幕一区| av在线5g无码天天| 99久久精品免费看国产免费软件| 国产精品美人久久久久久AV| 97国产精品视频人人做人人爱| 精久久久久无码区中文字幕| 亚洲一级色| 免费看av在线网站网址| 亚洲人成网站日本片| 中日无码在线观看| 香蕉eeww99国产在线观看| 香蕉综合在线视频91| 毛片网站在线播放| 日本三级精品| 3D动漫精品啪啪一区二区下载| 自拍亚洲欧美精品| 九色在线视频导航91| 色综合综合网| 欧美人与性动交a欧美精品| 91福利片| 99国产在线视频| 国产91高跟丝袜| 久久精品国产精品一区二区| 囯产av无码片毛片一级| 这里只有精品在线播放| 久久久久青草大香线综合精品| 亚洲永久色| 国产一在线观看| 久久久久久久97| 国产一级在线观看www色 | 美女无遮挡拍拍拍免费视频| 欧洲精品视频在线观看| 亚洲精品爱草草视频在线| 四虎永久在线| 一级黄色欧美| 亚洲人成亚洲精品| 18黑白丝水手服自慰喷水网站| 欧美不卡在线视频| 她的性爱视频| 亚洲日韩久久综合中文字幕| 免费高清毛片|