高宗斌 崔永杰 李 凱
(西北農(nóng)林科技大學(xué)機(jī)械與電子工程學(xué)院 陜西 楊凌 712100)(農(nóng)業(yè)農(nóng)村部農(nóng)業(yè)物聯(lián)網(wǎng)重點(diǎn)實(shí)驗(yàn)室 陜西 楊凌 712100)
中國是獼猴桃栽培面積最大的國家,獼猴桃采摘機(jī)器人[1]可以有效改善勞動(dòng)力短缺的現(xiàn)狀,而自動(dòng)導(dǎo)航是實(shí)現(xiàn)其自動(dòng)化作業(yè)的關(guān)鍵技術(shù)之一。目前國內(nèi)外普遍采用GPS進(jìn)行導(dǎo)航,但是在獼猴桃果園獨(dú)特的棚架式栽培模式下,由于棚架頂部用鋼絲固定枝蔓,受鋼絲和樹冠層遮擋,導(dǎo)致無法精確接收GPS信號(hào)[2],故選擇視覺方法檢測獼猴桃樹干實(shí)現(xiàn)移動(dòng)設(shè)備的導(dǎo)航與定位。深度學(xué)習(xí)技術(shù)的迅猛發(fā)展使得目標(biāo)檢測算法的性能[3]遠(yuǎn)優(yōu)于傳統(tǒng)圖像處理算法,所以利用深度學(xué)習(xí)目標(biāo)檢測算法對(duì)獼猴桃樹干進(jìn)行檢測有重要意義。
目前,許多學(xué)者利用傳統(tǒng)圖像處理方法嘗試對(duì)果園特定目標(biāo)進(jìn)行檢測或?qū)D像進(jìn)行分割。新西蘭獼猴桃果園樹干與支撐物苔蘚附著嚴(yán)重,使得利用顏色特征將樹干與背景分離顯得尤為困難,Scarfe[4]利用樹干邊緣特征,采用Sobel算子邊緣檢測和模板匹配方法對(duì)樹干以及支撐物進(jìn)行檢測,但是只在有利光照條件下取得較好的效果。柑橘果園環(huán)境下,文獻(xiàn)[5-6]利用顏色特征,分別采用BP神經(jīng)網(wǎng)絡(luò)分類以及聚類的方法將天空、樹冠、土地進(jìn)行圖像分割,并取得較高的分割精度,但是柑橘果園場景相對(duì)單一,此方法并不適用于背景復(fù)雜的獼猴桃果園。中國新疆矮化密植棗園環(huán)境復(fù)雜,樹干邊緣以及顏色特征均不顯著,彭順正等[7]選用B分量圖對(duì)其進(jìn)行處理,提出“行閾值分割”方法分割樹干,并引入了趨勢線,但算法相對(duì)復(fù)雜,且準(zhǔn)確率不高。由此可見,在果園較為復(fù)雜的環(huán)境中,常規(guī)的圖像處理算法未取得較好的效果。
近年來,借助卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類的精度超過了人工分類[8],將其作為特征提取層的目標(biāo)檢測算法在檢測精度和速度上均取得了巨大的提升,如R-CNN系列[9-11]、SSD[12]、YOLO[13-15]在許多不同的領(lǐng)域取得了較好的表現(xiàn)[16-17]。獼猴桃果園樹干特征較為明顯,部分學(xué)者對(duì)樹干的檢測進(jìn)行了嘗試: Zhang等[18]針對(duì)蘋果收獲問題,利用Kinect深度圖像與R-CNN目標(biāo)檢測算法檢測蘋果樹干,但是因?yàn)榄h(huán)境的復(fù)雜性以及蘋果樹干本身的特征等因素導(dǎo)致檢測精度較低;Shah等[19]利用無人機(jī)搭載深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)樹干進(jìn)行檢測和定位,同時(shí)標(biāo)定相應(yīng)的GPS信息,進(jìn)行數(shù)據(jù)庫的建立,但由于獼猴桃樹干的特征與大多數(shù)樹干的特征差異較大,無法利用現(xiàn)有的數(shù)據(jù)集進(jìn)行檢測。
深度學(xué)習(xí)在數(shù)據(jù)集愈發(fā)龐大、網(wǎng)絡(luò)結(jié)構(gòu)愈發(fā)復(fù)雜的發(fā)展趨勢下,精度不斷提高,但計(jì)算量也隨之增大,需要高性能GPU支持,在某些場合下無法投入實(shí)際應(yīng)用。一些學(xué)者開始將輕量化模型部署在功耗較低的嵌入式設(shè)備[20-22]上,以減少計(jì)算量并提高實(shí)時(shí)性。本文對(duì)YOLO-LITE[23]模型進(jìn)行優(yōu)化,并利用Movidius與OpenCV-DNN兩種方式將其部署在樹莓派3B+與CPU設(shè)備中,為算法真正投入使用打下基礎(chǔ),對(duì)實(shí)現(xiàn)獼猴桃采摘機(jī)器人視覺導(dǎo)航有重要意義。
2018年9月于陜西省眉縣獼猴桃試驗(yàn)站進(jìn)行圖像采集。利用大疆御 Mavic Air無人機(jī)拍攝視頻。視頻編碼格式為mp4、碼率為5 217 kbit/s、幀率為30 幀每秒、分辨率為1 280×720像素,將視頻進(jìn)行分幀處理得到JPG格式圖像。
本文從分幀處理所得到的6 844幅圖像中隨機(jī)取5 128幅圖像作為訓(xùn)練集,剩余1 716幅圖像作為測試集。將獼猴桃果園樹干和支撐鋼管歸為一類, 統(tǒng)一標(biāo)注為“tree”,標(biāo)注示例如圖1所示。
圖1 Labelimg標(biāo)注示例
YOLO 算法的核心思想是將目標(biāo)檢測作為回歸問題解決。將輸入圖像劃分成S×S個(gè)柵格(grid cell),若一個(gè)目標(biāo)的中心點(diǎn)落在某個(gè)柵格里,那么這個(gè)柵格負(fù)責(zé)預(yù)測該目標(biāo)。每個(gè)柵格需要預(yù)測邊界框(bounding box)的四個(gè)值:x,y,w,h。坐標(biāo)(x,y)表示預(yù)測邊界框中心與柵格邊界的相對(duì)值;坐標(biāo)(w,h)表示預(yù)測邊界框的長與寬相對(duì)于整幅圖像長與寬的比例。在預(yù)測邊界框坐標(biāo)的同時(shí),會(huì)為每個(gè)邊界框預(yù)測一個(gè)置信度(Confidence scores),置信度則反映了此柵格中是否含有目標(biāo)以及邊界框與Ground truth的接近程度,其定義如下:
(1)
置信度反映柵格中是否存在目標(biāo),而不反映屬于哪一類目標(biāo),所以每個(gè)柵格還需要預(yù)測條件類別概率。本文只有一類目標(biāo),所以設(shè)置條件類別概率的數(shù)量為1。最終預(yù)測時(shí)每個(gè)柵格的條件類別概率與邊界框的置信度共同反映其預(yù)測精度,定義如下:
(2)
YOLO目標(biāo)檢測算法經(jīng)過三個(gè)版本的更替,其性能逐漸提高。YOLOV3在YOLOV2基礎(chǔ)上進(jìn)行改進(jìn),在不降低檢測速度的情況下,盡可能提升檢測精度,但輕量級(jí)模型YOLOV3-TINY相比YOLOV2-TINY在檢測速度方面下降幅度較大,所以在某些對(duì)精度要求不高,但需要保證檢測速度的應(yīng)用場合,選擇在YOLOV2-TINY基礎(chǔ)上進(jìn)行優(yōu)化的YOLO-LITE模型進(jìn)行改進(jìn)以及部署。
為與YOLO-LITE原模型進(jìn)行區(qū)分,將改進(jìn)后的YOLO-LITE統(tǒng)稱為T-YOLO-LITE(TREE-YOLO-LITE)。本文保留YOLO-LITE提出的特征提取層,依據(jù)所要檢測的類別數(shù)量,修改最后一個(gè)1×1卷積層。最終用于預(yù)測的向量深度為B×(5+C),B為每個(gè)柵格內(nèi)預(yù)測邊界框的數(shù)量,5個(gè)anchor boxes分別預(yù)測5個(gè)邊界框,B為5;C為所要檢測的類別數(shù)量,C為1,最終的向量深度為5×(5+1)=30。所以表1中Conv7的Filters為30。
表1 T-YOLO-LITE特征提取層網(wǎng)絡(luò)結(jié)構(gòu)
本文通過保留BN(Batch Normalization)層、調(diào)整輸入圖像尺寸、修改anchor boxes、添加負(fù)樣本對(duì)YOLO-LITE進(jìn)行優(yōu)化,使之滿足獼猴桃樹干檢測的需求。
(1) 保留BN層。YOLO-LITE模型證明了在某些應(yīng)用場合下,利用淺層網(wǎng)絡(luò)進(jìn)行預(yù)測時(shí),BN層是非必需的,而且剔除BN層可以減少計(jì)算量,提高實(shí)時(shí)性。但由于本研究中獼猴桃樹干目標(biāo)較小,并引入大量背景信息,較難檢測。去除BN層后訓(xùn)練出現(xiàn)梯度消失的問題,模型無法收斂,故本文保留了YOLO-LITE剔除的BN層。
(2) 調(diào)整輸入圖像尺寸。YOLO-LITE模型為了提高實(shí)時(shí)性,將輸入圖像大小調(diào)整為224×224像素,但是輸入圖像過小導(dǎo)致檢測精度降低,很難滿足實(shí)際應(yīng)用中的需求。本文將輸入圖像調(diào)整至448×448像素,保證模型部署后滿足實(shí)際需求。
(3) 修改anchor boxes。設(shè)置anchor boxes的目的是讓邊界框與Ground truth的IOU更大,以便提取目標(biāo)中更多有用信息,而非背景,因此需要選擇合適的anchor boxes使模型更加精準(zhǔn)。采用k-means聚類方法對(duì)訓(xùn)練集Ground truth做聚類分析,選取Ground truth的box與聚類中心box之間的IOU作為距離指標(biāo):
d(box,centroid)=1-IOU(box,centroid)
(3)
(4) 添加負(fù)樣本。本研究對(duì)誤檢測率要求較為嚴(yán)格,預(yù)測模型不能出現(xiàn)將行間雜草、地面以及樹冠等檢測為樹干的情況,因此本文通過隨機(jī)裁剪和人工分類的方式在訓(xùn)練樣本中添加了5 800幅不同尺度的負(fù)樣本,避免誤檢測。幾類負(fù)樣本示例如圖2所示。
圖2 負(fù)樣本示例
為了驗(yàn)證獼猴桃樹干檢測精度,引入準(zhǔn)確率P(precision)、召回率R(recall)、AP(average precision)、F1值對(duì)訓(xùn)練后的模型進(jìn)行評(píng)價(jià)。評(píng)價(jià)指標(biāo)計(jì)算公式如下:
P=TP/(TP+FP)
(4)
R=TP/(TP+FN)
(5)
F1=2PR/(P+R)
(6)
(7)
式中:TP(True Positive)為預(yù)測成功的數(shù)量,即正確檢測到的樹干數(shù)量;FP(False Positive)為背景預(yù)測為樹干的數(shù)量,即誤檢為樹干的數(shù)量;FN(False Negative)為將樹干預(yù)測為背景的數(shù)量,即未檢測的樹干數(shù)量。
檢測時(shí),TP為邊界框與Ground truth IOU大于0.5的目標(biāo)數(shù)量,F(xiàn)P為邊界框與Ground truth IOU小于等于0.5的目標(biāo)數(shù)量;FN為沒有檢測到的Ground truth的數(shù)量。
本文選擇Ubuntu 16.04 darknet框架進(jìn)行模型訓(xùn)練。硬件配置: 處理器Intel Xeon E5-1650 v4, 主頻3.6 GHz,內(nèi)存32 GB,顯卡Nvidia Titan XP,顯示存儲(chǔ)12 GB。將標(biāo)注完畢的數(shù)據(jù)集送入改進(jìn)后的T-YOLO-LITE網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練,保存網(wǎng)絡(luò)結(jié)構(gòu)T-YOLO-LITE.cfg以及權(quán)重T-YOLO-LITE.weights文件。
Movidius是一款低功耗深度學(xué)習(xí)推理工具和獨(dú)立的神經(jīng)網(wǎng)絡(luò)加速器。功耗1 W,浮點(diǎn)性能為100 GFLOPs,為廣泛的邊緣主機(jī)或嵌入式設(shè)備提供專用的深度神經(jīng)網(wǎng)絡(luò)推理功能。Movidius通過USB接口連接至PC或樹莓派等設(shè)備,不能用于訓(xùn)練模型,但是可以部署訓(xùn)練完畢的神經(jīng)網(wǎng)絡(luò)模型,通過Movidius進(jìn)行加速計(jì)算與推理。本文將Movidius通過USB連接至樹莓派3B+,如圖3所示。
圖3 樹莓派3B+與Movidius
Movidius支持Caffe以及Tensorflow模型的轉(zhuǎn)換與推理,本文利用darknet框架訓(xùn)練模型,所以要將訓(xùn)練完畢的模型轉(zhuǎn)換為Caffe或Tensorflow模型進(jìn)行推理。利用:YoloV2NCS(https://github.com/duangenquan/YoloV2NCS)將T-YOLO-LITE.cfg轉(zhuǎn)換為T-YOLO-LITE.prototxt,保存為Caffe格式的網(wǎng)絡(luò)結(jié)構(gòu);將T-YOLO-LITE.weights轉(zhuǎn)換為T-YOLO-LITE.caffemodel,保存為Caffe格式的訓(xùn)練權(quán)重。
Movidius運(yùn)行Caffe模型前,需要借助NCSDK中的mvNCCompile工具,將Caffe模型T-YOLO-LITE.prototxt與T-YOLO-LITE.caffemodel轉(zhuǎn)化為Movidius推理所需要的graph模型。最后利用在樹莓派編譯完畢的NCSDK中inference模塊調(diào)用轉(zhuǎn)換后的graph模型,完成T-YOLO-LITE在樹莓派設(shè)備中的部署。利用graph推斷得到目標(biāo)位置(x,y,w,h)、類別、置信度。模型轉(zhuǎn)換流程如圖4所示。
相較于傳統(tǒng)文學(xué),網(wǎng)絡(luò)文學(xué)是文學(xué)形式的一種全新載體,盛大文學(xué)鼎盛時(shí)期曾壟斷了整個(gè)網(wǎng)絡(luò)文學(xué)市場。自“橄欖樹”原創(chuàng)文學(xué)網(wǎng)站打響第一槍后,隨后興起的“榕樹下”網(wǎng)站,讓無數(shù)網(wǎng)絡(luò)文學(xué)愛好者追捧。而網(wǎng)絡(luò)文學(xué)的贏利模式可謂一波三折,并不如網(wǎng)站興起那般順利,“榕樹下”之后有大量的文學(xué)網(wǎng)站產(chǎn)生,他們嘗試各種贏利路線,比如付費(fèi)閱讀、實(shí)體出版等,都一一“撲街”,直到起點(diǎn)中文網(wǎng)站另辟蹊徑,最先開啟微支付商業(yè)模式,成功讓讀者買單。
圖4 模型轉(zhuǎn)換流程
Darknet模型訓(xùn)練依賴高性能GPU,功耗較大。經(jīng)過兩次模型轉(zhuǎn)換,將其部署在樹莓派3B+與Movidius后,只需要5 V的電源為樹莓派供電即可,滿足實(shí)際應(yīng)用中低功耗的需求。
OpenCV是機(jī)器視覺領(lǐng)域運(yùn)用較為廣泛的視覺庫,隨著深度學(xué)習(xí)迅速發(fā)展,OpenCV 3.1版本contrib中加入了深度神經(jīng)網(wǎng)絡(luò)DNN模塊,OpenCV 3.3版本將DNN模塊加入正式代碼的主倉庫。DNN模塊包含深度神經(jīng)網(wǎng)絡(luò)Convolution、FullyConnected、MaxPooling、ReLU、BatchNormalization等許多基本構(gòu)成元素;包含Alexnet、GoogLeNet、VGG-16等經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)以及SSD、YOLO等經(jīng)典目標(biāo)檢測算法。DNN模塊只支持模型推理與加速,不支持模型訓(xùn)練。
目前深度學(xué)習(xí)模型大多依賴Caffe、Tensorflow、Pytorch等框架,并需要CUDA、CUDNN等用于調(diào)用GPU加速訓(xùn)練。在某些實(shí)際應(yīng)用中無須訓(xùn)練模型,硬件性能只需要保證神經(jīng)網(wǎng)絡(luò)的前向傳播過程,進(jìn)行推理即可。OpenCV-DNN模塊不依賴第三方庫,也無須考慮深度學(xué)習(xí)框架以及算法的配置和編譯,即不需要重新編譯Darknet,依靠DNN模塊調(diào)用訓(xùn)練好的模型即可進(jìn)行推理。由于不需要訓(xùn)練以及反向傳播過程,針對(duì)此特點(diǎn)進(jìn)行優(yōu)化,避免不必要的計(jì)算,DNN模塊中YOLO模型在CPU上的推理速度要明顯優(yōu)于原版Darknet。
OpenCV-DNN調(diào)用Darknet模型包括以下幾步:
1) Darknet導(dǎo)出模型。模型經(jīng)訓(xùn)練后,保存T-YOLO-LITE.cfg和T-YOLO-LITE.weights文件。
2) 調(diào)整初始化參數(shù)。調(diào)整網(wǎng)絡(luò)的輸入圖像大小,設(shè)置為448像素×448像素。調(diào)整置信度閾值大小為0.5。調(diào)整非極大值抑制閾值為0.01。將非極大值閾值調(diào)整至一個(gè)較低的水平,用于判斷網(wǎng)絡(luò)的輸出結(jié)果的誤檢測率,即讓盡可能多的boxes輸出,從而判斷誤檢測率是否滿足需求。
3) 讀取網(wǎng)絡(luò)結(jié)構(gòu)。利用函數(shù)cv.dnn.readNetFromDarknet(),讀取兩個(gè)傳入?yún)?shù):T-YOLO-LITE.cfg和T-YOLO-LITE.weights,加載訓(xùn)練完畢的網(wǎng)絡(luò)。
4) 讀取輸入視頻或圖像。每幀圖像通過bolbFromImage()函數(shù)將其處理為神經(jīng)網(wǎng)絡(luò)的輸入類型bolb,將圖像像素歸一化為0至1之間。
5) 網(wǎng)絡(luò)輸出。網(wǎng)絡(luò)輸出的每一個(gè)邊界框都包含長度為5的向量,分別為x、y、w、h、置信度。利用坐標(biāo)將邊界框逐幀畫在輸入圖像中。
本文在CPU:i5-7300 HQ,內(nèi)存8 GB的PC上配置OpenCV 3.4.1進(jìn)行T-YOLO-LITE的推理加速計(jì)算。
T-YOLO-LITE網(wǎng)絡(luò)訓(xùn)練超參數(shù)設(shè)定:batch=64,subdivisions=8,momentum=0.9,decay=0.000 5,angle=0,saturation=1.5,exposure=1.5,hue=0.1,learning_rate=0.001,burn_in=1 000,max_batches=500 000,policy=steps,steps=400 000,scales=0.1。采用分步調(diào)整學(xué)習(xí)率的策略,初始學(xué)習(xí)率為0.001,當(dāng)?shù)螖?shù)超過400 000次時(shí),學(xué)習(xí)率降低10倍,調(diào)整為0.000 1。
損失函數(shù)如圖5所示。共迭代500 000次,平均loss穩(wěn)定在0.13附近,模型收斂較好。
圖5 損失函數(shù)loss可視化
利用第2.1節(jié)中提出的4個(gè)改進(jìn)方法對(duì)YOLO-LITE進(jìn)行優(yōu)化,分別對(duì)應(yīng)表2中改進(jìn)(1)至改進(jìn)(4),并針對(duì)每一個(gè)改進(jìn)方法在測試集對(duì)檢測精度進(jìn)行測試。本文通過AP以及F1值兩個(gè)評(píng)價(jià)標(biāo)準(zhǔn)對(duì)樹干的檢測精度進(jìn)行評(píng)價(jià)。通過FPS對(duì)檢測速度進(jìn)行評(píng)價(jià),在Nvidia Titan XP中進(jìn)行計(jì)算。
表2 YOLO-LITE改進(jìn)實(shí)驗(yàn)結(jié)果
注:表中改進(jìn)(1)至改進(jìn)(4)對(duì)應(yīng)2.1節(jié)中四個(gè)改進(jìn)方法;“√”表示采用此改進(jìn)方法。
YOLO-LITE原模型為了提高實(shí)時(shí)性,剔除了BN層,但在檢測獼猴桃樹干時(shí),模型不收斂,無法檢測到目標(biāo)。如表2所示:YOLO-LITE原模型AP為0%,通過改進(jìn)(1)保留BN層后,AP提升至15.94%,開始檢測到目標(biāo);通過改進(jìn)(2)增大輸入圖像尺寸,AP提升至42.65%,但經(jīng)過兩次改進(jìn)導(dǎo)致檢測速度降低,F(xiàn)PS由240降低至200;通過改進(jìn)(3)修改anchor boxes以及改進(jìn)(4)添加負(fù)樣本,使AP進(jìn)一步提高至59.75%。F1值與AP所反映的趨勢一致。通過4個(gè)改進(jìn)方法得到最終的T-YOLO-LITE模型。
圖6為4個(gè)改進(jìn)方法對(duì)應(yīng)的檢測結(jié)果,改進(jìn)(1)和改進(jìn)(2)中白色橢圓標(biāo)記的目標(biāo)是明顯的誤檢測結(jié)果,精度無法滿足需求;改進(jìn)(3)和改進(jìn)(4)精度差距較小,檢測結(jié)果無明顯差異。
圖6 不同改進(jìn)方法檢測結(jié)果
將T-YOLO-LITE模型與YOLOV2以及YOLOV2-TINY模型進(jìn)行比較,結(jié)果如表3所示。特征提取層最深的YOLOV2模型取得了最高的檢測精度,其AP為69.54%;YOLOV2-TINY與T-YOLO-LITE模型在檢測精度上基本持平,AP分別為59.99%與59.75%。檢測速度上YOLOV2-TINY和T-YOLO-LITE的FPS分別為YOLOV2的3.25倍與5倍,由此可知輕量級(jí)模型在檢測速度方面的優(yōu)勢明顯強(qiáng)于深層模型。在模型大小方面,深層結(jié)構(gòu)的YOLOV2最大,為192 MB,淺層結(jié)構(gòu)YOLOV2-TINY為42 MB,而T-YOLO-LITE模型大小僅為2 MB,遠(yuǎn)小于上述兩種模型,但是T-YOLO-LITE卻取得了與YOLOV2-TINY幾乎一致的精度,并且在檢測速度方面明顯優(yōu)于上述兩種模型。
表3 三種模型性能對(duì)比
PR曲線下方面積為該目標(biāo)檢測模型的AP,三種模型的PR曲線如圖7所示??梢钥闯?,YOLOV2的曲線完全高于YOLOV2-TINY與T-YOLO-LITE,其面積最大,精度最高。YOLOV2-TINY與T-YOLO-LITE曲線相互交錯(cuò),面積基本一致,精度持平。 雖然YOLOV2在精度上有著明顯的優(yōu)勢,但從如圖8所示的檢測結(jié)果中可以看出:YOLOV2-TINY與T-YOLO-LITE檢測到的目標(biāo)均在地壟附近,未出現(xiàn)將樹冠、地面等檢測為樹干的情況,其檢測精度已經(jīng)可以滿足獼猴桃樹干檢測的需求。YOLOV2-TINY與T-YOLO-LITE兩種輕量級(jí)模型檢測到的目標(biāo)與Ground truth重疊部分較少,IOU較低,從而被判定為檢測錯(cuò)誤。大部分目標(biāo)檢測算法評(píng)價(jià)標(biāo)準(zhǔn)中,均將IOU小于0.5的目標(biāo)判定為誤檢測,而本研究中誤檢測定義為將樹冠、地面等檢測為樹干,但為與標(biāo)準(zhǔn)一致,依然保留此評(píng)價(jià)方法。
圖7 三種模型PR曲線
圖8 三種模型檢測結(jié)果
從圖8(b)與圖8(c)可以看出,在獼猴桃樹干檢測任務(wù)當(dāng)中,YOLOV2-TINY與T-YOLO-LITE出現(xiàn)的IOU較低的目標(biāo)位置依然處于地壟周圍或樹干之間,不影響擬合導(dǎo)航路徑時(shí)的精度。雖然T-YOLO-LITE模型在AP、F1值等評(píng)價(jià)標(biāo)準(zhǔn)中處于較低的水平,但是完全符合實(shí)際應(yīng)用需求,并且在檢測速度以及模型大小兩方面擁有顯著優(yōu)勢。
利用第3節(jié)中的兩種方法將模型分別部署在樹莓派3B+與i5-7300HQ上。通過表4所示的三種模型部署后的FPS對(duì)比可知:不利用高性能GPU,三種模型的檢測速度都出現(xiàn)很大程度的下降,其中深層模型YOLOV2表現(xiàn)最不理想。在無法利用高性能GPU的場合,深層模型無法真正落地應(yīng)用。相比之下,經(jīng)過優(yōu)化的T-YOLO-LITE在部署后的檢測速度遠(yuǎn)遠(yuǎn)優(yōu)于其他兩種模型,T-YOLO-LITE在OpenCV-DNN與Movidius中的推理FPS均達(dá)到了YOLOV2-TINY的2倍。
表4 三種模型部署后FPS對(duì)比
圖9為模型部署后的檢測結(jié)果, OpenCV-DNN的檢測結(jié)果要優(yōu)于Movidius,Movidius經(jīng)過兩次模型轉(zhuǎn)換后,邊界框與Ground truth的接近程度下降。由于Darknet在Maxpooling時(shí)默認(rèn)進(jìn)行padding操作,轉(zhuǎn)換后Caffe模型最終輸出的特征圖大小減少1,造成精度損失。后續(xù)研究中,將Darknet模型轉(zhuǎn)換為Caffe模型后,重新將模型進(jìn)行訓(xùn)練,提升精度,最后再轉(zhuǎn)換為graph進(jìn)行推理。
圖9 模型部署后檢測結(jié)果
本文通過改進(jìn)優(yōu)化輕量級(jí)網(wǎng)絡(luò)YOLO-LITE,在檢測精度和速度上做平衡,使其在精度滿足獼猴桃樹干的檢測要求下,盡量提升檢測速度。最終通過Movidius與OpenCV-DNN兩種部署方式,將訓(xùn)練完畢的T-YOLO-LITE模型分別部署在樹莓派3B+與CPU中,達(dá)到了每秒2幀和每秒6幀的檢測速度。本文為深度學(xué)習(xí)真正投入應(yīng)用與后續(xù)研究中獼猴桃采摘機(jī)器人視覺路徑的擬合打下了基礎(chǔ)。