徐曉濤,孫亞東,章 軍
安徽大學(xué) 電氣工程與自動化學(xué)院,合肥 230601
血細胞計數(shù)是血液檢驗的一項重要內(nèi)容,在生物醫(yī)學(xué)實驗、臨床醫(yī)學(xué)診斷等領(lǐng)域都起著重要的作用。如血涂片是目前臨床檢測上比較常見的一種方式,通過檢測患者血液標本中的白細胞、紅細胞、血小板等各項指標,同時觀察細胞數(shù)量的多少和形態(tài)的異常能夠準確地判斷出患者的疾病類型和發(fā)展程度,以便采取及時、有效的治療方案[1]。
由于大量細胞顯微圖像形態(tài)多樣并且背景復(fù)雜,使用圖像處理算法對算法細胞的自動識別和計數(shù)仍然是一個巨大的挑戰(zhàn)。目前的細胞檢測和計數(shù)方法主要為兩類:早期主要使用傳統(tǒng)圖像處理技術(shù),如基于霍夫變換的自動細胞識別技術(shù)[2-4]、基于距離變換的分水嶺方法[5]和基于閾值的方法[6-8]。通常基于閾值的分割算法將細胞作為單獨的區(qū)域分割開,易于實現(xiàn)且效率高,但當血細胞圖片包含大量重疊細胞時,容易造成邊界信息缺失和分割不完善。在實際細胞圖像檢測應(yīng)用中會面臨各種復(fù)雜的情況,使用傳統(tǒng)的圖像處理方法不能完全解決,特別在細胞重疊度高的區(qū)域其準確率上達不到要求。近年來,一些基于深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[9]等深度學(xué)習(xí)方法在分類、目標識別、語義分割等領(lǐng)域都獲得了成功的應(yīng)用,基于深度學(xué)習(xí)的目標檢測方法也已經(jīng)應(yīng)用于細胞檢測和計數(shù)中。該算法[10]主要分為兩大類:一類是兩階段算法,代表性算法為 R-CNN[11]、Fast R-CNN[12]、Faster R-CNN[13]以及Mask R-CNN[14]算法。兩階段算法通常其檢測精度較高,但需要耗費較長的計算時間。而另一類算法為一階段算法,代表性算法為YOLO[15]、SSD[16]和YOLO9000[17],這類算法能夠產(chǎn)生高質(zhì)量的候選框,需要的計算時間較少,同時也能獲得較好的識別精度。而實用的血細胞檢測算法需要部署在CPU甚至嵌入式系統(tǒng)上,因此需要采用一種具有較低計算復(fù)雜度,同時識別精度較高的算法。本文選擇了一階段算法中的YOLO框架,但由于血細胞圖像中需要檢測的都是小目標,而原始的YOLO框架對小目標檢測性能較差,本文基于YOLO框架做了改進,通過加入密集連接,盡可能地讓每一層的特征圖都能接受到前面所有層的輸出,并進行特征拼接(concatenate)來達到數(shù)據(jù)融合和特征復(fù)用,以增強YOLO算法對小目標的識別。通過血細胞數(shù)據(jù)集實驗驗證,和其他方法相比較,本文方法的檢測效果顯著提升。
在采集血細胞染色圖片中,會出現(xiàn)大量細胞粘連現(xiàn)象,這無疑增大了檢測的難度。本文選擇的基礎(chǔ)檢測網(wǎng)絡(luò)框架為YOLO算法,其運行速度優(yōu)于Faster R-CNN系列算法,但該算法對檢測小目標的物體精度較差。本文借鑒了DenseNet[18]網(wǎng)絡(luò)的思想,將該模型和YOLO模型結(jié)合,提出了一種YOLO-Dense網(wǎng)絡(luò),該網(wǎng)絡(luò)不僅在檢測精度上比原始的YOLO算法有所提高,同時在檢測速度上也明顯提升。
針對原始的YOLO網(wǎng)絡(luò)小目標檢測精度較低,本文網(wǎng)絡(luò)框架如圖1所示,其中引入Faster R-CNN中使用錨框(anchor boxes)[19]的思想,為了使網(wǎng)絡(luò)能夠檢測不同大小的物體,網(wǎng)絡(luò)會預(yù)先將每幅檢測圖片分成多塊,在網(wǎng)絡(luò)訓(xùn)練過程中會對每塊預(yù)測三個不同大小錨框,并根據(jù)錨框與真實目標的重疊區(qū)域置信度(錨框中包含一個物體的可信程度)來判斷最終的預(yù)測框。而預(yù)測錨框標定的大小使用訓(xùn)練數(shù)據(jù)中標定的邊框通過K-means算法聚類得到。同時在基礎(chǔ)網(wǎng)絡(luò)中,本文引入了殘差模塊和多尺度預(yù)測來提高對小目標的識別,同時通過跳層連接進行殘差訓(xùn)練以減小損失,比較有效地解決了深層網(wǎng)絡(luò)梯度彌散和爆炸等問題。在網(wǎng)絡(luò)的輸出層,原始YOLO網(wǎng)絡(luò)使用的Softmax分類器對兩類細胞同時存在于同個網(wǎng)格的情況無法正確識別與定位,因此本文對每個不同的細胞類別使用單獨的Logistic分類器預(yù)測每個錨框?qū)儆谔囟悇e的置信度,并用其取代原有Softmax分類器。

圖1 基礎(chǔ)網(wǎng)絡(luò)架構(gòu)
2017年Huang等提出了一種全新的網(wǎng)絡(luò)結(jié)構(gòu)DenseNet,該網(wǎng)絡(luò)結(jié)構(gòu)借鑒了ResNet[20]的思想。在保證特征信息在層與層之間最大程度傳輸?shù)那疤嵯拢瑢⒕W(wǎng)絡(luò)中所有層兩兩連接,使其網(wǎng)絡(luò)結(jié)構(gòu)更加緊密。
DenseNet為使特征圖在密集連接傳遞過程中保持尺寸統(tǒng)一,故將網(wǎng)絡(luò)結(jié)構(gòu)分為3個密集塊,每個密集塊的3×3卷積前面都包含了一個1×1的卷積操作,即瓶頸層(bottleneck layer),其作用是減少輸入的特征圖數(shù)量,起到了模型壓縮和加速的作用。連接相鄰密集塊結(jié)構(gòu)成為遷移層(transition layer),它由一個卷積層和一個最大池化層組成。如圖2所示。
由于DenseNet可以像殘差網(wǎng)絡(luò)一樣減輕梯度消失的情況,加強圖片不同層之間特征信息的傳遞,因而能更有效地利用圖片中提取的特征,同時模型采用的都是小卷積核,能夠進一步減少計算量。本文正是利用DenseNet中這些特點,引入密集模塊,使網(wǎng)絡(luò)可以更好地識別血細胞圖片中的不同種類細胞。

圖2 DenseNet網(wǎng)絡(luò)結(jié)構(gòu)示意圖
隨著深度卷積神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,必然會造成信息在傳遞的過程中丟失,不能很好地利用多層特征信息之間的相關(guān)性,導(dǎo)致檢測精度降低。為實現(xiàn)多層特征復(fù)用和融合,避免新增結(jié)構(gòu)帶來的計算復(fù)雜度,本文將網(wǎng)絡(luò)的63~74層替換為密集模塊,并增加一個卷積層,其卷積核數(shù)設(shè)置為1 024,將YOLO的基礎(chǔ)網(wǎng)絡(luò)和密集網(wǎng)絡(luò)結(jié)合,構(gòu)建一個YOLO-Dense網(wǎng)絡(luò)。更改的結(jié)構(gòu)能夠更有效地利用預(yù)測層中提取的特征,因而其檢測速度也比原始的YOLO要快。
網(wǎng)絡(luò)的密集模塊的具體結(jié)構(gòu)如圖3所示。在密集模塊中:

其中,x0為模塊輸入特征圖,xl表示第l層的輸出。[x0,x1,…,xl-1]表示對 x0,x1,…,xl-1的拼接。 Hl(?)為BN(Batch Normalization)、ReLU(Rectified Linear Units)及卷積的組合函數(shù),實現(xiàn)第l層非線性變換。

圖3 YOLO-Dense網(wǎng)絡(luò)密集模塊結(jié)構(gòu)示意圖
在YOLO中加入Dense模塊后,YOLO在小目標識別精度上有一定提高,但在血細胞的數(shù)據(jù)集中,白細胞相比血小板較大。與Faster R-CNN相比較,YOLO對較大目標白細胞檢測精度仍有較大的提升空間。因此,本文在Dense模塊的基礎(chǔ)上,引入特征金字塔網(wǎng)絡(luò)[21](Feature Pyramid Network,F(xiàn)PN)的思想對原YOLO的特征提取部分進一步做如下改進,如圖4所示。
本文將特征提取部分的輸出13×13×1 024與第61層輸出的26×26×512降采樣得到的特征拼接在一起。由于深層的特征語義信息比較豐富,但是目標位置不清晰;淺層的特征語義信息比較少,但目標位置精確,所以本文結(jié)合特征金字塔網(wǎng)絡(luò)思想,融合淺層和深層的輸出,讓網(wǎng)絡(luò)同時學(xué)習(xí)深層和淺層特征,以提高對目標的識別與檢測。隨后采用兩個1×1卷積核而不采用全連接的方式,其主要作用不改變特征圖的大小,減少了特征信息的丟失。
在卷積神經(jīng)網(wǎng)絡(luò)的前向傳播過程中,低層特征語義信息較少,但目標位置信息準確;高層特征語義信息較豐富,但目標位置信息較粗略。為了加強本文算法對小目標檢測的精確度,在網(wǎng)絡(luò)的特征交互部分借鑒特征金字塔的多尺度模塊原理,并針對血細胞識別中細胞形態(tài)學(xué)特點,把高層特征與低層特征進行自上而下的側(cè)邊連接,使得針對小目標檢測的的深層網(wǎng)絡(luò)特征同時具備豐富的語義信息和位置信息。
具體過程如圖5所示:把高層特征進行上采樣,然后將其和對應(yīng)的前一層特征輸出結(jié)合進而與低層特征進行融合。其中采樣模塊由1×1卷積+BN層+LeakyReLU+上采樣組成。在進行了兩次采樣以及特征融合后,在對小尺度目標的預(yù)測上,具有更加深層次的CNN網(wǎng)絡(luò)結(jié)構(gòu),并產(chǎn)生了較其他兩種尺度更為精細的特征圖。而且越細小的網(wǎng)格劃分對小目標的適應(yīng)能力越好,本文特征圖的大尺度分辨率更是達到52×52,極大提高了對小目標的識別。

圖4 YOLO-Dense中特征提取部分網(wǎng)絡(luò)(13×13)結(jié)構(gòu)示意圖

圖5 YOLO-Dense網(wǎng)絡(luò)示意圖
本文的實驗平臺配置為Intel?Xeon?CPU E3-1245 v3@3.40 GHz處理器,32 GB運行內(nèi)存,2 TB硬盤容量,12 GB GTX Titan X GPU,系統(tǒng)為Ubuntu 16.04。網(wǎng)絡(luò)在訓(xùn)練階段采用動量項為0.9的異步隨機梯度下降,每一個批次(batch)包含68張圖像,權(quán)值的初始學(xué)習(xí)率為0.01,衰減的系數(shù)設(shè)置為0.000 5。由于對比實驗中需要對不同改進結(jié)構(gòu)進行訓(xùn)練,其能達到最優(yōu)識別性能的迭代次數(shù)也不相同,因此本文訓(xùn)練時動態(tài)監(jiān)控,每1 000次迭代保存一次網(wǎng)絡(luò)的權(quán)重文件,以便選取其最佳權(quán)重文件,防止過擬合。
本文數(shù)據(jù)集是將采集到的血細胞圖片使用改良過的瑞特-吉姆薩雙重染色法[22]進行染色,得到了較為清晰的血細胞染色圖片,并在醫(yī)生的指導(dǎo)下進行專業(yè)的人工標注,最終得到800張640×480的顯微圖像,每張細胞圖片包括白細胞、紅細胞和血小板三類。對于處于圖片邊緣的局部細胞,如果面積小于整個細胞的30%則不對其進行標注,高度粘連的細胞(細胞重疊部分超過80%)只標注成一個細胞。實驗中,隨機選取700張圖片作為訓(xùn)練集,100張作為測試集,部分示例樣本如圖6所示。

圖6 示例細胞圖片及其對應(yīng)的標注
本文主要使用平均檢測精度mAP(mean Average Precision)作為識別性能的評估標準。檢測精度AP(Average Precision)指的是該類別的精確率(Precision)對該類別的召回率(Recall)的和,而mAP是對所有細胞類別取平均,下面給出精確度和召回率的定義:

以紅細胞為例,TP表示正確檢測出來的紅細胞,F(xiàn)P則為錯誤檢測出來的紅細胞,F(xiàn)N表示沒有被檢測出來的紅細胞。而Average Precision(AP)的計算公式為:

P、R分別為公式(2)和(3)中定義的精確率和召回率,Q為類別數(shù)。
本文涉及到細胞計數(shù),所以引入了兩個新的評價指標:漏檢個數(shù),即有多少細胞被漏檢;誤檢個數(shù),即有多少細胞被誤檢,通過這兩個指標,能夠更直觀地判斷模型的優(yōu)劣。
在深度學(xué)習(xí)中,訓(xùn)練樣本圖像的質(zhì)量以及多樣性,直接影響到CNN目標檢測精度。但由于血細胞圖片的采樣與獲取較為困難,所以目前數(shù)據(jù)集僅有800張圖片,缺少樣本多樣性,因此三種框架檢測結(jié)果均有待提高。
在該數(shù)據(jù)集中,由于細胞粘連的情況下細胞的信息損失嚴重,原YOLO網(wǎng)絡(luò)的漏檢較多,同時也有很多誤檢,而本文提出的YOLO-Dense模型則有較大的改進,檢測效果示例如圖7所示,改進后的YOLO-Dense模型漏檢和誤檢較少。

圖7 不同網(wǎng)絡(luò)結(jié)構(gòu)的檢測結(jié)果對比示意圖
在原始YOLO算法對細胞檢測識別率低的情況下,提出的最新改進后網(wǎng)絡(luò)結(jié)構(gòu)YOLO-Dense在8 000迭代時,模型得到其最優(yōu)性能。其中測試集檢測結(jié)果如表1、表2所示。

表1 三種目標檢測算法識別精度對比(AP)

表2 三種目標檢測算法綜合識別性能對比
實驗結(jié)果上可以看出,原始YOLO網(wǎng)絡(luò)的細胞的平均檢測精度最低,尤其是白細胞檢測精度僅為0.36。分析其原因主要是原始YOLO網(wǎng)絡(luò)直接將一幅圖像分成7×7個網(wǎng)格,對每個網(wǎng)格預(yù)測2個框,并且每個格子只預(yù)測出一個物體。而本文數(shù)據(jù)集中一個白細胞大約占整張圖片1/8,由于白細胞過大且數(shù)量較少,極易造成白細胞定位不準確的情況,所以原始YOLO算法很難正確檢測出白細胞數(shù)量。不僅如此,原始YOLO網(wǎng)絡(luò)由于對每個預(yù)測框只檢測為一個類,本數(shù)據(jù)集中紅細胞粘連情況較多,且血小板僅占整張圖片1/118。所以對相互靠得很近的紅細胞,以及過小的血小板檢測效果均不理想。
Faster R-CNN在大目標(白細胞)識別中精度最高,但平均識別精度只比原始的YOLO高。究其原因,F(xiàn)aster R-CNN與YOLO網(wǎng)絡(luò)最大不同是將回歸與分類分開進行,雖然在檢測精度上大幅提高,但檢測速度卻遠遠落后于其他兩種網(wǎng)絡(luò)框架。其次,F(xiàn)aster R-CNN引入anchor思想對特征圖的每一個位置預(yù)測9個等比例于原圖的長寬比以及面積比的錨框,大大提高了模型的位置預(yù)測能力。但由于Faster R-CNN未對錨框進行聚類分析,所以針對于PASCAL VOC數(shù)據(jù)集的錨框并不適用于本數(shù)據(jù)集特點,導(dǎo)致血小板檢測精度低。但相反白細胞更接近于PASCAL VOC數(shù)據(jù)集特點,且細胞清晰可辨,所以檢測精度才能達到0.94。
對于本文提出的YOLO-Dense網(wǎng)絡(luò),雖然在密集連接時網(wǎng)絡(luò)會顯得比較冗余,但并不會增加太多參數(shù)量和計算量,從而對檢測速度不會產(chǎn)生過多影響。特別是采用密集網(wǎng)絡(luò)連接的拼接方式,使得每層直接從損失函數(shù)中得到梯度和輸入信號,從而能夠訓(xùn)練更深的網(wǎng)絡(luò),進一步提高網(wǎng)絡(luò)的檢測精度同時減少檢測速度,提升網(wǎng)絡(luò)總體性能。本文也借鑒anchor的思想,對YOLO-Dense的多個尺度均預(yù)測3個錨框(即每個單元格預(yù)測3×3個錨框),使其與Faster R-CNN的錨框數(shù)持平,并且針對不同大小的目標設(shè)置不同尺度進行檢測,極大提高了檢測的精度。網(wǎng)絡(luò)輸出層使用了Logistic分類器取代原來所使用Softmax分類器,使得最終的檢測精度也提高了0.3。并且從表2中也可以看出,本文提出的網(wǎng)絡(luò)平均識別精度最高,誤檢個數(shù)和漏檢個數(shù)也最少,但檢測時間卻比Faster R-CNN快近10倍。
本文基于深度學(xué)習(xí)YOLO框架提出了一種改進的血細胞目標檢測方法。將DenseNet的密集連接思想融入到原YOLO網(wǎng)絡(luò)特征提取部分,實現(xiàn)了特征信息的高度融合和復(fù)用;同時運用特征金字塔的思想,將淺層信息與深層信息相融合,進一步提高特征信息的融合,提高細胞檢測精度。實驗表明該優(yōu)化模型檢測精度高、速度快、對模糊和粘連細胞檢測具有更強的魯棒性,均值平均精度達到了0.86,且檢測速度達24.9 ms,獲得了較好的檢測效果,實驗驗證該方法能夠用于血細胞自動檢測計數(shù)。