李鑫銘, 趙 磊, 邵寶民, 王 棟
(山東理工大學 計算機學院, 山東 淄博255000)
微生態(tài)下的菌種檢測是人體醫(yī)療學科的分支,研究發(fā)現(xiàn)人體內分泌物中存在超過200 種微生物,其中不乏致病菌,或出現(xiàn)某種菌類數(shù)量失衡從而致病情況。 目前國內普遍采用醫(yī)務人員肉眼進行顯微鏡下觀察分析的方式,診斷患者是否患病,此種方式效率低下,且易因視覺疲勞,出現(xiàn)誤診、漏診等現(xiàn)象。
對于目標檢測問題,當前可分為兩大類,傳統(tǒng)檢測算法諸如Rcnn,Fast-rcnn,Faster-rcnn[1-2]等一般分為3 個階段:(1)在給定圖像上選擇候選區(qū)域。(2)對區(qū)域進行特征提取。(3)使用分類器進行分類。 這類算法普遍耗時長,磁盤空間占用大,且算法冗余較多。 Yolo(包括Yolo,Yolov2,Yolov3[3-4])算法不同于上面幾種算法,此類算法將檢測問題作為回歸問題處理,即給定圖像后,直接在圖像多個位置上預測出這個位置的邊框以及目標類別。 因此,在檢測準確率大致相同的情況下,減少了提取候選區(qū)域等步驟的冗余計算,大大提高了檢測速度。
針對此類菌類檢測問題,熊應平、王阿川等人(2016)曾采用濾波,分水嶺算法對松楊柵銹菌孢子進行分割識別[5],但其檢測背景較為簡單,且檢測速度較慢。 鄭欣、田博、李晶晶(2018)等人曾采用Yolov2 模型對宮頸細胞簇團進行智能識別[6],但其正確率(判斷類/實際類)只能達到90%左右,檢出率(檢出數(shù)目/實際數(shù)目)也有83%左右。 廖欣、鄭欣、鄒娟(2018)等提出基于神經網絡集成模型的宮頸細胞病理計算機輔助診斷方法[7],但其時間效率差,不能滿足患者實時診斷的需求。 因此提出采用基于darknet-53 網絡模型的Yolov3 算法與傳統(tǒng)形態(tài)學相結合,實現(xiàn)智能識別各種致病菌類的解決辦法。
由于顯微鏡下菌種的多樣性,且背景極為復雜,干擾因素多。 尤其是在100 倍顯微鏡下,采集圖像時,由于焦點無法兼顧多個圖層,會出現(xiàn)景深問題,導致分層圖像模糊,本文采用了一種比較快捷的景深融合方法成功解決了此問題,又在yolov3 檢測基礎上加入傳統(tǒng)圖像處理方法,將整個檢測過程分為兩大部分,并取其交集。 在經過1 530 張圖片測試后,在保證單張圖片測試時間在300 ms 左右的情況下,其準確率達94.7%,檢出率達82.1%。 經臨床數(shù)據(jù)證明,資深醫(yī)務人員對試片進行人工篩選時,準確率在94%左右。 說明此算法效果可以達到實際使用的精度需求。
Yolov3 采用了錨點機預測來更高效的預測不同尺度與寬高比的物體邊界框。 YOLO3 為每種FPN預測特征圖(13*13,26*26,52*52)設定3 種錨點框,總共聚類出9 種尺寸的錨點框。 錨點的設計方式使用K-means 聚類,得到9 個聚類中心,將其按照大小均分給3 個尺度。 尺度1: 在基礎網絡之后添加一些卷積層,再輸出錨點框信息。 尺度2: 從尺度1 中的倒數(shù)第二層的卷積層上采樣(x2),再與最后一個16*16 大小的特征圖相加,再次通過多個卷積后輸出錨點框信息,相比尺度1 增大兩倍。尺度3: 與尺度2 類似,使用了32*32 大小的特征圖進行多個卷積輸出錨點框信息。
距離公式(1)定義如下:
Yolov3 在通過訓練后,對每個預選框預測4 個坐標值(tx,ty,tw,th)(其中tx,ty是預測的坐標偏移值,tw,th是尺度縮放), 其預測過程與Faster-rcnn類似。 可通過公式(2)~公式(5)計算得到:
其中, Gx、Gy、Gw、Gh為是目標真實框在feature map 的4 個坐標。 Pw,Ph是預設的錨點框在feature map 上的寬和高,預選框預測流程如圖1 所示。
圖1 預選框預測流程圖Fig. 1 Pre-selection box prediction flowchart
對于預測預選框的Cell(一幅圖劃分成S×S 個網格cell),可以對邊框按圖1 所示進行預測。
預測邊框時cx, cy為相對于左上角的位置,每個小格的長度為1,圖1 中此時cx=1,cy=1。 tx和ty分別經過sigmoid 函數(shù)處理,與cx, cy相加后得到預選框中心點bx,by。 tw,th分別與pw,ph作用后,最終得到預選框的寬和高bw,bh。 sigmod 函數(shù)公式(6):
除去預選框位置的四個值外,每個網格還會預測一個框內有無待測目標的置信度,以及N 個待檢測類的特定置信度。
預測有無待測置信度定義為公式(7):
其中,Pr(Object) ∈{0,1}.
此時,將每個網格預測的種類信息和預選框區(qū)域預測的置信度信息相乘,得到每個預選框區(qū)域的特定類型置信度,公式(8):
等式左邊第一項是每個網格預測的類別信息,第二、三項是每個預選框預測的置信度。 這個乘積即代表了預測的區(qū)域屬于某一類的概率,也有該區(qū)域準確度的信息。
關于損失函數(shù),Yolov3 使用均方和差作為loss函數(shù),由三部分組成:坐標誤差、IOU 誤差(預選框與實際框的交并比)、和分類誤差,公式(9)。
對于每種loss 的貢獻率,Yolo 給coordErr 設置權重λcoord= 5。 在計算IOU 誤差時,YOLO 使用λnoobj= 0.5 以修正IOUErr。 采用了將物體大小的信息項(寬和高)進行求平方根的方法來改進對于大物體誤差對檢測的影響應小于小物體誤差對檢測的影響問題。
綜上,Yolo 在訓練過程中Loss 計算如公式(10)所示:
注:公式中1-2 行為對預測中心以及預測邊框寬高做損失,第3-4 行分別為預測類別,第5 行為對預測置信度做損失。
在檢測問題中,傳統(tǒng)圖像處理技術應用較少。目前多種深度學習檢測算法更多注重于圖像深層特征的提取與分類,而忽略了圖像直觀的內容。 因此,在利用深度學習檢測算法的同時,輔以形態(tài)學的條件進一步篩選,可以有效提高檢測精度。 傳統(tǒng)圖像處理方法具有運算速度快,圖像操作較為直觀等優(yōu)點,尤為適合醫(yī)學范圍內的實時檢測,其缺點是精度較差。 而形態(tài)學與Yolov3 算法相結合,在保留時間效率的同時極大的提高了檢測精度。 針對孢子這種致病菌的檢測,本文提出以加入濾波,灰度化,自適應閾值劃分,輪廓提取等傳統(tǒng)圖像方法[10],并針對孢子形狀對其進行橢圓擬合,來對Yolov3 算法篩選出來的疑似區(qū)域進行再確定。
根據(jù)得到的圖片特性,首先進行灰度化,自適應閾值劃分,圖像銳化等操作,采用Canny 算子對其進行輪廓查找。 針對孢子的形狀,采用了基于最小二乘法橢圓擬合[11-12]的辦法來對孢子進行準確檢測。
已知橢圓方程
對于公式(11),方程中有5 個未知數(shù)分別為A,B,C,D,E,則最少需要采樣點為5,對采樣點進行橢圓非標準方程擬合可得
其中,N 表示采樣點個數(shù)。 經過多次測試并結合孢子圖像在圖片中的像素大小,其輪廓上的擬合點定為35-38 時,擬合效果最好。
本文所用訓練圖像數(shù)據(jù)集與測試集均為患者真實病例試片在100 倍顯微鏡下采集的,含有致病菌的視野,采集像素大小為1600*1200(后歸一化為608*608)。 得到清晰圖像如圖2 所示。
圖2 清晰孢子菌絲圖像Fig. 2 Clear spore hyphae image
其中,深色橢圓狀細菌為孢子,深色長條形細菌為菌絲。 得到清晰的圖像后,再由專業(yè)醫(yī)務人員對圖像進行標注。
標注好的圖像如圖3 所示:
實驗基本流程為:選取部分待測圖像(目前為50 000 張),在待測圖像中將識別目標做好標注,將其組成訓練集放入網絡訓練,得到模型。 再將要識別的圖像(圖像大小為1600*1200,共1 530 張)放入測試程序,調用訓練好的模型進行測試,得到模型初篩結果,并在原圖中標出。 對該疑似區(qū)域進行形態(tài)學的判斷,最終通過取交集的方法得到較為準確的識別結果。 實驗流程如圖4 所示。
(1)基于darknet 框架下yolov3 模型的初篩。測試過程:經過模型訓練后,將待測圖像導入進模型網絡,得到每個區(qū)域的特定類型置信度,設置閾值,濾掉得分低的區(qū)域,對保留的區(qū)域進行NMS(Non-Maximum Suppression,非極大值抑制)處理[13],得到Yolov3 的檢測結果。
(2)基于圖像形態(tài)學處理。 基于圖像形態(tài)學處理與識別的流程如圖5 所示。
圖5 形態(tài)學處理與識別流程Fig. 5 Morphological processing and identification flow
得到清晰的Yolov3 算法篩選過的疑似區(qū)域之后,對圖像進行邊緣增強及銳化。 再根據(jù)孢子的色值做灰度化以及二值化分割,將孢子與淺色背景分割開來,通過Canny 算子對其進行輪廓提取。 得到清晰輪廓后,在輪廓上隨機取點進行橢圓擬合,若擬合橢圓區(qū)域與二值化后孢子所在擬合橢圓的區(qū)域重疊部分超過95%以上,則可以大致判斷此區(qū)域內的形狀大致為橢圓。 即該物體符合孢子的形狀特點,可將其判定為孢子。 圖6 為桿菌做擬合情況,圖7為孢子擬合情況。
圖6 桿菌橢圓擬合Fig. 6 Bacterial ellipse fitting
圖7 孢子橢圓擬合Fig. 7 Spore ellipse fitting
由圖6,圖7 可以看到,桿菌形狀特征并不滿足篩選條件,可以輕松被篩選掉。 而細胞核較孢子大小要大,孢子在1600*1200 大小的圖片上時,一般最小為45*45,且其長寬比近似1 ∶1,而細胞核大小一般最大為20*30,長寬比接近1 ∶1.5。 因此,此時將大小閾值設為30*30,長寬比1 ∶1.3 時可以通過輪廓的旋轉矩形大小有效篩選掉細胞核與桿菌。
為驗證算法性能,只以孢子識別為例,在上文自制測試集中進行了測試(置信度閾值設置為75%,高于此閾值時標出)。 包括本綜合算法的時間性能,準確率(判斷正確總數(shù)/進行判斷總數(shù))與單純形態(tài)學算法,深度學習Faster-RCNN,SSD[14],Yolov2等算法在GPU 運行環(huán)境性能對比如表1 所示。
表1 孢子識別方法性能對比表Tab. 1 Spore identification method performance comparison table
由上表1 可見,單純采用圖像形態(tài)學進行孢子檢測時,在GPU 環(huán)境下檢測速度可達148 p/s-1,但其準確率非常差,難以適應微生態(tài)中復雜的背景圖像,在1 530 張測試圖片中只有69.91%的準確率,召回率(檢測出目標數(shù)目/所含目標總數(shù))只有65.77%。而基于深度學習的Fast-rcnn 與Fasterrcnn,SSD,Yolov3 等算法采用卷積加權提取特征,并用不同分類器對其進行分類識別的方法較傳統(tǒng)識別方法提升較大,具有一定可行性。 但Fast-rcnn,Faster-rcnn 等算法作為傳統(tǒng)two-stage 檢測算法,在GPU 環(huán)境下檢測速度分別只有0.61 p/s-1,8.36 p/s-1。關于準確率,Faster-rcnn 雖然可以達到87%,較Fast-rcnn提升較大,但是也只有87.31%的準確率與85.11%的召回率。 而作為檢測速度較快的SSD 與Yolov2 兩種算法,其速度分別可達31.33 p/s-1與94.43 p/s-1。雖然這兩種算法檢測速度較快,但其精度仍較實際需求差距很大。 Yolov3 在檢測速度與精度上都較上述算法有很大提升,但并不能滿足在實際臨床醫(yī)學中的精度與效率需求。 圖8 為采用Yolov2,Faster-rcnn,與本文算法對同一張圖的識別情況對比。
圖8 算法效果對比圖Fig. 8 Comparison of algorithm effects
由圖8 可以看出:精度方面,Yolov2 無論檢出率與召回率都遠不及后面兩種算法,而Faster-rcnn 在實際測試時雖然檢測精度稍高,但是存在將細胞核誤檢的情況。 而本文算法則不存在此類情況,魯棒性很強。 因此,本文提出的Yolov3 與傳統(tǒng)圖像處理方式相結合的方法,不僅檢測速度與Yolov3 相近,其準確率更是大大提升,完全可以達到實際臨床檢測的需求。
本文提出了一種將傳統(tǒng)圖像處理方法與深度學習算法Yolov3 相結合,應用于臨床醫(yī)學檢驗微生態(tài)下孢子等致病菌的方法。 針對孢子等致病菌識別的問題,采用了Darknet-53 作為特征提取網絡,并利用Yolov3 算法進行疑似區(qū)域初篩,提取疑似區(qū)域,再利用孢子菌絲等菌類的形態(tài)學特點進一步篩選,從而去除桿菌堆簇、細胞核、雜質等造成的誤檢。 針對孢子識別精度可達94%以上,召回率82%以上。對于數(shù)據(jù)的前期處理階段,針對顯微鏡圖像出現(xiàn)的景深問題,提出了一種簡單的分割拼接方法,從而得到了高質量的訓練數(shù)據(jù)集,使模型訓練精度大大提升。 但是此算法還存在一定的缺陷,在召回率上,跟Faster-rcnn 與Yolov3 有些差距,主要是因為篩選過程中條件增多后一些不規(guī)則目標被篩除了,識別出來的多為典型目標,在此問題上還需要繼續(xù)深入研究,目前暫定兩種解決方法來提高召回率。 第一種就是不斷增加訓練數(shù)據(jù),目前50000 條訓練數(shù)據(jù)還是偏少,需要標注人員不斷進行標注工作來擴充;第二種就是針對待測圖像修改網絡框架,適當減少或增加特征提取網絡層數(shù)以及修改相關參數(shù),通過不斷實驗繼續(xù)改進識別結果。