劉佳麗,孫自強(qiáng)
(華東理工大學(xué) 化工過程先進(jìn)控制和優(yōu)化技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,上海 200237)
傳統(tǒng)的舌像識(shí)別方法基于閾值分割、灰度差分和加權(quán)二值[1]等算法來分配圖像分割子塊的權(quán)重,以此提取局部圖像特征信息,最終將處理過的所有子塊連接成完整的紋理特征圖,但這類方法破壞了圖像數(shù)據(jù)的維度特征,計(jì)算量大且泛化性能弱,不利于模型遷移。之后隨著卷積神經(jīng)網(wǎng)絡(luò)在圖像處理上的優(yōu)勢(shì)越發(fā)明顯,新的方法普遍利用卷積網(wǎng)絡(luò)和全連接層結(jié)構(gòu)來識(shí)別圖像,以 R-CNN 和SPPnet為基礎(chǔ),提出了一種并行網(wǎng)絡(luò)預(yù)測(cè)結(jié)構(gòu)Fast R-CNN[2],進(jìn)一步設(shè)計(jì)權(quán)值共享的特征網(wǎng)絡(luò)RPN來預(yù)測(cè)錨框[3],這類算法直接對(duì)圖像信息進(jìn)行卷積處理,保留了維度之間的特征關(guān)系,模型的識(shí)別分類精度有了很大的提升,但缺點(diǎn)是檢測(cè)時(shí)間較長(zhǎng);Redmon等提出了一個(gè)端到端的實(shí)時(shí)檢測(cè)模型YOLO[4],并不斷改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),優(yōu)化坐標(biāo)定位,使其不僅可以滿足高精度的輸入要求[5],而且多尺度預(yù)測(cè)的精度高,檢測(cè)實(shí)時(shí)性也得到了明顯提升。因此,本文選擇YOLOv3的特征提取框架,并借鑒DenseNet在參數(shù)處理上的優(yōu)勢(shì),改進(jìn)得到Double-D網(wǎng)絡(luò),對(duì)其通道剪枝以降低模型復(fù)雜度,使其更有利于舌像檢測(cè),并討論了輸入圖像尺度和微調(diào)網(wǎng)絡(luò)層數(shù)等參數(shù)變化對(duì)目標(biāo)檢測(cè)的影響。
Yolov3本質(zhì)上就是利用深度殘差網(wǎng)絡(luò)作為特征提取框架,將目標(biāo)檢測(cè)和分類統(tǒng)一看作回歸問題,網(wǎng)絡(luò)訓(xùn)練時(shí)直接從完整圖像上進(jìn)行全局推理[6],實(shí)現(xiàn)端到端的實(shí)時(shí)檢測(cè)。算法借鑒了多尺度錨框預(yù)測(cè),使得網(wǎng)絡(luò)容易學(xué)習(xí),訓(xùn)練也更加高效;改進(jìn)了細(xì)粒度特征融合算法,并加深了特征提取網(wǎng)絡(luò),充分利用底層特征的定位細(xì)節(jié)信息,同時(shí)高層特征得到加強(qiáng),使得不同尺度下的特征都含有豐富的紋理信息,檢測(cè)結(jié)果更加準(zhǔn)確。Yolov3整體框架如圖1所示,網(wǎng)絡(luò)具體設(shè)計(jì)步驟如下:
步驟1 建立特征提取架構(gòu)Darknet53。該部分由5個(gè)殘差塊組成,每個(gè)殘差塊分別包含1、2、8、8、4個(gè)殘差結(jié)構(gòu)[7],且每個(gè)殘差塊之間用3×3的卷積連接。對(duì)于輸入維度為416×416×3的圖像,經(jīng)過5個(gè)殘差塊之后的維度分別降為{208×208×64,104×104×128,52×52×256,26×26×512,13×13×1024};
步驟2 細(xì)粒度特征融合。將13×13×1024的特征輸出經(jīng)過卷積、批量歸一化和leakly ReLU激活操作得到13×13×256,對(duì)其上采樣并與高分辨率、低語義信息的底層特征26×26×512進(jìn)行通道融合[8],經(jīng)過卷積激活操作得到26×26×256,同樣對(duì)其上采樣及通道融合,最終經(jīng)卷積計(jì)算得到52×52×128;
步驟3 維度聚類和多尺度識(shí)別定位。利用Kmeans維度聚類對(duì)先驗(yàn)框大小進(jìn)行初始化,聚類分析時(shí)以邊界框與聚類中心邊界框之間的IOU值作為距離指標(biāo),即
d(box,centroid)=1-IOU(box,centroid)
(1)
模型預(yù)測(cè)了9種不同大小的先驗(yàn)框尺度{10×13,16×30,33×23,30×61,62×54,59×119,116×90,156×198,373×326},較大的先驗(yàn)框?qū)?yīng)預(yù)測(cè)低分辨率特征,較小的先驗(yàn)框?qū)?yīng)預(yù)測(cè)高分辨率特征。最終得到N×N×(4+1+C) 的預(yù)測(cè)結(jié)果(N=13,26,52),其中4為預(yù)測(cè)坐標(biāo)參數(shù)個(gè)數(shù),1為預(yù)測(cè)置信度,C為預(yù)測(cè)類別。
步驟4 輸入圖像進(jìn)行模型訓(xùn)練,經(jīng)過特征提取、通道融合等操作得到訓(xùn)練權(quán)重,之后對(duì)實(shí)際圖像進(jìn)行預(yù)測(cè)。
圖1 YOLOv3結(jié)構(gòu)
隨著網(wǎng)絡(luò)的不斷加深,訓(xùn)練過程中網(wǎng)絡(luò)的卷積、池化操作對(duì)原始數(shù)據(jù)進(jìn)行特征提取并向下傳遞的過程中,數(shù)據(jù)信息不可避免地流失,高層網(wǎng)絡(luò)獲得的特征信息可能缺失了一些重要線索,導(dǎo)致模型效果退化。同樣的,深度卷積神經(jīng)網(wǎng)絡(luò)中的梯度消失仍是需要考慮的問題。因此,有效保留底層圖像特征信息和高效的梯度信息傳遞成為訓(xùn)練深度網(wǎng)絡(luò)的關(guān)鍵問題。
受到dense block結(jié)構(gòu)的啟發(fā)[9],在保證YOLOv3框架的殘差塊中各卷積層之間最大程度的特征信息傳輸?shù)那疤嵯?,將所有殘差結(jié)構(gòu)的特征輸出通過add直接映射連接,得到Double-D模型。圖2顯示了殘差塊深度為4時(shí),部分Double-D網(wǎng)絡(luò)的層級(jí)連接結(jié)構(gòu)。
圖2 部分Double-D網(wǎng)絡(luò)結(jié)構(gòu)(residual block=4)
可以看到,網(wǎng)絡(luò)的連接由原來的L變?yōu)長(zhǎng)(L+1)/2, 每一個(gè)殘差結(jié)構(gòu)的輸入來自前面所有層的輸出,即第l層的輸出xl是前 {0,1,2,…,l-1} 層的卷積計(jì)算,可表示為
xl=Hl(x0,x1,…,xl-1)
(2)
這樣的直通映射結(jié)構(gòu)加強(qiáng)了底層特征信息的傳遞,而且每層都可以直接訪問底層輸入信號(hào)的梯度,使得網(wǎng)絡(luò)訓(xùn)練充分利用底層特征信息和梯度信息,從而得到隱含的深度監(jiān)督。
考慮到添加密集映射結(jié)構(gòu)可能會(huì)導(dǎo)致模型過參數(shù)化,大量的冗余連接使得信息傳遞更加復(fù)雜,模型計(jì)算量大大增加;同時(shí),由于原始的YOLOv3網(wǎng)絡(luò)設(shè)計(jì)時(shí)針對(duì)COCO數(shù)據(jù)集80類的分類目標(biāo),模型通道數(shù)為{64,128,256,512,1024},而實(shí)際使用時(shí)模型的檢測(cè)類別較少。考慮以上兩點(diǎn),提出通道剪枝[10]來簡(jiǎn)化Double-D模型通道,即根據(jù)LASSO回歸來約束通道權(quán)重值,直接移除稀疏權(quán)重的冗余通道,使得模型更加精簡(jiǎn),節(jié)省計(jì)算空間,降低對(duì)硬件的要求,并且不會(huì)降低模型的檢測(cè)性能。Double-D網(wǎng)絡(luò)模型通道剪枝結(jié)構(gòu)如圖3所示。
圖3 通道剪枝結(jié)構(gòu)
圖3右側(cè)虛線框中表示利用優(yōu)化算法對(duì)通道剪枝并重建的過程,B表示通道剪枝前的特征圖,通道數(shù)是c;W表示n個(gè)維度是c×kh×kw的卷積核;C表示通道剪枝后的特征圖,通道數(shù)是c′。算法利用L0范數(shù)選擇β值稀疏的待裁剪的權(quán)重通道,表示為W中較薄的立方體,相應(yīng)需要裁剪掉輸入特征B中的對(duì)應(yīng)通道,即裁剪掉輸入特征A與虛線卷積核的卷積結(jié)果,并利用最小二乘優(yōu)化使得剪枝后的B和W的卷積結(jié)果能盡可能和C接近,其公式表達(dá)為
(3)
其中,Y指剪枝前圖像的特征信息,求和部分是按β剪枝后的特征信息,同時(shí)需滿足稀疏值個(gè)數(shù)少于c′。
求解時(shí)將式(3)中對(duì)β的約束加到式(4)中,同時(shí)用LASSO回歸代替L0范數(shù),參數(shù)λ用來控制權(quán)重稀疏程度,λ越大,權(quán)重越稀疏,算法的加速比也越大
(4)
最終通過式(5)迭代求解得到最優(yōu)的β值,這個(gè)過程中λ不斷增大,直到β值趨于穩(wěn)定,并將β代入式(6)中計(jì)算得到唯一的裁剪權(quán)重W
(5)
(6)
對(duì)于Double-D算法模型,定義其損失函數(shù)為式(7)中的均方差函數(shù)
(7)
其中,n指第n(n=1,2,3)張?zhí)卣鲌D,m指batch size,W和H代表特征圖像的維度,A指的是anchor box數(shù)目,λobj是預(yù)測(cè)目標(biāo)置信度,λborc是預(yù)測(cè)坐標(biāo)權(quán)重值,iou_ignore是無檢測(cè)目標(biāo)時(shí)的權(quán)重參數(shù),E表示求cross entropy,xy,wh,xyijk,whijk分別為實(shí)際坐標(biāo)和預(yù)測(cè)坐標(biāo),truthobj和predijk分別代表真實(shí)目標(biāo)和預(yù)測(cè)目標(biāo)概率,classtr和classpred分別為真實(shí)類別與預(yù)測(cè)類別概率。
損失函數(shù)包括置信度誤差、坐標(biāo)誤差和分類誤差3部分:計(jì)算置信度誤差分為有檢測(cè)目標(biāo)時(shí)和無檢測(cè)目標(biāo)時(shí),當(dāng)各個(gè)先驗(yàn)框與實(shí)際目標(biāo)的最大IOU值小于一定閾值時(shí)即認(rèn)為沒有檢測(cè)目標(biāo)λobj=0,此時(shí)損失函數(shù)只有置信度誤差;當(dāng)某個(gè)檢測(cè)目標(biāo)與其中心對(duì)應(yīng)的單元格中的先驗(yàn)框的最大IOU值滿足閾值條件時(shí),則用該先驗(yàn)框來預(yù)測(cè)目標(biāo)對(duì)象,并計(jì)算其坐標(biāo)損失和分類損失。對(duì)于那些沒有與檢測(cè)對(duì)象匹配的,以及小于最大IOU閾值的先驗(yàn)框就全部忽略,不計(jì)算任何損失。
本節(jié)中通過實(shí)驗(yàn)驗(yàn)證改進(jìn)模型的性能。所有實(shí)驗(yàn)均在CPU上使用Intel(R) Core (TM) i5-4200H四核處理器和雙GPU GeForce GTX 1080Ti,通過使用基于Tensorflow模型的Keras深度學(xué)習(xí)框架中的Python 3.6編程語言進(jìn)行實(shí)現(xiàn)。
實(shí)驗(yàn)數(shù)據(jù)來自上海某合作醫(yī)院和人工采集,包括各個(gè)年齡段和不同性別的采樣群體,通過設(shè)計(jì)的舌診取像儀器獲得舌像樣本,保存為JPG文件格式。樣本圖像如圖4所示,圖(a)是常規(guī)舌樣本,圖(b)、圖(c)、圖(d)、圖(e)為幾種不同舌裂紋形式的樣本,包括縱深型、縱向密集、橫向密集和不規(guī)則型。
圖4 舌頭樣本圖像
制作VOC格式的舌診圖像數(shù)據(jù)集:將獲取到的圖像數(shù)據(jù)進(jìn)行篩選和增強(qiáng),處理的方法包括縮放、上下左右翻轉(zhuǎn)、平移、按比例裁剪、顏色抖動(dòng)、歸一化等,對(duì)處理后的數(shù)據(jù)進(jìn)行標(biāo)注,數(shù)據(jù)集分布見表1。
表1 舌像樣本數(shù)據(jù)集分布
實(shí)驗(yàn)結(jié)果選擇召回率(recall)、精準(zhǔn)率(precision)、特異度(specificity)和f1分?jǐn)?shù)來檢驗(yàn)?zāi)P托阅?/p>
(8)
(9)
(10)
(11)
其中,tp是預(yù)測(cè)為正,實(shí)際為正的樣本數(shù);tn是預(yù)測(cè)為負(fù),實(shí)際為負(fù)的樣本數(shù);fp是預(yù)測(cè)為正,實(shí)際為負(fù)的樣本數(shù);fn是預(yù)測(cè)為負(fù),實(shí)際為正的樣本數(shù)。
對(duì)于實(shí)驗(yàn)選定的網(wǎng)絡(luò)框架,圖片輸入大小為416×416,設(shè)定具有1e-3初始學(xué)習(xí)率的Adam優(yōu)化器時(shí)模型迅速收斂,隨機(jī)選擇16個(gè)樣本訓(xùn)練更新網(wǎng)絡(luò)權(quán)重。網(wǎng)絡(luò)設(shè)置了100個(gè)epoch,同時(shí)為了防止過擬合及監(jiān)測(cè)模型的泛化能力,在回調(diào)函數(shù)中調(diào)用early stopping函數(shù),監(jiān)測(cè)值為驗(yàn)證集損失,設(shè)置函數(shù)激活后的10個(gè)epoch時(shí)提前終止訓(xùn)練;設(shè)置reduce learning rate函數(shù),監(jiān)測(cè)值為驗(yàn)證集損失,如果在3個(gè)epoch后看不到模型性能提升,則減小10倍學(xué)習(xí)率。
將BP神經(jīng)網(wǎng)絡(luò)、徑向基神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)[11]以及Faster RCNN、YOLOv3算法作為對(duì)照實(shí)驗(yàn),與本文改進(jìn)的Double-D模型方法進(jìn)行比較分析,具體結(jié)果見表2。實(shí)驗(yàn)1、2、3所提出的方法網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,檢測(cè)速度比較快,但也因此造成模型檢測(cè)精度較低,泛化能力差。相比之下,Double-D算法模型更深,并加入了金字塔結(jié)構(gòu)和密集直通映射,結(jié)構(gòu)更加復(fù)雜,卻仍保持了較快的檢測(cè)速度,模型精準(zhǔn)率提升了近11%,特異度提升了近14%,召回率提升了近10%,能夠正確識(shí)別出異常舌的能力顯著增強(qiáng)。
表2 網(wǎng)絡(luò)模型對(duì)比
實(shí)驗(yàn)1、2、3中的方法只對(duì)舌像做分類,而實(shí)驗(yàn)4、5、6在分類的同時(shí)回歸得到舌頭位置。實(shí)驗(yàn)4的方法在經(jīng)過特征提取之后將網(wǎng)絡(luò)分為兩個(gè)全連接輸出,包括分類網(wǎng)絡(luò)和回歸網(wǎng)絡(luò),導(dǎo)致檢測(cè)速度變慢,而實(shí)驗(yàn)5的方法只對(duì)整個(gè)分類檢測(cè)問題做一次特征提取,雖然兩者的檢測(cè)精度差異不大,但YOLOv3端到端的網(wǎng)絡(luò)結(jié)構(gòu)極大地提高了模型的檢測(cè)速度。
與YOLOv3相比,Double-D算法的檢測(cè)性能得到了普遍提升,精準(zhǔn)率由95.81%增加到了97.56%,特異度由97.05%增加到了98.75%,特別是模型的召回率由原來的87.47%增長(zhǎng)到了92.93%,準(zhǔn)確識(shí)別出病變樣本的能力進(jìn)一步提高。這說明對(duì)YOLOv3框架添加的直通映射結(jié)構(gòu)有效避免了退化問題和梯度消失,充分利用了底層圖像的特征信息,可以更加準(zhǔn)確快速地檢測(cè)出目標(biāo)圖像的微小病變并識(shí)別分類。同時(shí)利用通道剪枝,降低模型和參數(shù)復(fù)雜度,有效節(jié)省計(jì)算空間。分析結(jié)果表明改進(jìn)后的Double-D算法的檢測(cè)效果是幾種方法中最優(yōu)的。
通常醫(yī)療圖像數(shù)據(jù)較大,精度要求也比一般圖像要高,進(jìn)一步研究不同輸入尺寸是否會(huì)影響舌像的檢測(cè)效果。由于原始的舌像尺寸為600×600,同時(shí)考慮到舌像細(xì)微復(fù)雜的特點(diǎn),因此,根據(jù)網(wǎng)絡(luò)下采樣步長(zhǎng)32的倍數(shù)設(shè)置4種輸入尺寸{320,416,512,576}進(jìn)行實(shí)驗(yàn)。對(duì)比表3,結(jié)果發(fā)現(xiàn)不同尺度下模型的精準(zhǔn)率和特異度的波動(dòng)范圍在1%左右,從召回率來看,圖像尺度為416×416時(shí)得到的檢測(cè)效果明顯是最好的,與320×320圖像尺寸的召回率相比增加了2%,總體來看仍然是圖像大小為416×416時(shí)模型的檢測(cè)性能最好。分析出現(xiàn)這樣的結(jié)果是因?yàn)樯嘞窦y理十分微小復(fù)雜,當(dāng)縮小或放大圖片時(shí),舌頭上的紋理可能會(huì)縮小至難以檢測(cè),或放大至將其誤識(shí)別為病變,因此,輸入圖片的尺度要根據(jù)具體的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行調(diào)整,并不一定存在越大越好。
表3 圖像尺寸對(duì)模型檢測(cè)性能影響
設(shè)計(jì)3種不同的網(wǎng)絡(luò)凍結(jié)條件,以此來探索遷移學(xué)習(xí)微調(diào)的網(wǎng)絡(luò)層對(duì)模型檢測(cè)性能的影響。條件一凍結(jié)了最后3層輸出層之前的網(wǎng)絡(luò);條件二凍結(jié)了特征提取網(wǎng)絡(luò);條件三則對(duì)整個(gè)網(wǎng)絡(luò)逐層進(jìn)行微調(diào),同實(shí)驗(yàn)6。從表4中可以看出,條件一到條件三的情況下模型的檢測(cè)性能穩(wěn)步提升,并且條件三的表現(xiàn)性能是所有條件下最好的,精準(zhǔn)率為97.56%,特異度為98.75%,召回率為92.93%。研究結(jié)果表明,微調(diào)網(wǎng)絡(luò)層數(shù)對(duì)模型的性能確實(shí)有一定的影響,應(yīng)用遷移學(xué)習(xí)訓(xùn)練Double-D模型時(shí),凍結(jié)的網(wǎng)絡(luò)層數(shù)越多模型的檢測(cè)性能越差,說明對(duì)于樣本數(shù)據(jù)不平衡的情況,底層網(wǎng)絡(luò)提取的基本特征不一定適合所有的圖像,這就需要盡可能多地微調(diào)網(wǎng)絡(luò)層以得到更好的檢測(cè)效果。
表4 微調(diào)網(wǎng)絡(luò)對(duì)模型性能的影響
本文重點(diǎn)研究了改進(jìn)的Double-D算法網(wǎng)絡(luò)性能,分析加入稠密直通映射連接和通道剪枝對(duì)特征信息的利用效果,將其應(yīng)用于舌像的識(shí)別檢測(cè),討論了輸入圖像大小和微調(diào)層數(shù)量對(duì)模型的影響,并且自行設(shè)計(jì)標(biāo)注了一個(gè)舌像數(shù)據(jù)集。設(shè)計(jì)實(shí)驗(yàn)結(jié)果表明,改進(jìn)的Double-D算法充分利用了網(wǎng)絡(luò)的特征信息,簡(jiǎn)化模型通道降低了計(jì)算資源,使得模型的檢測(cè)效果進(jìn)一步提升。利用遷移學(xué)習(xí)訓(xùn)練網(wǎng)絡(luò)時(shí)微調(diào)更多的卷積層可以獲得更高的性能。同時(shí),輸入圖像的大小對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)性能的影響需要結(jié)合具體的數(shù)據(jù)分析,不能保證輸入圖像數(shù)據(jù)維度越大檢測(cè)效果越好。