王嘉良,羅健旭,劉 斌,馮 瑞,鄒海東
1.華東理工大學(xué) 信息科學(xué)與工程學(xué)院,上海200237
2.上海無(wú)線電設(shè)備研究所,上海200000
3.復(fù)旦大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,上海200433
4.上海市眼科醫(yī)院,上海200040
糖尿病眼底病變(Diabetic Retinopathy,DR)是一種由糖尿病引起的視網(wǎng)膜微血管損傷的并發(fā)癥,患者若沒(méi)有及時(shí)救治,會(huì)導(dǎo)致視力嚴(yán)重下降或失明。根據(jù)國(guó)際標(biāo)準(zhǔn),通常將糖尿病眼底病變的嚴(yán)重程度分為五級(jí)[1]:健康、輕度、中度、重度、增殖。健康,視網(wǎng)膜完全正常;輕度,有少量的微血管瘤出現(xiàn),但是不影響視力;中度,眼底開(kāi)始出現(xiàn)少量的出血點(diǎn),視力會(huì)受到輕微影響;重度,眼底大量出血,視力嚴(yán)重下降,但是還沒(méi)有新生血管增殖;增殖,出現(xiàn)玻璃體出血,有新生血管增殖,患者可能會(huì)失明。本文的自動(dòng)診斷系統(tǒng)分級(jí)也按如上的五級(jí)標(biāo)準(zhǔn)進(jìn)行。
近年來(lái),使用圖像算法對(duì)眼底圖像進(jìn)行識(shí)別的研究越來(lái)越多[2-5]。隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)在糖尿病眼底圖像的分類上也得到了較多的應(yīng)用[6-8]。然而,這些研究均只能實(shí)現(xiàn)DR分類,未能對(duì)病變區(qū)域進(jìn)行檢測(cè),即精確框選出病變區(qū)域的位置。
另外普通的卷積神經(jīng)網(wǎng)絡(luò)用于實(shí)際場(chǎng)景的眼底圖片識(shí)別也面臨著如下的問(wèn)題:
(1)卷積神經(jīng)網(wǎng)絡(luò)的輸入圖像尺寸必須是固定的,然而現(xiàn)實(shí)中往往面臨著不同款式的眼底相機(jī)拍出的圖像格式尺寸不同的問(wèn)題。
(2)醫(yī)院中的實(shí)際圖像不像公共數(shù)據(jù)集那樣整潔,可能有病人的名字或身份id或日期打印在圖像上。
針對(duì)上述問(wèn)題,本文提出了基于R-FCN(Regionbased Fully Convolutional Networks)算法的糖尿病眼底病變自動(dòng)診斷。R-FCN算法[9]是基于區(qū)域的目標(biāo)檢測(cè)卷積神經(jīng)網(wǎng)絡(luò)算法,能同時(shí)實(shí)現(xiàn)分類和對(duì)目標(biāo)的邊框回歸任務(wù)。并且R-FCN算法可以接受任意尺寸的輸入,不受背景雜質(zhì)(打印在圖像上的無(wú)關(guān)文字)影響。
本文實(shí)現(xiàn)的病變區(qū)域檢測(cè)主要有如下三種:微血管瘤、眼底出血、玻璃體出血。微血管瘤常見(jiàn)于輕度患者,是指眼底上的小血斑,是非常小非常難發(fā)現(xiàn)的目標(biāo);眼底出血常見(jiàn)于中度以上的患者,是由毛細(xì)血管內(nèi)膜損傷導(dǎo)致,雖比微血管瘤大,但也較小,不易檢測(cè);玻璃體出血,是指玻璃體上的血液滲出或積血,很容易檢測(cè)到,常見(jiàn)于增殖階段。
原始R-FCN算法由于只有下采樣通道,即只用主干網(wǎng)絡(luò)提取特征的最后一層卷積特征圖作為RoI(Region of Interests)池化層和RPN(Region Proposal Network)網(wǎng)絡(luò)的輸入,其卷積特征圖的尺寸因多次最大池化而變小,導(dǎo)致對(duì)小目標(biāo)的檢測(cè)性能降低。由于對(duì)病變區(qū)域的檢測(cè)是以小目標(biāo)為主,本文對(duì)原始R-FCN算法進(jìn)行了一定的改進(jìn),加入了特征金字塔網(wǎng)絡(luò)(Feature Pyramid etworks,F(xiàn)PN)結(jié)構(gòu)[10],使主干網(wǎng)絡(luò)擁有上采樣和下采樣兩個(gè)分支,修改了RPN網(wǎng)絡(luò),升級(jí)主干網(wǎng)絡(luò)為ResNeXt[11],增大RoI池化層的輸出尺寸。改進(jìn)后的R-FCN算法能準(zhǔn)確地實(shí)現(xiàn)病變程度的分級(jí)和病變區(qū)域的定位。
R-FCN算法是深度學(xué)習(xí)目標(biāo)檢測(cè)R-CNN系列中的成員,實(shí)現(xiàn)在一張圖片上找出多個(gè)目標(biāo),并對(duì)目標(biāo)精確分類和對(duì)目標(biāo)位置框的精確回歸。它的前代算法主要有R-CNN[12-13]算法、Fast R-CNN[14]算法和Faster R-CNN[15]算法。R-FCN算法是當(dāng)前主流目標(biāo)檢測(cè)算法Faster R-CNN的延伸。
如圖1所示,R-FCN原型主要由以下幾部分組成:(1)輸入;(2)提取特征的主干網(wǎng)絡(luò)ResNet[16](Residual Networks);(3)RPN網(wǎng)絡(luò);(4)RoI池化層;(5)非極大值抑制[17](Non Maximum Suppression,NMS)。
圖1 原始R-FCN結(jié)構(gòu)圖
原型R-FCN算法默認(rèn)使用ResNet-101的全卷積神經(jīng)網(wǎng)絡(luò)[18]進(jìn)行提取特征,去除ResNet-101原本的全連接層,保留100層卷積進(jìn)行下采樣,最后輸出的卷積特征圖分別送入RPN網(wǎng)絡(luò)和RoI池化層。RPN網(wǎng)絡(luò),即區(qū)域建議網(wǎng)絡(luò),其功能是區(qū)分前景和背景,尋找目標(biāo)的大概位置,輸出目標(biāo)候選框。然后,RPN輸出的目標(biāo)候選框和主干網(wǎng)絡(luò)的卷積特征圖同時(shí)作為RoI池化層的輸入,生成位置敏感分?jǐn)?shù)圖(Position Sensitive Score Maps)以及位置敏感分?jǐn)?shù)圖上的RoI區(qū)域,池化后連接一個(gè)softmax分類層和邊框回歸層,對(duì)目標(biāo)進(jìn)行精確分類和邊框回歸。最后,使用NMS去除重疊度IoU較大的目標(biāo)框,輸出最終結(jié)果。
改進(jìn)的R-FCN算法結(jié)構(gòu)圖如圖2所示。改進(jìn)算法加入了FPN結(jié)構(gòu),升級(jí)ResNet為ResNeXt;RPN網(wǎng)絡(luò)由單個(gè)改為5個(gè)RPN網(wǎng)絡(luò);主干網(wǎng)絡(luò)到RPN網(wǎng)絡(luò)從單通道改為5通道,到RoI池化層的輸入變?yōu)?通道,位置敏感池化的輸出尺寸從3×3增加到8×8。
圖2 改進(jìn)R-FCN結(jié)構(gòu)圖
沒(méi)有FPN結(jié)構(gòu)的目標(biāo)檢測(cè)算法有如下缺陷:低層的卷積特征圖語(yǔ)義信息稀疏,但是目標(biāo)位置信息精確(特征圖分辨率大);高層的卷積特征圖語(yǔ)義信息豐富,但是目標(biāo)位置信息粗糙(特征圖分辨率?。?。原始R-FCN算法只使用高層的卷積特征圖,不使用低層的卷積特征圖,會(huì)導(dǎo)致小目標(biāo)定位粗糙。檢測(cè)小目標(biāo)需要精確的位置信息,加入FPN結(jié)構(gòu)可以有效地解決上述問(wèn)題。
如圖3所示,F(xiàn)PN結(jié)構(gòu)添加了一個(gè)上采樣分支,分別使用5個(gè)不同分辨率的卷積特征圖構(gòu)建了下采樣的特征金字塔和上采樣的特征金字塔。特征金字塔之間互相用1×1卷積連接,融合高層特征圖的語(yǔ)義信息與低層特征圖的語(yǔ)義信息。例如,圖中特征圖P2等于特征圖P3與C2的1×1卷積特征圖的相加之和。將特征圖P2到P6進(jìn)行3×3卷積得到特征圖P2'到P6',特征圖P2'到P6'送入RPN網(wǎng)絡(luò),特征圖P2'到P5'送入到RoI池化層。低層的P2特征圖分辨率較大,對(duì)小目標(biāo)的位置信息很精確,同時(shí)P2也融入了高層卷積特征圖的語(yǔ)義信息,使得P2目標(biāo)分類信息也和高層特征圖一樣豐富。
圖3 融入特征金字塔結(jié)構(gòu)的主干網(wǎng)絡(luò)結(jié)構(gòu)圖
ResNeXt是ResNet的改進(jìn)版。以往的卷積神經(jīng)網(wǎng)絡(luò)都是通過(guò)增加模型的深度與寬度,這樣做的代價(jià)往往是參數(shù)與計(jì)算量的增加。ResNeXt提出了基數(shù)(Cardinality)的概念,將殘差網(wǎng)絡(luò)的殘差塊中的單分支的殘差變換過(guò)程,變?yōu)槎喾种У臍埐钭儞Q過(guò)程。單個(gè)殘差塊結(jié)構(gòu)如圖4所示。
ResNeXt實(shí)現(xiàn)了在不增加算法復(fù)雜度的情況下,提高算法的精度。本文的主干網(wǎng)絡(luò)使用ResNeXt-101,基數(shù)為32。
原始R-FCN的RPN網(wǎng)絡(luò)的作用是盡可能地生成包含目標(biāo)的候選框。在輸入的卷積特征圖上,以一個(gè)3×3的滑動(dòng)窗口進(jìn)行卷積操作,然后分別連接分類層和Anchor生成層。分類層是二分類,區(qū)分目標(biāo)和背景;Anchor生成層,滑動(dòng)窗口每滑動(dòng)1次,產(chǎn)生9個(gè)Anchors,面積為1282、2562、5122和長(zhǎng)寬比為1∶2、2∶1、1∶1的9個(gè)矩形框,經(jīng)過(guò)邊框精修后,變?yōu)槟繕?biāo)候選框。
圖4 ResNeXt殘差塊結(jié)構(gòu)圖
為了適應(yīng)FPN的多尺度特征圖輸出,RPN的數(shù)量增加為5個(gè),每個(gè)RPN產(chǎn)生一種面積下3個(gè)長(zhǎng)寬比的3個(gè)Anchor,5個(gè)RPN對(duì)應(yīng)的面積分別為162、322、642、1282、2562。產(chǎn)生小面積Anchor的RPN善于檢測(cè)小目標(biāo),產(chǎn)生大面積Anchor的RPN善于檢測(cè)大目標(biāo)。最后,Proposal-Layer將5個(gè)RPN輸出的結(jié)果合并。
本文RoI池化層的結(jié)構(gòu)與原型R-FCN基本相同,其結(jié)構(gòu)圖如圖5所示。先將輸入的卷積特征圖經(jīng)過(guò)1×1卷積處理成K2(C+1)通道數(shù)的特征圖,即位置敏感分?jǐn)?shù)圖。K是設(shè)定的值,原型R-FCN取3;C是指目標(biāo)的類別總數(shù),例如本文糖尿病的分級(jí)有5個(gè)等級(jí),則C=5,后者的+1是指背景類,即不屬于任何需要識(shí)別的類別,例如眼底圖片上的文字。在特征圖框出RoI區(qū)域(RPN得到的目標(biāo)候選框),把RoI區(qū)域分割成3×3的網(wǎng)格。對(duì)每一個(gè)網(wǎng)格的池化是分開(kāi)進(jìn)行且位置相關(guān)的,例如RoI左上角區(qū)域(標(biāo)記1號(hào)),只在深藍(lán)色塊的左上角區(qū)域進(jìn)行池化;RoI右邊中間區(qū)域(標(biāo)記6號(hào)),只在黃色塊的右邊中間區(qū)域進(jìn)行池化。最后,生成得到K2(C+1)的三維矩陣,經(jīng)過(guò)均值池化后,送入softmax層進(jìn)行最后分類。
圖5 位置敏感RoI池化
本文為提高算法的精度將K值提高到8,即位置敏感池化的輸出增大到8×8。
原型R-FCN算法使用Caffe作為深度學(xué)習(xí)的構(gòu)建平臺(tái),本文使用Tensorflow作為深度學(xué)習(xí)的構(gòu)建平臺(tái)重寫算法。
糖尿病自動(dòng)分級(jí)和病變區(qū)域診斷系統(tǒng)在如下的硬件環(huán)境下進(jìn)行。CPU為E5-2620V4,GPU為GTXTitanXp。軟件環(huán)境為L(zhǎng)inux-Ubuntu18.04,Cuda9.0,Cudnn7.1。編程語(yǔ)言為C++、Python、CUDA。如圖6所示,前端界面是以B/S架構(gòu)的PHP網(wǎng)站實(shí)現(xiàn),醫(yī)生可以通過(guò)訪問(wèn)網(wǎng)站上傳需要識(shí)別的眼底圖片。然后,網(wǎng)站主機(jī)對(duì)GPU設(shè)備操作,使用GPU異構(gòu)計(jì)算程序進(jìn)行糖尿病眼底快速輔助診斷。
圖6 糖尿病智能輔助診斷系統(tǒng)實(shí)現(xiàn)
分級(jí)和病變區(qū)域的檢測(cè)分別在兩個(gè)模型上進(jìn)行,兩者的預(yù)測(cè)結(jié)果會(huì)在可視化時(shí)進(jìn)行合成,同時(shí)顯示眼底圖片的結(jié)果和眼底病變區(qū)域的定位。
本文訓(xùn)練和測(cè)試的私有數(shù)據(jù)集從某眼科醫(yī)院采集而來(lái)。圖片有13種尺寸,以1 956×1 934居多,其余有2 592×1 944和3 058×3 000等。數(shù)據(jù)集格式為目標(biāo)檢測(cè)最常用的PASCAL-VOC[19],記錄每個(gè)需要識(shí)別目標(biāo)的類別和坐標(biāo)框信息。
學(xué)習(xí)率初值是0.000 1,在前1 000次迭代線性增加到0.001,然后第1 000~80 000次迭代保持學(xué)習(xí)率0.001不變,第80 000~160 000次迭代學(xué)習(xí)率為恒定值0.000 1,第160 000~240 000次迭代學(xué)習(xí)率為恒定值0.000 01。
基于改進(jìn)的R-FCN算法分別對(duì)分級(jí)和病變區(qū)域檢測(cè)進(jìn)行測(cè)試。
使用某眼科醫(yī)院采集的眼底圖片分級(jí)數(shù)據(jù)集中的4 807張眼底圖片作為訓(xùn)練集,3 998張眼底圖片作為測(cè)試集。糖尿病的五級(jí)分別被標(biāo)注為dr0、dr1、dr2、dr3、dr4,即健康、輕度、中度、重度和增殖。分別用改進(jìn)的R-FCN算法、原始R-FCN算法、Faster R-CNN和VGG-16[20]進(jìn)行分級(jí)結(jié)果的比較。
由表1和表2可以看出,改進(jìn)R-FCN比原始R-FCN在五分類精度上有所提升,從91.82%提升到92.92%,但是由于增加了FPN,導(dǎo)致計(jì)算量增加,對(duì)于醫(yī)生而言精度優(yōu)于速度,計(jì)算速度降低的副作用還在接受范圍內(nèi)。Faster R-CNN略次于R-FCN。對(duì)于非目標(biāo)檢測(cè)的純分類VGG-16表現(xiàn)較差,由于沒(méi)有預(yù)處理和裁剪圖像,純分類的CNN模型難以適應(yīng)任意尺寸或沒(méi)有切除背景的輸入圖像,不能對(duì)未知尺寸的圖片正確預(yù)測(cè),除非CNN對(duì)測(cè)試數(shù)據(jù)集中的圖片尺度進(jìn)行多尺度訓(xùn)練。即使在純分類的任務(wù)上,目標(biāo)檢測(cè)算法也能很好地勝任。
表1 分級(jí)模型正確率比較
表2 分級(jí)模型ROC比較
如表3所示,本文改進(jìn)的R-FCN算法在公開(kāi)Messidor數(shù)據(jù)集上也有較好的表現(xiàn),并與文獻(xiàn)[21]與文獻(xiàn)[22]的結(jié)果進(jìn)行比較,實(shí)現(xiàn)了高靈敏度和高特異度。靈敏度和特異度分別統(tǒng)計(jì)漏診率和誤診率,靈敏度和特異度越高,漏診率和誤診率越小。
表3 Messidor數(shù)據(jù)集ROC比較
需要檢測(cè)的病變類型有微血管瘤、眼底出血和玻璃體出血。使用450張病人標(biāo)注圖片作為訓(xùn)練集,200張病人和正常人混合圖片作為測(cè)試集。由于訓(xùn)練集較小,使用了數(shù)據(jù)增強(qiáng)技術(shù),訓(xùn)練算法時(shí)隨機(jī)旋轉(zhuǎn)和翻轉(zhuǎn)圖片來(lái)擴(kuò)充訓(xùn)練集。擴(kuò)充方法為旋轉(zhuǎn)90°、180°、270°,以及上下翻轉(zhuǎn)和水平翻轉(zhuǎn)。本文使用目標(biāo)檢測(cè)最常用的PASCAL-VOCAP(%)評(píng)估標(biāo)準(zhǔn)來(lái)評(píng)價(jià)區(qū)域定位的準(zhǔn)確度。每一個(gè)類都有對(duì)應(yīng)的AP值,其多類平均AP為mAP(mean Average Precision)。
mAP是計(jì)算機(jī)視覺(jué)目標(biāo)檢測(cè)領(lǐng)域,統(tǒng)計(jì)算法的目標(biāo)分類和邊框回歸精度的一個(gè)常用標(biāo)準(zhǔn)。AP值越大,表示算法對(duì)目標(biāo)分類更準(zhǔn)確,邊框回歸更精準(zhǔn),漏報(bào)越少,誤報(bào)越少。
從表4的結(jié)果可以看出,目標(biāo)檢測(cè)類的算法對(duì)于病變區(qū)域的檢測(cè)很有效。改進(jìn)后的R-FCN在小目標(biāo)檢測(cè)(微血管瘤和眼底出血)明顯比原始R-FCN和Faster R-CNN更優(yōu),微血管瘤AP從81.35%提升到83.68%,眼底出血AP從90.46%提升到92.28%,可見(jiàn)改進(jìn)后的RFCN算法有效解決了微血管瘤和眼底出血的漏檢問(wèn)題。玻璃體出血是十分明顯的大目標(biāo),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法都能100%檢測(cè)到。另外訓(xùn)練集中沒(méi)有健康人的圖片,而在測(cè)試集的健康人圖片上,算法的病變區(qū)域檢測(cè)結(jié)果為空。這說(shuō)明算法準(zhǔn)確度非常高,神經(jīng)網(wǎng)絡(luò)已經(jīng)訓(xùn)練出正確預(yù)測(cè)病變區(qū)域的模型,不會(huì)對(duì)未經(jīng)訓(xùn)練過(guò)的健康人眼底圖像預(yù)測(cè)出病變檢測(cè)。
表4 病變區(qū)域檢測(cè)比較
圖7~圖11給出了分級(jí)模型和病變區(qū)域檢測(cè)合并的結(jié)果圖。
圖7 健康眼底圖片預(yù)測(cè)結(jié)果
圖8 輕度眼底圖片預(yù)測(cè)結(jié)果
圖9 中度眼底圖片預(yù)測(cè)結(jié)果
圖10 重度眼底圖片預(yù)測(cè)結(jié)果
圖11 增殖眼底圖片預(yù)測(cè)結(jié)果
本文實(shí)現(xiàn)了基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法的糖尿病視網(wǎng)膜眼底病變智能輔助診斷系統(tǒng)。在分級(jí)系統(tǒng)上,針對(duì)以往純卷積神經(jīng)網(wǎng)絡(luò)不能對(duì)未經(jīng)訓(xùn)練過(guò)的圖片尺寸進(jìn)行正確分類,或不能過(guò)濾背景的缺陷,使用基于目標(biāo)檢測(cè)的區(qū)域卷積神經(jīng)網(wǎng)絡(luò)算法進(jìn)行目標(biāo)檢測(cè)及分類,可以適應(yīng)任意多尺度輸入并過(guò)濾背景信息,并定位出眼底在圖片的位置并實(shí)現(xiàn)分類;在病變區(qū)域檢測(cè)上,加入FPN結(jié)構(gòu),并調(diào)整了算法的其他參數(shù)和結(jié)構(gòu)。FPN結(jié)構(gòu)的下采樣(降維)和上采樣(升維)的多通道結(jié)構(gòu),相比原始的下采樣(降維)的單通道結(jié)構(gòu),可融合不同層次的特征圖的語(yǔ)義信息,使低層的高分辨率特征圖擁有高層的豐富語(yǔ)義信息,并將融合后多層的特征圖同時(shí)進(jìn)行識(shí)別,減少了小目標(biāo)的漏檢率,能比原始R-FCN算法更好地檢測(cè)小目標(biāo),有效解決原始R-FCN單通道下采樣結(jié)構(gòu)對(duì)小目標(biāo)識(shí)別能力較弱的問(wèn)題。