何 晴,楊鐵軍,黃 琳*
(1.桂林理工大學 信息科學與工程學院,廣西 桂林 541000;2.桂林醫(yī)學院 智能醫(yī)學與生物技術(shù)學院,廣西 桂林 541000)
皮膚癌是最常見的癌癥類型之一,其中黑色素瘤是最致命的皮膚癌,死亡率約占75%[1],早期準確識別黑色素瘤可顯著提高患者的生存率。色素性皮損圖像一般采用皮膚鏡采集,由于皮膚顏色或毛發(fā)等方面的影響以及黑色素瘤和非黑色素瘤病灶高度的視覺相似性,使得黑色素瘤的識別具有極大的挑戰(zhàn)性。傳統(tǒng)機器學習方法一般從圖像中提取手工特征,然后將它們輸入到傳統(tǒng)的分類器中進行分類[2-4],但由于受到人工設計和提取特征的限制,導致識別準確度并不是很高。為了解決上述問題,研究者們開始將深度學習方法應用于色素性皮損圖像分類[5-7],雖然卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)可以在不同的條件下自動地學習有效特征,但CNN的設計往往需要大量的專家經(jīng)驗,例如卷積核的選擇、超參數(shù)的設置等。
為了自動構(gòu)建CNN模型,神經(jīng)架構(gòu)搜索(Neural Architecture Search,NAS)被提出[8-9]。NAS通常是在搜索空間上應用一種搜索策略進行架構(gòu)搜索得到大量候選神經(jīng)網(wǎng)絡架構(gòu),并對其執(zhí)行性能評估,最后找到一個優(yōu)秀的神經(jīng)網(wǎng)絡架構(gòu)。最初NAS算法的計算量非常大[8,10],需要搜索神經(jīng)網(wǎng)絡架構(gòu)的所有組件。后來,研究者們提出了幾種加速方法,如學習更小的Cell結(jié)構(gòu)[11-12],然后將它們堆疊起來構(gòu)建整個神經(jīng)網(wǎng)絡;或使用權(quán)重共享[13-15]強制讓子網(wǎng)絡之間共享權(quán)重。這些方法在一定程度上加速了架構(gòu)搜索過程,然而它們將NAS視為一個離散搜索空間的優(yōu)化問題,這使得大量的候選神經(jīng)網(wǎng)絡架構(gòu)需要進行性能評估。為此,Darts[16]通過將NAS建模為包含所有路徑的神經(jīng)網(wǎng)絡架構(gòu)的單一訓練過程,將離散的搜索空間轉(zhuǎn)化為連續(xù)松弛的形式,為神經(jīng)網(wǎng)絡架構(gòu)及其權(quán)重的聯(lián)合優(yōu)化提供了可微的學習目標。但由于Darts包含了所有路徑,導致內(nèi)存成本過大。為此,在Darts的基礎上,該文提出了一種基于單路徑激活的NAS方法(Single Path Activation based NAS,SPA-NAS),以進一步優(yōu)化搜索過程,并應用于色素性皮損圖像分類。主要貢獻如下:
(1)提出了一種單路徑激活優(yōu)化策略。它通過對一個包含所有路徑的過參數(shù)化網(wǎng)絡架構(gòu)應用單路徑激活策略對路徑進行剪枝,來達到提高搜索速度的目的。此外,SPA-NAS可以使用梯度下降的方法進行訓練,并在每次迭代中能夠即時計算損失。
(2)基于Darts的搜索空間,使用了一個步長為2的3×3卷積下采樣結(jié)構(gòu)替換原Reduce Cell結(jié)構(gòu),以此降低搜索任務的復雜程度。同時,縮減了候選操作集合,移除了3×3最大池化和3×3平均池化等基本操作。
(3)該方法搜索出一個CNN約耗時21 GPU Hours,達到了與SOTA方法接近或更好的分類性能。在ISIC2017和HAM10000色素性皮損數(shù)據(jù)集上分別實現(xiàn)了62.4%和69.8%的多類敏感性。
最近,NAS取得了顯著的進展[8,10,16-17],大多數(shù)NAS方法可以分為兩種類型:宏搜索和微搜索。
宏搜索的目標是直接發(fā)現(xiàn)構(gòu)建整個神經(jīng)網(wǎng)絡架構(gòu)的所有組件[8,15,18-19]。在這些宏搜索算法中[8-9],可能的候選神經(jīng)網(wǎng)絡架構(gòu)和網(wǎng)絡深度成指數(shù)關(guān)系。例如,文獻[13]的深度設置為12時會產(chǎn)生1.6×1029個可能的候選神經(jīng)網(wǎng)絡。在如此大的搜索空間中進行架構(gòu)搜索是很耗時的,因此這些宏搜索方法[8,13,19]通常將CNN的深度控制在較淺的范圍內(nèi),如小于12。相比之下,SPA-NAS通過堆疊發(fā)現(xiàn)的Norm Cell[17]使網(wǎng)絡更深,在降低搜索空間大小的同時,能夠取得較好的分類準確度。
微搜索的目標是發(fā)現(xiàn)局部神經(jīng)架構(gòu)(Cell),并通過反復堆疊發(fā)現(xiàn)的Cell來構(gòu)建神經(jīng)網(wǎng)絡[12-13,17,20]。NASNet[17]最先實施該方法,在文獻[8]所提出的“NASNet搜索空間”中搜索Cell。之后,許多研究者基于該搜索空間提出了許多方法[16,19-20],例如文獻[20]使用進化計算搜索Cell。這些微搜索方法[20-21]通常需要超過100 GPU Days,即使減少了搜索成本,但仍然需要超過1 GPU Days[16]。SPA-NAS也是一種微搜索算法,主要作用是加速搜索過程。
由于NAS算法通常需要昂貴的計算資源[8,10],越來越多的研究者提出了各種技術(shù)來提高搜索速度[13,15-16,19,21]。文獻[15]利用超網(wǎng)絡為每個子網(wǎng)絡生成權(quán)重,使得在不進行訓練的情況下可以評估神經(jīng)網(wǎng)絡架構(gòu)。文獻[21]提出了一種由淺到深逐漸搜索Cell的漸進方法。雖然這些方法成功地加速了架構(gòu)搜索過程,但仍然需要花費數(shù)天時間[19]。SPA-NAS與Darts[16]密切相關(guān),使用了一種單路徑激活策略,有選擇性地對一個過參數(shù)化網(wǎng)絡架構(gòu)進行路徑剪枝,有效地加速了搜索過程。
SPA-NAS方法主要包括三個步驟:設計搜索空間、搜索最優(yōu)Norm Cell以及Norm Cell堆疊和測試。如圖1所示,首先,優(yōu)化了搜索空間;然后,采用基于單路徑激活的搜索策略搜索最優(yōu)Norm Cell;最后,堆疊最優(yōu)Norm Cell構(gòu)建色素性皮損分類神經(jīng)網(wǎng)絡,并在ISIC2017和HAM10000數(shù)據(jù)集上進行訓練和測試。
搜索空間定義了NAS方法可以搜索到的神經(jīng)網(wǎng)絡類型,如卷積層、池化層等。與Darts一樣,使用基于Cell的搜索空間,但也存在著一些區(qū)別。Darts的目標是搜索兩種Cell結(jié)構(gòu):Norm Cell和Reduce Cell[17]。前者在不改變特征圖大小的情況下進一步提取特征,后者主要是降低特征圖大小。鑒于它們的作用,采用一個步長為2的3×3卷積層對Reduce Cell進行替換,這樣就可以降低搜索任務的復雜程度,因為少搜索了一個Reduce Cell。故該文的任務只需要搜索Norm Cell即可。為此,可進一步精簡候選操作集合,故移除了3×3最大池化和3×3平均池化等所有池化操作,最終候選操作集O={o}保留了以下6種操作:(1)3×3 SepConv;(2)5×5 SepConv;(3)3×3 DilConv;(4) 5×5 DilConv;(5) Skip Connection (Identity);(6)No Connection (Zero)。
圖1 SPA-NAS方法流程
Norm Cell通過上述候選操作集構(gòu)造而成,如圖2(a)所示。每個Norm Cell是由I1和I2,4個中間節(jié)點B1、B2、B3、B4和1個輸出節(jié)點構(gòu)成的有向無環(huán)圖。每個Norm Cell將先前的輸出作為一個輸入,并通過先前的節(jié)點(I1,I2,Bj,j∈[1,i))在候選操作集合中激活操作來生成中間節(jié)點Bi。兩個節(jié)點之間的邊根據(jù)SPA-NAS在搜索空間中得到可能的操作(圖2(b))。當中間節(jié)點有多條輸入時,則多個輸入將逐像素相加,所有中間節(jié)點的連接作為Norm Cell的最終輸出節(jié)點。在測試階段,為每個中間節(jié)點選擇T(T=2)條邊作為輸入,以生成最終的Norm Cell(如圖2(a)中實線組成的結(jié)構(gòu))。
圖2 搜索空間
算法1:SPA-NAS
Initializedα
while not stop do ? search an architecture
ResetMpath to inactive state for each edge (i,j)
Calculate Prob based on Eq.(2)
Derive an oactiveof each edge
Generate a child architecture only consisting of oactive
? architecture purning
Forward propagation of child architecture based on Eq.(3)
Calculate Losstrainon train set
Updatewby gradient descent:w=w-▽wLosstrain
Sample batch of data asDvfrom validation set
Calculate LossvalidationonDv
Updateαby gradient descent:α=α-▽αLossvalidation
end while
Derive the final architecture based on the learnedα
probI,J=Max(Probi,j)
(1)
其中,概率Probi,j是可學習的,由公式(2)計算獲得:
(2)
(3)
正如公式(3)所示,訓練時只有激活路徑上的操作被計算。通過這種方式,可以節(jié)省GPU內(nèi)存成本和計算時間,有效加速搜索過程。以上步驟得到了一個子架構(gòu),接下來應用梯度下降方法[16]來更新架構(gòu)參數(shù)α以及權(quán)重w。具體是在進行子架構(gòu)的前向傳播時,分別在訓練集上和驗證集上計算出訓練損失和驗證損失,然后根據(jù)訓練損失和驗證來更新w和α。以上過程反復迭代,每次迭代前需重置所有路徑為未激活狀態(tài)。
搜索結(jié)束后,需要從學習到的架構(gòu)參數(shù)α中推導出最終的Norm Cell結(jié)構(gòu)。對每個中間節(jié)點連接T(T=2)個之前的節(jié)點,通過以下步驟得到最終的架構(gòu):(1)應用公式(2)得到NormCell的中間節(jié)點Bi和先前節(jié)點(I1,I2,Bj,j∈[1,i))之間連接的重要性Prob。(2)對每個中間節(jié)點Bi,與先前節(jié)點返回Prob的前T個節(jié)點連接成邊。(3)對步驟(2)中返回的邊,使用函數(shù)argmax(Prob)得到唯一操作。
圖3 單路徑激活搜索過程
一旦發(fā)現(xiàn)了一個Norm Cell,就把這些發(fā)現(xiàn)的Norm Cell堆疊起來組成一個神經(jīng)網(wǎng)絡。如圖4所示,將N個Norm Cell堆疊為一個block,與后邊緊跟的步長為2的3×3卷積層定義為一個組。給定輸入,首先通過一個3×3卷積層轉(zhuǎn)發(fā),然后傳入到G個組進行更深層次的特征提取,最后通過一個block(注意每個Norm Cell接收兩路輸入)。在這里,將神經(jīng)網(wǎng)絡架構(gòu)的深度設置為G*(N+1)+N,其中G決定了神經(jīng)網(wǎng)絡的下采樣率,N決定了神經(jīng)網(wǎng)絡的深度。
圖4 候選神經(jīng)網(wǎng)絡架構(gòu)
實驗采用Pytorch 1.5實現(xiàn),主要系統(tǒng)環(huán)境為Win10,Intel i7-8700 CPU,16 GB DDR4 RAM,GTX1080 8G GPU。實驗主要包括搜索和測試兩個階段。在搜索階段,通過提出的SPA-NAS方法在ISIC2017數(shù)據(jù)集上搜索最優(yōu)Norm Cell結(jié)構(gòu)。在測試階段,基于最優(yōu)Norm Cell構(gòu)造神經(jīng)網(wǎng)絡架構(gòu),對比了不同Norm Cell堆疊深度(N,G)的神經(jīng)網(wǎng)絡在ISIC2017和HAM10000數(shù)據(jù)集上的分類性能,并分別與ARL-CNN[22]、SA-AS[23]、G-CNN[24]、LIN[25]及MobileNet[26]、DenseNet-121[27]、Inception-ResNet[28]、Dilated-VGG19[29]、Darts[16]等SOTA方法進行了比較。
實驗采用HAM10000數(shù)據(jù)集[30]和ISIC2017數(shù)據(jù)集[31]。圖5給出了數(shù)據(jù)集的部分示例。HAM10000數(shù)據(jù)集具有10 015張皮膚鏡圖像,包含了七種皮損圖像:黑色素瘤、色素痣、基底細胞癌、光化性角化病、良性角化病、皮膚纖維瘤和血管損傷。采用與文獻[29]相同的劃分方式對它按照8∶1∶1的比例劃分成訓練集(8 011張)、驗證集(1 012張)和測試集(1 012張)。而ISIC2017數(shù)據(jù)集共有2 750張圖像,包含了三種皮損圖像:黑色素瘤、色素痣和脂溢性角化病。ISIC2017數(shù)據(jù)集已經(jīng)劃分了訓練集(2 000張)、驗證集(150張)以及測試集(600張)。該數(shù)據(jù)集種有兩個分類子任務:黑色素瘤分類(黑色素瘤與其他)和脂溢性角化病分類(脂溢性角化病與其他)。同時,延伸了一個三分類任務。
圖5 數(shù)據(jù)集部分樣例
所有圖像被中心裁剪并調(diào)整至224×224像素。
在搜索階段,使用ISIC2017數(shù)據(jù)集,共迭代搜索50次,批次大小為8,初始通道為16。使用帶有動量的SGD優(yōu)化網(wǎng)絡的權(quán)重參數(shù)和Adam優(yōu)化網(wǎng)絡的架構(gòu)參數(shù)。初始學習率為0.001(按照余弦退火下降至0.000 1),動量為0.9,權(quán)重衰減為3×10-4,指數(shù)衰減率為(0.5,0.999)。
在測試階段,在HAM10000數(shù)據(jù)集上共訓練75個epochs,初始學習率為0.000 5;在ISIC2017數(shù)據(jù)集上共訓練120個epochs,初始學習率為0.001。使用余弦退火降低學習率,批次大小為5,初始通道為16,權(quán)重衰減率為3×10-5,使用指數(shù)衰減率為(0.9,0.999)的Adam優(yōu)化權(quán)重參數(shù)。
在評估指標方面,使用多類敏感性S(multi-class sensitivity,MC-Sensitivity)來全面衡量分類準確性,該指標能夠平等地對待所有類,其定義如下:
(4)
其中,TP表示真陽性,F(xiàn)N表示假陰性,C為類別數(shù)。
首先,基于一個包含所有路徑的神經(jīng)網(wǎng)絡架構(gòu),根據(jù)第2節(jié)所提出的方法搜索一個最優(yōu)的Norm Cell結(jié)構(gòu)??紤]到神經(jīng)網(wǎng)絡的深度和視野范圍,N與G的取值不宜過大或過小。因此,在ISIC2017數(shù)據(jù)集上搜索了一個N=2、G=4深度的神經(jīng)網(wǎng)絡架構(gòu),花費約21 GPU Hours。圖6給出了在該深度下搜索到的最優(yōu)Norm Cell結(jié)構(gòu),其輸入節(jié)點的卷積步長均為1。
圖6 在ISIC2017上學習到的Norm Cell
同樣地,在降低圖像分辨率至64×64和通道數(shù)降為原來的1/3的情況下(否則內(nèi)存過載),使用了darts方法進行架構(gòu)搜索,并與文中方法進行了比較。如表1所示,可以看到,Darts在降低了算力的情況下,搜索效率仍低于SPA-NAS。
表1 搜索一個CNN所耗時間
進一步,采用Norm Cell堆疊的方式構(gòu)建不同深度的候選神經(jīng)網(wǎng)絡(見圖4),以確定在ISIC2017和HAM10000數(shù)據(jù)集上最優(yōu)的神經(jīng)網(wǎng)絡。
3.5.1 優(yōu)選Norm Cell堆疊方式
通過改變N(N=1,2,3)和G(G=4,5)來分析最優(yōu)Norm Cell的堆疊深度對HAM10000和ISIC2017驗證集分類性能的影響,以此分別確定各自最優(yōu)的神經(jīng)網(wǎng)絡。圖7給出了在不同堆疊深度下,ISIC2017和HAM10000驗證集的MC-Sensitivity - Epoch曲線。由圖可知,當G=4時,SPA-NAS在ISIC2017和HAM10000驗證集上的性能明顯要優(yōu)于G=5時??赡艿囊粋€原因是,小的G值意味著輸出的特征圖尺寸增大,感受野變小,對檢測皮膚病灶這種小物體更有利。
圖7 在不同堆疊深度下,ISIC2017和HAM10000驗證集的MC-Sensitivity - Epoch曲線
為了優(yōu)選Norm Cell堆疊方式,根據(jù)N值不同分成3組來進行測試,并分別計算了后30個epoch的MC-Sensitivity平均值(由圖6知在該階段均已基本收斂),以此作為優(yōu)選堆疊方式的參考指標。如表2所示,當N一定時,MC-Sensitivity平均值隨著G的增大呈下降趨勢。因此,優(yōu)選了每組中MC-Sensitivity平均值最高的堆疊方式進行測試。
3.5.2 在ISIC2017數(shù)據(jù)集上的對比結(jié)果
最后,使用上節(jié)優(yōu)選出的3種網(wǎng)絡模型與ARL-CNN[22]、SA-AS[23]、G-CNN[24]、LIN[25]和Darts[16]等5種SOTA方法進行比較。由表3可知,SPA-NAS(N=1,G=4)的綜合性能最好,雖然在脂溢性角化病分類得分較低,但在黑色素瘤分類和三分類任務上的MC-Sensitivity均超過了其他方法,而黑色素瘤分類和三分類相較于脂溢性角化病分類更加有難度。ARL-CNN將注意力機制與殘差結(jié)構(gòu)相結(jié)合,使得模型能夠更好地關(guān)注病灶位置,但它沒有通過增加網(wǎng)絡寬度對在相同尺度下提取的特征進行融合,導致其在黑色素瘤識別上略低于文中方法。SA-AS通過使用主動學習策略篩選有用的樣本以提高分類性能,但在實現(xiàn)過程中仍需要人工的參與。G-CNN主要關(guān)注于病灶的全局尺度信息,而LIN更多地關(guān)注于病灶之間的局部細粒度差異,它們都沒有很好地將全局信息與局部信息進行結(jié)合,從而可能導致一些細節(jié)特征的丟失。而文中方法在不需要人工參與下自動地調(diào)整網(wǎng)絡結(jié)構(gòu),能夠更好地將提取的特征信息進行結(jié)合,從而提高黑色素瘤的分類性能。另外,還與Darts進行了比較,SPA-NAS的性能在所有分類任務中均得到了改善,尤其在三分類任務中,SPA-NAS(N=1,G=4)比它高了約10.4%。
表2 不同堆疊深度下驗證集的MC-Sensitivity平均值
表3 不同方法在ISIC2017上的MC-Sensitivity結(jié)果比較 %
3.5.3 遷移到HAM10000數(shù)據(jù)集上的對比結(jié)果
為了驗證搜索到的Norm Cell的可轉(zhuǎn)移性,繼續(xù)在HAM10000數(shù)據(jù)集上進行了測試,并與MobileNet[26]、DenseNet-121[27]、Dilated-VGG19[29]、Inception-ResNet[28]和Darts等5種SOTA方法進行比較。由表4可知,優(yōu)選的SPA-NAS(N=3,G=4)神經(jīng)網(wǎng)絡取得了最高的MC-Sensitivity值(69.8%),比Dilated-VGG19高3.1百分點。Dilated-VGG19在增加網(wǎng)絡深度的同時也增加了空洞卷積的空洞數(shù),這使得遠距離卷積得到的結(jié)果之間缺乏相關(guān)性和連續(xù)性,進而影響了分類結(jié)果。Inception-ResNet、MobileNet和DenseNet-121均是針對ImageNet數(shù)據(jù)集而手工精心設計的CNN,其MC-Sensitivity約為60.4%~66.3%。而文中方法設計的CNN(在G=4情況下)均超過了以上3種手工構(gòu)建的神經(jīng)網(wǎng)絡和Darts。此外,發(fā)現(xiàn)SPA-NAS對皮膚纖維瘤的識別率最差,最主要的原因是該類別的數(shù)量較少以及其病灶與其他病灶具有高度的視覺相似性,從而被錯誤分類。
表4 不同方法在HAM10000上的MC-Sensitivity結(jié)果比較
為了避免手工設計CNN需要非常專業(yè)的知識和大量參數(shù)調(diào)優(yōu)的問題,提出了一種簡單而有效的基于神經(jīng)架構(gòu)搜索的皮損圖像分類方法(SPA-NAS)。該方法通過對一個過參數(shù)化網(wǎng)絡架構(gòu)采用基于單路徑激活的梯度下降搜索策略進行學習,有效地提高了搜索效率。SPA-NAS方法首先在ISIC2017數(shù)據(jù)集上搜索最優(yōu)Norm Cell,構(gòu)建的神經(jīng)網(wǎng)絡取得了與SOTA方法接近或更好的分類性能。最優(yōu)Norm Cell還成功地遷移到了HAM10000數(shù)據(jù)集上并取得了較好的分類準確性。但由于構(gòu)建的CNN采用了重復堆疊的模式,這限制了Norm Cell的多樣性,可能會損害到神經(jīng)網(wǎng)絡的分類性能。下一步研究可以搜索一個基于不同Norm Cell的神經(jīng)網(wǎng)絡架構(gòu),以擴大搜索空間和Norm Cell的多樣性。