王平凱,孫光澤,朱芮萱
(長春工業(yè)大學機電工程學院,長春 130012)
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)是一種人工神經(jīng)網(wǎng)絡[1],1998 年,LeCun[2]提出了第一個卷積神經(jīng)網(wǎng)絡模型LeNet,隨著Relu 和Dropout 的提出,以及GPU 和大數(shù)據(jù)帶來的歷史機遇,相繼誕生了AlexNet、VggNet、Gool?eNet、ResNet[3-6]。由于圖像數(shù)據(jù)可以看作二維的像素網(wǎng)格,卷積神經(jīng)網(wǎng)絡通過特殊的線性運算可以處理圖像數(shù)據(jù),因此常被應用于圖像處理與目標檢測。
目標檢測目前有一階段(one-stage)和兩階段(two-stage)兩種方法,其中,一階段是指通過一遍網(wǎng)絡就可以得出目標的位置和類別信息,常見的方法有括YOLO(you only look once)[7]、SSD(single shot multibox detector)[8]等。兩階段是指當輸入圖片通過網(wǎng)絡后,會生成一些候選區(qū)域,這些區(qū)域可能會包含一個待檢測目標,然后進一步區(qū)分這些候選區(qū)域具體包含了哪些待檢測的目標。常見的方法有R-CNN(region-conventional neural network)、Fast R-CNN、Faster R-CNN、Mask R-CNN 和SPP-net(spatial pyramid pool?ing-net)[9-12]。
基于卷積神經(jīng)網(wǎng)絡的目標檢測方法能夠快速準確地定位到目標,通過輔助設備能向人類用戶傳遞實時的場景信息。隨著物流業(yè)的蓬勃發(fā)展,智能化叉車不斷涌現(xiàn),目標檢測起了推動性的作用,除了基于卷積神經(jīng)網(wǎng)絡的目標檢測方法,還有傳統(tǒng)的檢測方法。J.Pagès等[13]介紹了一個完整的計算機視覺系統(tǒng),提出了基于顏色和幾何特征的托盤識別方法。Mi?chael Seelinger等[14]提出了一種移動相機空間操作(MCSM)的視覺引導控制方法,將基準放在托盤本身,實驗的精度與速度都很高,但同時需要預先給托盤添加基準和多攝像頭的高成本。Sungmin Byun等[15]提出了一種基于單目視覺的托盤定位方法,該方法快速、準確,同時采用了攝像機標定技術來確定托盤的位置。
為了更好地滿足實時檢測的工程應用場景,本文采用YOLOv3 算法,其采用一個單獨的CNN 模型實現(xiàn)end-to-end的目標檢測[2],為了提高該算法對托盤檢測的平均精度與檢測速度,首先在YOLOv3算法的基礎上使用K-Means++聚類算法重新聚類,得到新的適用于托盤檢測的先驗框。其次引入了二元交叉熵損失函數(shù)對原有的損失函數(shù)進行改進,同時改進了輸入圖像劃分網(wǎng)格的機制,引入了權重矩陣,通過數(shù)據(jù)增強的手段對采集到的圖像進行擴充。最后在本文制作的數(shù)據(jù)集上進行訓練以及測試,并與其他的目標檢測算法進行比較,結果表明改進后的YOLOv3算法在平均精度以及速度上都有提升。
YOLOv3將目標檢測作為一個空間分離的邊界盒和相關類概率的回歸問題,單個神經(jīng)網(wǎng)絡可以在一次評估中直接從完整圖像中預測邊界框和類概率[7]。通過對輸入圖像的特征提取,得到一定大小的特征圖,然后將得倒的特征圖像劃分成S×S的網(wǎng)格,當圖像中某個目標的中心位置落入到其中的一個網(wǎng)格,那么該網(wǎng)格將會負責預測該目標。每個網(wǎng)格都會預測B 個邊界框,該網(wǎng)絡會預測3 個固定數(shù)量的邊界框,通過K-means聚類得出9種尺寸的Anchor Box,分別為10×13、16×30、33×23、30×61、62×45、59×119、116×90、156×198、372×326。
在網(wǎng)絡中實際訓練的參數(shù)為tx、ty、tw、th,其中tx、ty為預測的坐標偏移值,tw、th為尺度縮放值。在先驗框的基礎上通過平移加尺度縮放進行微調(diào),得到最終的邊界框坐標值(x,y,w,h),分別表示檢測框的橫坐標、縱坐標、寬度和高度。Bounding Box 與Anchor Box的對應關系如圖1所示。
圖1 Bounding Box 與Anchor Box的對應關系
Bounding Box的坐標計算公式為:
式中:bx、by、bw、bh分別為Bounding Box 的中心坐標、寬度和高度;cx、cy分別為當前單元網(wǎng)格相對于圖像左上角的橫縱偏移量;pw、ph分別為對應Anchor Box 的寬和高;σ 為Sig?moid激活函數(shù)。
每個邊界框有(x,y,w,h,confidence)5個基本參數(shù),其中confidence為預測邊界框的置信度,其計算公式為:
式中:P(object)為網(wǎng)格中含有某類目標的類別概率,為真實邊界框和預測邊界框的交并比。
采用邏輯回歸方式對先驗框進行目標性評分,通過非極大值抑制方法從9種不同尺寸的先驗框中找到目標存在可能性得分最高的。最終輸出特征圖的尺度為13×13、26×26 以及52×52。
在目標檢測中,選擇合適的先驗框可以顯著提高目標檢測的速度和精度。Yolov3 使用的先驗框思想是從Faster-rcnn中引入的,其是一個具有固定寬度和高度的初始候選框。Yo?lov3 算法在mscoco 和pascal voc 數(shù)據(jù)集上通過使用K-means 聚類算法得到9 組先驗框,分別為(10,13)、(16,30)、(33,23)、(30,61)、(62,45)、(59,119)、(116,90)、(156,198)、(372,326),但是,在COCO 和VOC 數(shù)據(jù)集中使用的先驗框并不適合本文使用的托盤數(shù)據(jù)集。因此,本文采用K-means++算法對托盤數(shù)據(jù)集的w和h進行重新聚類。本文使用AvgIOU 作為目標的度量標準進行聚類分析,AvgIOU 聚類的目標函數(shù)如下:
式中:nk為第k 個聚類中心的樣本數(shù)量;K 為樣本總數(shù);n 為聚類個數(shù);bbox為樣本手動標注的矩形框的值;center為簇中心;IOU(bbox,center)為樣本和聚類的交并集。
本文采用訓練中生成的當前迭代中交并比IOU(Intersec?tion over Union)參數(shù)替代K-means 算法中的歐幾里得距離,其評估標準為:
式中:d(bbox,center)為邊界框與中心框之間的距離;IOU(bbox,center)為兩個框的交并比。
當d(bbox,center)的值較小時,說明聚類的效果好,同時IOU(bbox,center)的值較大,這樣才能保證1-IOU(bbox,center)的值較小。這種聚類方法可以在同一聚類中產(chǎn)生較大的交并比和較小的兩個框之間的距離。
本文對樣本信息重新聚類,選取的k值為1~9,在聚類過程中發(fā)現(xiàn)隨著k值增加,平均交并比AvgIOU也呈現(xiàn)逐步上升的趨勢,當k=6時出現(xiàn)拐點,此時為最佳的預測框數(shù)量。本文中數(shù)據(jù)集對應聚類中心的寬和高分別為(23,13)、(66,22)、(143,30)、(163,47)、(219,56)、(340,70)。該聚類方法可以加快網(wǎng)絡的收斂速度,有效的改善訓練過程中的梯度下降。
損失函數(shù)是一種可以很好地反映模型與實際數(shù)據(jù)差距的工具。在神經(jīng)網(wǎng)絡的正向傳播過程中生成損失函數(shù),同時得到的損失函數(shù)也是反向傳播的起點。該網(wǎng)絡中的損失函數(shù)包括中心坐標的損失、預測邊界框的損失、置信度的損失和預測類別的損失。本文應用以數(shù)據(jù)的最大似然法則得到交叉熵來作為損失函數(shù),在YOLOv3目標檢測中,通過對輸入圖像的特征提取,得到一定大小的特征圖,然后將得到的特征圖像劃分成S×S的網(wǎng)格,在coco、voc數(shù)據(jù)集上,先驗框在x軸和y軸上同等密度分布。但是在實際的托盤檢測中,托盤實際的成像呈現(xiàn)出在y軸稀疏、在x軸上相對密集的形態(tài),因此為了降低劃分輸入圖像網(wǎng)格的長寬比例對目標檢測所帶來的影響,調(diào)整劃分網(wǎng)格的機制,將原來的S?S 的尺寸更改為大小為2S?S,增加了沿x 軸方向的檢測密度。同時為了提高對托盤分類的準確性,避免進行錯誤的分類,引入了權重矩陣T,T=[T1,…,Ti],表示不同類別的目標分類錯誤的懲罰權重。改進后的損失函數(shù)為:
式中:L1為預測中心坐標的損失函數(shù);λcoord為坐標誤差的權重參數(shù),在該網(wǎng)絡中λcoord=5;B 為該網(wǎng)格具有的Bounding Box 個數(shù);為有無目標對象中心落在預測邊界框中,當需要被識別的目標落入到第i 個網(wǎng)格生成的第j 個邊界框中時,分別為預測框的寬度和高度;為真實框中心點的橫縱坐標;為預測框中心點的橫縱坐標。
式中:L2為預測邊界框的損失函數(shù);分別為真實框的寬度和高度。
式中:L3為置信度的損失函數(shù);為預測的置信度;ci為真實的置信度;λnoobj為不含目標的置信度權重參數(shù),在該網(wǎng)絡為第i個網(wǎng)格的第j個邊界框不負責該目標。
式中:L4為類別概率的損失函數(shù);pi(c) 為類別概率預測;為真實的類別概率預測。
由于沒有專門用來識別托盤信息的數(shù)據(jù)集。因此本文在實際的倉儲環(huán)境中進行了托盤圖片的采集,數(shù)據(jù)集中的數(shù)據(jù)越大,整個網(wǎng)絡的魯棒性就越好。本次采集到的圖片935張,為了提高整體網(wǎng)絡的性能,增加識別精度,提高泛化能力,通過數(shù)據(jù)增強的辦法將原始圖片進行處理來擴充數(shù)據(jù)集。本文用來數(shù)據(jù)擴充的方法有3種:第一種方法包括鏡像對稱、翻轉、縮放、平移和隨機裁剪;第二種方法為添加噪聲,在擴充數(shù)據(jù)樣本的同時,也有效地提升了神經(jīng)網(wǎng)絡的學習能力;第三種方法為對比度變換。擴充之后部分數(shù)據(jù)集如圖2所示。
圖2 對原有圖片進行數(shù)據(jù)增強
在完成數(shù)據(jù)擴充之后,借助LableImg 標注工具進行數(shù)據(jù)集的標注,找出每張圖片中的感興趣區(qū)域(ROI),并用矩形框將其標注生成xml格式的文件,如圖3所示。將標注后的數(shù)據(jù)通過修改生成訓練所需的數(shù)據(jù)形式,其中包括類別,還有歸一化后的中心點橫坐標、縱坐標、寬、高。該研究運用的是和PASCAL VOC 2007 數(shù)據(jù)集一樣的結構,分為訓練集、測試集和驗證集。
圖3 標注數(shù)據(jù)集
本文實驗基于Ubuntu 18.04操作系統(tǒng),CPU 為Inte?li9-9900k,主頻為3.6 GHz,內(nèi)存32G,顯卡為NVIDIA Ge?Force GTX1080Ti,顯存為8 GB,深度學習框架為Dark?net-53,CUDA版本為10.0,CUDNN的版本為7.6.4。
本研究對包含尺寸大小為416×416 的5 000 張訓練集圖片、2 000張測試集圖片的托盤數(shù)據(jù)集進行訓練。在準備訓練之前將參數(shù)batch 設置為64,表示網(wǎng)絡積累64 個樣本進行一次正向傳播,將subdivisions設置為16,這樣64個樣本將會分為16 次完成正向傳播,每次4 個樣本數(shù)量。初始學習率設為0.001,動量系數(shù)設置為0.9,權重衰減率設為0.000 5,配置完訓練參數(shù)后隨即對模型進行訓練,當?shù)螖?shù)到達3 000次,學習率衰減為初始值的0.1 倍;當?shù)螖?shù)到達3 500次,學習率進一步衰減為初始值的0.01 倍。損失值隨著迭代次數(shù)變化的曲線如圖4所示。
圖4 損失值隨迭代次數(shù)變化曲線
可以看出,損失值隨著迭代次數(shù)的上升而逐漸降低,當?shù)螖?shù)小于2 000 時,損失值迅速下降,當?shù)螖?shù)達到8 000時,損失值逐漸趨于平穩(wěn)。檢測效果如圖5所示。
圖5 托盤識別效果
在目標檢測中,目前比較常用的目標檢測網(wǎng)絡包括Faster RCNN以及SSD,在基于本研究的數(shù)據(jù)集上,對Faster RCNN以及SSD網(wǎng)絡進行訓練與測試,對比分析各種算法的性能。如表1 所示,對比的內(nèi)容包括檢測速度、mAP 值、AP 值以及漏檢率,本文用IOU=0.5,也就是PASCAL VOC數(shù)據(jù)集常用的指標這一標準來作為準確性評估的方法,當IOU=0.7時,是實際工程應用中的標準。由表可以看出,本文的算法相較于YOLOv3在檢測速度上由45 幀/s 提升至47 幀/s,當IOU=0.5 時,mAP 由91.4%上升至94.6%,提高了3.2%,漏檢率由8.7%降至5.9%,降低了2.8%。由此可以看出本文使用K-Means++算法進行重新聚類以及改進的損失函數(shù),可以提高對托盤的檢測速度與檢測精度。
表1 不同網(wǎng)絡結構的測試性能對比
為了評估該模型對托盤孔的檢測效果,使用精確率(Pre?cision)和召回率(Recall)對模型進行評價。通過這兩個指標可以對模型的準確性進行評估。兩個指標的計算公式分別為:
式中:Precision 為托盤的精確率;TP 為一個正例被預測為正例,在這里表示的是正確檢測到的托盤樣本數(shù);FP為一個負例被預測為正例,表示的是檢測的誤差樣本數(shù);Recall為托盤的召回率;FN為一個實例被預測為負例,表示的是錯過檢測的托盤樣本數(shù)量。
不同網(wǎng)絡結構的測試對比如表2所示,由表中數(shù)據(jù)可以看出,本文改進的檢測算法在測試集上所得到的評價指標Preci?sion和Recall都要優(yōu)于未改進的YOLOv3,F(xiàn)aster RCNN和SSD。
表2 不同網(wǎng)絡結構的測試對比
為了解決倉儲環(huán)境中對托盤以及貨物的實時檢測,本文對原有的YOLOv3算法進行改進。為了提高對檢測物體的平均精度以及檢測速度,首先運用K-Means++算法重新聚類出更合適的Anchor Box,然后調(diào)整劃分網(wǎng)格機制,改進損失函數(shù)。并與其他算法在本文制作的數(shù)據(jù)集上進行測試,采用在不同IOU 情況下的mAP 值、AP 值、漏檢率以及檢測速度、Preci?sion和Recall來聯(lián)合評價本文算法與其他算法的性能。雖然本文算法在托盤實時檢測以及分類方面取得了令人滿意的結果,但其性能還有待進一步提高。