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

面向嵌入式設備的深度學習物體檢測優化算法①

2019-04-29 08:58:54戴雷燕楊小利
計算機系統應用 2019年4期
關鍵詞:嵌入式優化檢測

戴雷燕,馮 杰,董 慧,楊小利

(浙江理工大學 信息學院,杭州 310018)

1 引言

物體檢測是計算機視覺領域的一個重要問題,物體檢測算法從傳統的人工特征(如梯度方向直方圖,SIFT 角點)和經典的統計機器學習方法(如支持向量機,樸素貝葉斯)[1-5]發展到現今的基于卷積神經網絡的物體檢測算法,物體檢測效果令人驚嘆.2014年,R.Girshick 等人將卷積神經網絡應用到物體檢測中,提出了基于區域的卷積神經網絡(R-CNN)算法[6],使得檢測效果遠遠優于當時的傳統物體檢測算法.隨后的Fast R-CNN[7]和Faster R-CNN[8]等都在檢測準確率和定位精度上不斷突破,而2015年Joseph Redmon 等提出的YOLO[9]算法和2016年Wei Liu 等提出的SSD[10]算法都是在算法速度上進行突破.在物體檢測算法不斷突破的同時,神經網絡架構也在不斷更新.

最早的卷積神經網絡LeNet[11]是Yann LeCun 在1998年設計并提出的,它一開始是針對識別手寫數字問題,網絡結構較為簡單,但是包含了卷積神經網絡的基本單元,是以后各種模型的始祖.2012年,在ImageNet比賽上大放異彩的AlexNet[12]雖然只比LeNe 多了幾層,但效果遠遠優于最早的LeNet,AlexNet 將激活函數由Sigmoid 換成了ReLU,解決了因為網絡層更深時的梯度彌散問題,還加入了dropout 層,有效解決過擬合問題.2014年出現的VGG[13]相較于AlexNet 而言網絡層越來越深,整個網絡層全部使用3×3 大小的小卷積核和2×2 的最大池化核,使得整個網絡結構簡潔,具有更好的泛化性.Network in Network[14]模型的亮點在于1×1 卷積核和全局平均池化層(Global Average Pooling)的應用,使得整個網絡模型的參數規模銳減,有利于網絡的加深,訓練時間也得到提升.2014年的GoogLeNet[15]中使用了基礎卷積塊Inception,最后的全連接層借用NiN 模型思想換成Global Average Pooling,整個模型的參數量大大減小,效果更好.2015年的ResNet[16]中包含了Residual 單元,允許原始輸入信息直接傳遞到后面的網絡層中,解決了因為網絡層過深而梯度消失,無法反向傳播的問題.2017年谷歌公司提出的MobileNets使用深度分離卷積[17],進一步減小計算量,壓縮模型,可以滿足嵌入式設備的需求.

隨著硬件計算能力的快速發展,深度學習技術已經應用到很多便攜式嵌入設備中,比如各種刷臉支付、相冊智能分類、圖片風格遷移等,但是目前一大挑戰是如何將龐大深度模型移植到資源有限的嵌入式設備上[18].

2 優化流程

本文針對嵌入式設備進行的深度學習物體檢測優化算法研究主要在PC 端和嵌入式平臺ARM 上完成.首先,準備好訓練數據,選擇合適的物體檢測框架和神經網絡架構進行構建;然后在此網絡結構下,對訓練數據進行模型訓練,得出原始物體檢測模型;接著對原始物體檢測模型進行模型剪枝,以上過程都是在PC 端上完成.將PC 端上完成模型剪枝的物體檢測模型移植到嵌入式設備ARM 平臺上,針對該物體檢測模型的各個網絡層進行運算代價計算,根據計算結果,對運算代價較高的網絡層進行匯編優化.匯編優化后的物體檢測模型在ARM 平臺上對冰箱內采集到的視頻內容進行前向推理,在ARM 平臺上顯示檢測結果,上述過程在ARM平臺上完成,圖1為整個物體檢測優化算法的流程圖.

2.1 網絡結構選擇

本文整體網絡架構選用MobileNets,MobileNets中的深度可分解卷積是將標準卷積分解成一個深度卷積和一個點卷積.

假設輸入F的維度為DF×DF×M,其中DF為輸入F的寬和高,M為輸入層的通道數.標準卷積時,卷積K的參數量表示為DK×DK×M×N,其中DK為卷積K的維度,N為輸出通道數,則此時的計算代價為C:

深度可分解卷積時,將標準卷積K拆分為深度卷積DK×DK×1×M和點卷積1×1×M×N,計算代價為C’:

將深度可分解卷積的計算代價C’與標準卷積的計算代價C相除,進行比較:

在ImageNet 數據集上,深度分離卷積的參數量約是標準卷積參數量1/7,而準確率只下降了不到1%[17].

深度分離卷積在網絡結構上的變化如圖2所示,將標準卷積拆分成深層卷積和點卷積,在每層卷積后面都有BN 層和激勵函數ReLU.

圖2 網絡結構變化

在物體檢測算法方面,R-CNN 系列都是物體定位和物體分類分開進行的物體檢測方法,雖然準確率很高,但是速度較慢;而YOLO 和SSD 則都是一步完成物體定位和物體分類,其中YOLO 的速度很快,但是準確率不盡人意,而SSD 綜合了Faster R-CNN 的高準確率和YOLO 的快速率優點,使得物體檢測方法更加適合應用在嵌入式設備上,故選擇SSD 作為本次面向嵌入式設備的深度學習物體檢測優化算法研究的物體檢測框架.

2.2 模型剪枝

在PC 端上的模型剪枝流程圖如圖3所示.

首先,對MobileNets-SSD 網絡進行神經元重要性的評估,然后根據評估結果將其中最不重要的神經元置零,對部分神經元置零后的網絡進行微調,判斷微調后的網絡是否達到預定標準,如果達到預定的標準,則可以停止剪枝;如果未到到預定的標準,則需要重復神經元重要性評估、不重要神經元置零、微調等步驟.

本文在模型剪枝過程中采用了一種基于一階泰勒展開的新的神經元重要性評估準則[19].該準則中對神經元的評估公式為:

上式中,D表示訓練樣本集,W表示未修剪前的權重參數,W’表示修剪后的權重參數,C(D|W)為修剪后的代價函數,而C(D|W’)表示的是修剪后的代價函數,最優化的剪枝就是使得修剪后的代價函數C(D|W’)盡可能地逼近修剪前的代價函數C(D|W).將剪枝前后的代價函數差值賦值給|ΔC(hi)|,找出令式(4)中|ΔC(hi)|值最小的非零權重參數,將該參數置零,即完成一次剪枝.又因為C(D|hi)=C(D|(w,b)i),所以式(4)可以變換為式(5):

在式(5)中的C(D,hi=0)部分引入一階泰勒展開式,如式(6)所示:

其中,R1(hi=0)為高階項,因為ReLU 激活層中含有高階信息,同時為了避免復雜的計算,高階項R1(hi=0)可以忽略不計.

圖3 模型剪枝流程圖

綜合式(5)和式(6)可得式(7):

將特征圖看作變量的向量表示,當有M個變量時,剪枝前后的損失函數差值可表示為:

2.3 匯編優化

嵌入式設備主要由嵌入式處理器、相關支撐硬件和嵌入式軟件系統組成,而樹莓派是一款基于ARM 的微型電腦主板,是作為學習計算機編程的首選嵌入式設備.本文使用的是樹莓派3 B,它有1.2 GHz 和64 位處理器,滿足物體檢測模型匯編優化和前向推理的性能需求.

在該ARM 平臺上,通過對表1模型剪枝對比中各個網絡層的耗時比較,決定針對其中卷積層Conv_0、Conv_1、Conv_2、Conv_3、Conv_4、Conv_5、Conv_6、Conv_7、Conv_8、Conv_9、Conv_10、Conv_11、Conv_12、Conv_13、Conv_14_1 和Conv_14_2 進行匯編優化,主要策略分為指令調整、寄存器分配和條件執行[20].

表1 模型剪枝對比(單位:ms)

(1)指令調整:通過展開循環對裝載指令進行人工優化,仔細安排裝載指令的時間次序,防止流水線終止.

(2)寄存器分配:限制局部變量的個數;把多個局部變量存放在一個寄存器中.

(3)條件執行:使用ARM 處理器特有的條件執行指令來減少判斷跳轉和分支等對流水線影響較大的操作.

通過以上策略最大程度地利用平臺資源,發揮處理器最大效能,來滿足物體檢測模型直接在嵌入式設備上快速前向推理的需求.

3 實驗分析

3.1 數據集制作

通過冰箱內的USB 攝像頭對總共76 種蔬菜水果飲料等冰箱常見食材進行訓練樣本采集,一共采集5 萬張圖片,最后挑選出45 488 張作為訓練樣本,如圖4所示.

圖4 訓練樣本

圖5 數據標注

利用網上標注系統對挑選出的訓練樣本進行數據標注,網上標注系統的界面如圖5所示,可以對物體進行種類選擇和位置定位.

3.2 訓練優化

訓練時采用MobileNets 作為本次實驗的基礎網絡架構,其中總共有35 層卷積層,在Conv_11、Conv_13、Conv_14_2、Conv_15_2、Conv_16_2 和Conv_17_2后進行物體檢測方法SSD 的分類器分類、位置回歸和錨框的生成.最后,將以上6 個卷積層生成的類別特征、位置特征和anchor box 信息進行concat、Softmax和flatten.MobileNets 的網絡層與本文的MobileNets-SSD 網絡層如表2所示.相比于MobileNets,本文的MobileNets-SSD 多8 層卷積層,且最后的平均池化層、全連接層和Softmax 變成了conf_reshape、conf_softmax 和conf_flatten.對訓練集進行訓練后,最終本文的MobileNets-SSD 模型的mAP 達到84.7%.

表2 MobileNets 與本文的MobileNets-SSD

MobileNets-SSD 完成訓練后進行基于一階泰勒展開的模型剪枝.控制裁剪的整體過程為:1)前向傳播2)獲取排序后的卷積窗口3)計算需要剪枝的卷積窗口個數4)裁剪.主要函數如下所示:

(1)forward

(2)compute_rank

(3)normalize_ranks_per_layer

(4)get_prunning_plan

(5)lowest_ranking_filters

其中函數(1)表示模型的前向傳播過程;函數(2)用在梯度更新時,其輸出的計算值用于卷積窗口排序;函數(3)是將每層的結果歸一化;函數(4)和函數(5)表示利用最小堆方法得到N個排名最低的卷積窗口.

完成一次剪枝后,進行模型微調和迭代.所有參數參與訓練與學習,重新訓練模型10 個迭代.

具體實驗時,N分別設置為512 和1024,此時每層網絡層耗時情況如表1模型剪枝對比所示.N為512 時,物體檢測模型的mAP 為85.1%;N設為1024 時,物體檢測模型的mAP 為82.3%.可以看出,N為512 時,物體檢測模型的mAP 有所提升;而N為1024 時,物體檢測模型的mAP 有所下降,說明N設置為512 時,模型剪枝后的物體檢測模型復雜度更為適合本次實驗訓練數據集和測試數據集,前向推理效果更好.

所以,綜合表1模型剪枝對比中N為512 和1024 時的耗時情況以及相對應的物體檢測模型的mAP 值,本實驗選擇針對N為512 的模型剪枝后的MobileNets-SSD 物體檢測模型進行匯編優化.經過模型剪枝后的MobileNets-SSD 模型體積由23.1 MB 縮減為20.8 MB,模型體積減小9.96%.

3.3 ARM 平臺優化

由表1模型剪枝對比可知,物體檢測模型中卷積層Conv_0、Conv_1、Conv_2、Conv_3、Conv_4、Conv_5、Conv_6、Conv_7、Conv_8、Conv_9、Conv_10、Conv_11、Conv_12、Conv_13、Conv_14_1 和Conv_14_2 無論是模型剪枝前還是模型剪枝后,耗時都比較久.我們通過指令調整、寄存器分配和條件執行等手段對模型剪枝前和模型剪枝后的耗時多的網絡層分別進行匯編優化.主要應用到的是NEON 技術,它是ARM 處理器的128 位SIMD 架構擴展,旨在為消費性多媒體應用程序提供靈活、強大的加速功能.它具有32 個64 位寄存器和16 個128位寄存器.寄存器的具體調用代碼如下所示:

(1).macro MobileNets-SSD

(2)vldl.32 {d16-d19},[BO]!

(3)vldl.32 {d0-d3},[AO]!

(4)vldl.32 {d16-d19},[BO]!

(5)vldl.32 {d4-d7},[AO]!

(6)vmla.f32 q12,q0,d16[0]

(7)vmla.f32 q12,q2,d18[0]

(8)vmla.f32 q12,q3,d20[0]

(9)vmla.f32 q12,q4,d22[0]

(10)...

(11)vstl.32 {d24-d27},[CO]!

(12)vstl.32 {d28-d31},[CO]!

(13).endm

上述代碼(1)行,.macro 后面的字符串表示該宏的名稱,在后續的調用中可以直接利用該宏來替代內部的具體實現代碼.代碼(13)行的.end 為宏的載止位置.

代碼(2)-(5)行為數據加載指令,其中A0 表示矩陣起始地址,B0 為右矩陣的起始地址,兩者均為地址寄存器.vldl,32 指令的調用可以將數據按照32 位為一個數據單位的順序加載到NEON 寄存器當中,數據的連續性能夠減少指令的訪存時間.

代碼(6)-(9)行為結果矩陣第一列的計算過程,vmla.f32為乘加指令.

代碼(10)行表示其他幾列的計算方式.

代碼(11)-(12)行將寄存器當中的結果矩陣的值存儲到內存當中,當存儲位置是連續的情況下,指令的訪存將同樣是連續的,減少數據存儲所需時間.

匯編優化后的結果如表3匯編對比所示.

由表3匯編對比可知,模型剪枝后的MobileNets-SSD 模型前向推理速率相較于未進行模型剪枝時的速率加快了1.16 倍,而匯編前后模型的mAP 無變化;又結合表1模型剪枝對比和表3匯編對比,經過模型剪枝和匯編優化的MobileNets-SSD 模型前向推理速率相較于原始模型加快了8.82 倍.

本文還選擇其他兩個前向推理框架進行了對比,使用的都是剪枝之后的網絡模型,如表4所示.Mini-Caffe 是對Caffe 的前向推理版本,匯編優化比較少,Ncnn 是騰訊開發的帶匯編優化的前向推理框架,做了比較深度的匯編優化.與它們相比,本文最終的前向推理時間是最低的.

表3 匯編對比

表4 與其他框架的對比

3.4 檢測結果

在ARM 平臺上的前向推理時,測試樣本檢測結果如圖6所示.

部分物體未被檢測的原因有以下幾點:

(1)遮擋物過多,未能檢測到整個物體;

(2)離USB 攝像頭太遠,暴露面積太小;

(3)只暴露物體部分特征,前向推理困難等.

前期的訓練樣本的選擇對最后嵌入式設備上物體檢測模型的前向推理檢測結果有一定影響.整體效果較為理想.

圖6 檢測結果

4 結論與展望

本文選擇了合適的物體檢測框架SSD 和神經網絡架構MobileNets,訓練出一個滿足嵌入式設備需求的物體檢測模型,并通過模型剪枝對該物體檢測模型進行優化,在移植到ARM 平臺上之后又進行匯編優化,進一步加快前向推理速率.在準確精度和模型大小方面還可以有進一步的研究:

(1)MobileNets V2 的準確率和速率都有提高,可以在此網絡結構上進行物體檢測算法優化.

(2)因為模型中參數的存儲精度為32 位的浮點數,可以在ARM 平臺上針對模型參數進行量化,更大程度地壓縮模型,加快前向推理速率.

猜你喜歡
嵌入式優化檢測
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 国产亚洲精品97AA片在线播放| 国产成人综合在线观看| 国产区福利小视频在线观看尤物| 国产成人在线无码免费视频| 国产极品美女在线| 成年人国产视频| 久久精品aⅴ无码中文字幕 | 日本在线视频免费| 91精品国产情侣高潮露脸| 久久久久久国产精品mv| 亚洲va欧美va国产综合下载| 一级爆乳无码av| 亚洲美女一区| 国产福利一区在线| 国产美女免费| 国产精品无码在线看| 日韩无码黄色网站| 亚洲中文字幕手机在线第一页| julia中文字幕久久亚洲| 日本尹人综合香蕉在线观看| 青草91视频免费观看| 亚洲国产高清精品线久久| 亚洲精品在线观看91| 亚洲人成影视在线观看| 国产香蕉国产精品偷在线观看| 伊人久久大香线蕉成人综合网| 国产天天射| 91九色最新地址| 欧美亚洲日韩中文| 亚洲日本www| 亚洲无码视频图片| 日韩精品少妇无码受不了| 精品无码一区二区三区在线视频| 无码精品一区二区久久久| 亚洲香蕉在线| 久久网欧美| 日韩毛片在线视频| 欧美亚洲国产精品久久蜜芽| 亚洲成年人网| 99re这里只有国产中文精品国产精品 | 免费又爽又刺激高潮网址 | 多人乱p欧美在线观看| 久久亚洲欧美综合| 久久久久人妻一区精品| 午夜高清国产拍精品| 久久国产精品国产自线拍| 国产丝袜无码精品| 中国一级毛片免费观看| 四虎亚洲精品| 日本一区二区三区精品AⅤ| 另类欧美日韩| 国产精品香蕉在线观看不卡| 精品第一国产综合精品Aⅴ| 日韩精品视频久久| 国产精品丝袜视频| 欧洲亚洲一区| 免费国产不卡午夜福在线观看| 亚洲色图欧美视频| 99热这里只有精品在线观看| 亚洲AV免费一区二区三区| 制服丝袜 91视频| 在线观看免费黄色网址| 黄色不卡视频| AV网站中文| 国产成人做受免费视频| 亚洲欧美综合精品久久成人网| 男女性色大片免费网站| 国产欧美日韩专区发布| 国产免费羞羞视频| 99ri国产在线| 亚洲男人天堂网址| 午夜丁香婷婷| 婷婷色婷婷| 最新亚洲人成网站在线观看| 欧美精品伊人久久| 国产精品网拍在线| 欧美日韩在线成人| 婷婷伊人久久| 免费一极毛片| 亚洲人成电影在线播放| 欧美日韩成人在线观看| 国产精品污视频|