鮑 烈,王曼韜,劉江川,彭 珍,彭帥波
(四川農(nóng)業(yè)大學(xué) 信息工程學(xué)院/四川省農(nóng)業(yè)信息工程重點(diǎn)實(shí)驗(yàn)室,四川 雅安 625000)
白眼病、中耳炎、爛甲病是烏龜最常見(jiàn)的疾病,其中爛甲?。ㄓ址Q作腐甲?。┦瞧渖畲蟮耐{。爛甲病的主要病因是烏龜?shù)凝敿资艿侥p后,細(xì)菌的入侵,導(dǎo)致龜甲受到感染并腐爛。大多為機(jī)械性損傷,比如在野外捕捉時(shí)或運(yùn)輸?shù)倪^(guò)程中被硬物擦傷,或者是從高處跌落導(dǎo)致龜殼破損。爛甲病的傳染性極高,所以一旦有爛甲病的出現(xiàn),必須要有及時(shí)的防治措施,否則將會(huì)損失慘重[1],如何及時(shí)的發(fā)現(xiàn)患病烏龜是一個(gè)非常值得研究的課題。在深度學(xué)習(xí)發(fā)展起來(lái)之前,利用圖像處理對(duì)動(dòng)物疾病進(jìn)行檢測(cè)一般使用傳統(tǒng)機(jī)器學(xué)習(xí)算法,比如K最近鄰、支持向量機(jī)[2]、隨機(jī)森林[3]等分類算法,但這些方法精度不夠高且只能夠判斷出目標(biāo)是否患病,無(wú)法精確定位患病處。而隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,最近幾年日漸火熱且效果極佳的深度學(xué)習(xí)圖像處理技術(shù)也逐漸應(yīng)用于動(dòng)植物病癥識(shí)別[4-5]。在植物病蟲(chóng)害方面,王獻(xiàn)鋒等[6]提出一種基于環(huán)境信息和深度信念網(wǎng)絡(luò)的棉花病蟲(chóng)害預(yù)測(cè)模型,利用RBM(3層限制玻爾茲曼機(jī)網(wǎng)絡(luò))將環(huán)境信息數(shù)據(jù)轉(zhuǎn)換到與病蟲(chóng)害發(fā)生相關(guān)的新的特征空間,利用BP網(wǎng)絡(luò)對(duì)最后1層輸出的特征向量對(duì)近6年棉花的棉鈴蟲(chóng)、棉蚜蟲(chóng)、紅蜘蛛和黃萎病、枯萎病進(jìn)行預(yù)測(cè);張建華等[7]將病害棉花圖像從RGB顏色空間轉(zhuǎn)換到HSI和L*a*b*顏色空間,應(yīng)用Otsu算法對(duì)H分量、a*分量和b*分量進(jìn)行閾值分割,通過(guò)H+a*+b*分量與原始圖像的交集提取棉花病斑區(qū)域,利用顏色矩和灰度共生矩陣分別提取病斑的顏色和紋理特征,并結(jié)合粗糙集理論和BP神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)特征向量的優(yōu)選和棉花病害的識(shí)別。在人或動(dòng)物病癥識(shí)別方面,傅裕等[8]采用卷積神經(jīng)網(wǎng)絡(luò)遷移學(xué)習(xí)實(shí)現(xiàn)疾病類型的分類并針對(duì)小樣本量皮膚鏡圖像,結(jié)合皮膚學(xué)診斷原理和機(jī)器學(xué)習(xí)建模實(shí)現(xiàn)特定疾病類型診斷,針對(duì)有限樣本且復(fù)雜的皮膚組織病理圖像,運(yùn)用圖像分割和機(jī)器學(xué)習(xí)建模實(shí)現(xiàn)病理圖像自動(dòng)區(qū)域標(biāo)注;SHIN等[9]利用遷移學(xué)習(xí)[10]檢測(cè)CT圖像中的腹部淋巴結(jié),并且對(duì)CT圖像中間質(zhì)性肺病進(jìn)行分類;李航等[11]提出一種皮膚鏡圖像自動(dòng)評(píng)估的新框架,在大規(guī)模自然圖像數(shù)據(jù)集上預(yù)訓(xùn)練一個(gè)深度為152層的殘差神經(jīng)網(wǎng)絡(luò)(Res-152),用來(lái)提取皮膚病變圖像的深度卷積層特征,并對(duì)其使用均值池化得到特征向量,然后利用支持向量機(jī)(SVM)對(duì)提取的黑色素瘤特征進(jìn)行分類。SSD[12-13]、YOLO[14-15]和Faster R-CNN[16]是目前最具有代表性的目標(biāo)檢測(cè)框架且都適用,但兩步檢測(cè)器Faster RCNN速度較慢,參數(shù)量較大,YOLO作為一步檢測(cè)器,速度非常快,但犧牲了很多精度。由于爛甲病具有很強(qiáng)的傳染性,如果不能及時(shí)發(fā)現(xiàn),不僅水質(zhì)受到污染,還會(huì)造成烏龜大量死亡,所以本研究選擇以SSD作為檢測(cè)算法,在速度滿足需求的同時(shí)能夠保證較高的精度。SSD是一步檢測(cè)器中很具代表性的框架,近來(lái)對(duì)其的改進(jìn)層出不窮,例如:FSSD、DSSD、ESSD[17-19]等。本研究以烏龜作為研究對(duì)象,選取烏龜常見(jiàn)的白眼病、爛甲病、中耳炎3種病癥作為檢測(cè)病癥,并結(jié)合Focal Loss和精簡(jiǎn)的SSD檢測(cè)模型,識(shí)別烏龜?shù)某R?jiàn)病癥。輕量級(jí)的一步目標(biāo)檢測(cè)器SSD以VGG16為特征提取網(wǎng)絡(luò),對(duì)于300×300的輸入圖片,在VOC2007上可以達(dá)到74.3%的mAP,而對(duì)于512×512的輸入,可以達(dá)到76.9%的mAP,并且在速度上優(yōu)于Faster RCNN以及YOLO。它在COCO[20]數(shù)據(jù)集上的mAP甚至達(dá)到了基于候選區(qū)域的重量級(jí)框架Faster R-CNN,并且與此同時(shí)還保證了檢測(cè)速度,以59fps遙遙領(lǐng)先于Faster R-CNN,甚至比實(shí)時(shí)目標(biāo)檢測(cè)框架YOLO的21 fps更快。運(yùn)用深度學(xué)習(xí)目標(biāo)檢測(cè)技術(shù),設(shè)計(jì)更加實(shí)用、快速的算法,實(shí)現(xiàn)對(duì)烏龜3種常見(jiàn)病癥的快速檢測(cè)。
本研究把對(duì)烏龜常見(jiàn)疾病的檢測(cè)當(dāng)作三分類問(wèn)題處理,數(shù)據(jù)集的組成如表1,通過(guò)數(shù)據(jù)增廣來(lái)壯大數(shù)據(jù)集,增廣方式為隨機(jī)裁剪、隨機(jī)翻轉(zhuǎn)和鏡像。圖1為所檢測(cè)的烏龜?shù)?種常見(jiàn)病癥的部分樣本圖片。
本研究使用目標(biāo)檢測(cè)標(biāo)注工具labelImg進(jìn)行標(biāo)注,標(biāo)注一共分為3種類型,相對(duì)應(yīng)于烏龜?shù)?種常見(jiàn)病癥,3 類標(biāo)簽分別是:wed(白眼?。琤ad(爛甲?。?,OM(中耳炎)。
試驗(yàn)環(huán)境部署在64位的Windows10系統(tǒng),采用TensorFlow[21]深度學(xué)習(xí)框架,訓(xùn)練過(guò)程在 GTX1060 GPU上進(jìn)行,訓(xùn)練階段采用動(dòng)量為0.9的隨機(jī)梯度下降算法進(jìn)行優(yōu)化。共訓(xùn)練200000次,batch size設(shè)置為4,設(shè)置初始學(xué)習(xí)率為0.001,每5000次進(jìn)行學(xué)習(xí)率衰減,衰減系數(shù)為0.1。
表1 不同病癥的數(shù)據(jù)包含圖片數(shù)量Table 1 The number of turtle disease images
圖1 3種常見(jiàn)病癥圖像樣本Figure 1 Image samples of three common diseases
SSD(single shot multiBox detector)是當(dāng)前較為優(yōu)秀的目標(biāo)檢測(cè)算法,它結(jié)合YOLO的回歸思想以及Faster-RCNN中的Anchor boxes機(jī)制,加入RPN特征金字塔,能進(jìn)行多尺度目標(biāo)檢測(cè)。它需要圖像以及圖像中每個(gè)物體的ground truth作為其網(wǎng)絡(luò)的輸入,經(jīng)過(guò)卷積層提取特征,生成特征圖,不同尺寸的幾個(gè)特征圖的每一個(gè)位置都會(huì)生成不同縱橫比的默認(rèn)框。每個(gè)默認(rèn)框,對(duì)于所有的目標(biāo)類別都預(yù)測(cè)其偏移值以及置信度,然后將這些默認(rèn)框與ground truth進(jìn)行匹配,例如,對(duì)貓匹配兩個(gè)默認(rèn)框,對(duì)狗匹配一個(gè)默認(rèn)框。這3個(gè)框?yàn)檎龢颖荆渌麨樨?fù)樣本。預(yù)測(cè)時(shí),直接預(yù)測(cè)每個(gè)默認(rèn)框的偏移以及對(duì)每個(gè)類別相應(yīng)的得分,最后通過(guò)NMS(非極大值抑制)得到最終的結(jié)果。本研究簡(jiǎn)化其網(wǎng)絡(luò)結(jié)構(gòu)同時(shí)采用可分卷積,大大縮減了模型參數(shù)量。圖2是經(jīng)典SSD300與本研究所采用的精簡(jiǎn)SSD300網(wǎng)絡(luò)結(jié)構(gòu)的對(duì)比。
可分離卷積將標(biāo)準(zhǔn)卷積方式分解為兩步:深度卷積和點(diǎn)卷積[22]。深度卷積只對(duì)輸入的每個(gè)通道單獨(dú)地做卷積,點(diǎn)卷積則是對(duì)深度卷積的輸出進(jìn)行線性連接。假設(shè)輸入的特征圖維度是Di×Di×M,標(biāo)準(zhǔn)卷積核的維度是Dk×Dk×M,深度卷積核的維度為 Dk×Dk×1,點(diǎn)卷積核的維度為 1×1×M,輸出了 N 個(gè)維度為 Df×Df×M 的特征圖。所以可以得出可分離卷積的計(jì)算量與標(biāo)準(zhǔn)卷積的計(jì)算量之比為:
由式(1)可知,當(dāng)Dk取3時(shí),可以得到標(biāo)準(zhǔn)卷積的8到9倍的計(jì)算量縮減。圖3為標(biāo)準(zhǔn)卷積過(guò)程和可分卷積過(guò)程的對(duì)比(M,N為通道數(shù),D為卷積核的尺寸)。
在眾多的兩步檢測(cè)器以及一些一步檢測(cè)器中,大多都是按照經(jīng)驗(yàn)來(lái)設(shè)定anchor box的大小和比例 (比如Faster R-CNN),在訓(xùn)練的過(guò)程中網(wǎng)絡(luò)會(huì)調(diào)整anchor box的大小,但是如果能在訓(xùn)練開(kāi)始之前就能通過(guò)某些方式找到合適尺寸和縱橫比的anchor box,能夠幫助網(wǎng)絡(luò)更好的進(jìn)行預(yù)測(cè)。所以本研究利用k-means先對(duì)訓(xùn)練集的bounding boxes進(jìn)行聚類,從而在訓(xùn)練開(kāi)始之前就找到更加合適的anchor box。
但是如果采用標(biāo)準(zhǔn)的k-means(即用歐式距離來(lái)衡量差異),在box的尺寸比較大的時(shí)候其誤差也更大,為減少誤差與anchor box的相關(guān)性,結(jié)合IOU,用1減去bounding boxes與聚類中心的IOU分?jǐn)?shù)作為兩者之間的距離,即使用了以下的距離函數(shù):
本研究嘗試用 k=(0,1,2,3,4,5,6,7,8,9,10,11,12) 分別對(duì)數(shù)據(jù)集的 bounding boxes進(jìn)行聚類。由圖 4 可知,當(dāng)k<3時(shí)平均IOU漲幅很快,k>3時(shí)圖像越趨于平滑,再加上衡量召回率和模型復(fù)雜度之后,選擇k=3進(jìn)行聚類。
最終得出了最佳的3個(gè)默認(rèn)框的長(zhǎng)寬比,分別是(42.0∶21.0),(21.0∶23.0),(18.0∶38.0),取縱橫比為 2,1,1/2。 從常理上也可以理解,因?yàn)榘籽鄄『椭卸椎目蚨嗍钦叫蔚?,而腐甲病則形狀種類較多。圖5為默認(rèn)框的劃分。
圖2 經(jīng)典SSD300與精簡(jiǎn)SSD300網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比Figure 2 Comparison between the classic SSD300 and the simplified SSD300
圖3 標(biāo)準(zhǔn)卷積過(guò)程和可分卷積過(guò)程的對(duì)比Figure 3 Standard convolution and the separable convolution
目標(biāo)檢測(cè)的算法主要可以分為兩大類:two-stage detector和 one-stage detector。前者是指類似 Faster RCNN系列,RFCN[23]這樣需要region proposal的檢測(cè)算法,這類算法可以達(dá)到很高的準(zhǔn)確率,但是速度較慢。雖然可以通過(guò)減少proposal的數(shù)量或降低輸入圖像的分辨率等方式達(dá)到提速,但是速度并沒(méi)有質(zhì)的提升。后者是指類似YOLO,SSD這樣不需要region proposal,直接回歸的檢測(cè)算法,這類算法速度很快,但是準(zhǔn)確率不如前者,其原因是樣本的類別不均衡(負(fù)樣本數(shù)量太大,占了總LOSS的大部分且容易分類)。FocalLoss[24]能夠減少易分樣本的權(quán)重,讓網(wǎng)絡(luò)把更多的注意力放在錯(cuò)分(難分)的樣本上,這樣能極大地提高模型的能力。本研究運(yùn)用FocalLoss訓(xùn)練SSD檢測(cè)器,試驗(yàn)表明模型精度提升明顯。
圖4 默認(rèn)框聚類Figure 4 Bounding boxes clustering
圖5 默認(rèn)框示例Figure 5 Bounding boxes example
不同檢測(cè)模型與默認(rèn)框縱橫比的比較如表2(基于本研究數(shù)據(jù)集),圖6為不同模型的PR曲線圖。由表2可知,模型Ours-2將深度可分離卷積網(wǎng)絡(luò)作為基礎(chǔ)特征提取器,相比基于VGG16的SSD300目標(biāo)檢測(cè)框架,參數(shù)量減少531.3 MB,單張圖像檢測(cè)時(shí)間提高了4.11s。圖6a中模型Ours-2的PR曲線高于其他兩組模型,則模型Ours-2性能優(yōu)于Ours-1和Ours-3。圖6b是模型Ours-2與原SSD以及YOLO的PR曲線,可以看出,Ours-2與SSD的PR曲線相差不大,并且優(yōu)于YOLO,但Ours-2卻減少了大量的參數(shù)。這說(shuō)明,在烏龜病癥數(shù)據(jù)集上,特征提取網(wǎng)絡(luò)結(jié)構(gòu)的改變對(duì)精度并未造成較大的損失,但是速度上的提升卻是驚人的。
檢測(cè)結(jié)果如圖 7,其中 wed:white eye disease(白眼病),bad:bad nail disease(爛甲?。琌M:Otitis media(中耳炎)。由圖7可知,本模型能夠?qū)?種病癥檢測(cè)出來(lái),并且有較高的精確度。由表2可知,本模型比經(jīng)典的SSD300參數(shù)減少531.3MB,速度比SSD300快4.11s,雖然mAP和精度會(huì)有所下降,但是相比于速度的提升和計(jì)算量的降低,完全在可以接受的范圍。
表2 不同模型的比較Table 2 Comparison between different detection models
圖6 不同模型的PR曲線Figure 6 Precision-Recall curves of different models
本研究的創(chuàng)新點(diǎn)在于將深度學(xué)習(xí)技術(shù)應(yīng)用到了烏龜?shù)牟“Y識(shí)別上,并且精簡(jiǎn)SSD300網(wǎng)絡(luò)模型,使得其更加快速,更加實(shí)用,避免了計(jì)算資源的過(guò)多浪費(fèi)。存在的不足之處是在減少參數(shù)量的同時(shí)不可避免的降低了一定的精確度,這是可以通過(guò)繼續(xù)深入的研究來(lái)避免的,后續(xù)研究工作可以圍繞多尺度特征融合展開(kāi),并且可以結(jié)合當(dāng)前應(yīng)用火熱的細(xì)粒度分析,來(lái)達(dá)到提升模型精確度的目的。此外,本研究算法還可以嘗試應(yīng)用于其他類似的動(dòng)植物病癥。
本研究收集并制作針對(duì)于烏龜常見(jiàn)3種病癥 (白眼病、爛甲病、中耳炎)的目標(biāo)檢測(cè)數(shù)據(jù)集。不同于劉顏等[25]結(jié)合SSD檢測(cè)框架和Mobilenet輕量型網(wǎng)絡(luò)從而達(dá)到縮減模型訓(xùn)練時(shí)間的目的,以及鄧壯來(lái)等[26]刪減原SSD網(wǎng)絡(luò)結(jié)構(gòu),犧牲大量精度來(lái)達(dá)到縮減參數(shù)量,提高檢測(cè)速度的目的,本研究結(jié)合可分離卷積精簡(jiǎn)SSD模型的結(jié)構(gòu),節(jié)省運(yùn)算量和參數(shù)量,在保證精度的同時(shí)提高檢測(cè)速度。針對(duì)烏龜常見(jiàn)狀態(tài)的尺寸大小,通過(guò)聚類算法設(shè)計(jì)專門用于本研究的默認(rèn)框?qū)捀弑取=Y(jié)合retina_net中提出的Focal Loss,使得框架能夠減少易分樣本的權(quán)重,從而更加專注于難分樣本,提高模型的能力。本研究結(jié)果表明,相比于SSD300原模型,本研究模型參數(shù)減少531.3MB,速度提升4.11s,平均查準(zhǔn)率卻僅僅降低1.48%。這極大程度地提高了模型的檢測(cè)速度。
圖7 測(cè)試結(jié)果Figure 7 The result of test