何 晴,杨铁军,黄 琳*
(1.桂林理工大学 信息科学与工程学院,广西 桂林 541000;2.桂林医学院 智能医学与生物技术学院,广西 桂林 541000)
皮肤癌是最常见的癌症类型之一,其中黑色素瘤是最致命的皮肤癌,死亡率约占75%[1],早期准确识别黑色素瘤可显著提高患者的生存率。色素性皮损图像一般采用皮肤镜采集,由于皮肤颜色或毛发等方面的影响以及黑色素瘤和非黑色素瘤病灶高度的视觉相似性,使得黑色素瘤的识别具有极大的挑战性。传统机器学习方法一般从图像中提取手工特征,然后将它们输入到传统的分类器中进行分类[2-4],但由于受到人工设计和提取特征的限制,导致识别准确度并不是很高。为了解决上述问题,研究者们开始将深度学习方法应用于色素性皮损图像分类[5-7],虽然卷积神经网络(Convolutional Neural Network,CNN)可以在不同的条件下自动地学习有效特征,但CNN的设计往往需要大量的专家经验,例如卷积核的选择、超参数的设置等。
为了自动构建CNN模型,神经架构搜索(Neural Architecture Search,NAS)被提出[8-9]。NAS通常是在搜索空间上应用一种搜索策略进行架构搜索得到大量候选神经网络架构,并对其执行性能评估,最后找到一个优秀的神经网络架构。最初NAS算法的计算量非常大[8,10],需要搜索神经网络架构的所有组件。后来,研究者们提出了几种加速方法,如学习更小的Cell结构[11-12],然后将它们堆叠起来构建整个神经网络;或使用权重共享[13-15]强制让子网络之间共享权重。这些方法在一定程度上加速了架构搜索过程,然而它们将NAS视为一个离散搜索空间的优化问题,这使得大量的候选神经网络架构需要进行性能评估。为此,Darts[16]通过将NAS建模为包含所有路径的神经网络架构的单一训练过程,将离散的搜索空间转化为连续松弛的形式,为神经网络架构及其权重的联合优化提供了可微的学习目标。但由于Darts包含了所有路径,导致内存成本过大。为此,在Darts的基础上,该文提出了一种基于单路径激活的NAS方法(Single Path Activation based NAS,SPA-NAS),以进一步优化搜索过程,并应用于色素性皮损图像分类。主要贡献如下:
(1)提出了一种单路径激活优化策略。它通过对一个包含所有路径的过参数化网络架构应用单路径激活策略对路径进行剪枝,来达到提高搜索速度的目的。此外,SPA-NAS可以使用梯度下降的方法进行训练,并在每次迭代中能够即时计算损失。
(2)基于Darts的搜索空间,使用了一个步长为2的3×3卷积下采样结构替换原Reduce Cell结构,以此降低搜索任务的复杂程度。同时,缩减了候选操作集合,移除了3×3最大池化和3×3平均池化等基本操作。
(3)该方法搜索出一个CNN约耗时21 GPU Hours,达到了与SOTA方法接近或更好的分类性能。在ISIC2017和HAM10000色素性皮损数据集上分别实现了62.4%和69.8%的多类敏感性。
最近,NAS取得了显著的进展[8,10,16-17],大多数NAS方法可以分为两种类型:宏搜索和微搜索。
宏搜索的目标是直接发现构建整个神经网络架构的所有组件[8,15,18-19]。在这些宏搜索算法中[8-9],可能的候选神经网络架构和网络深度成指数关系。例如,文献[13]的深度设置为12时会产生1.6×1029个可能的候选神经网络。在如此大的搜索空间中进行架构搜索是很耗时的,因此这些宏搜索方法[8,13,19]通常将CNN的深度控制在较浅的范围内,如小于12。相比之下,SPA-NAS通过堆叠发现的Norm Cell[17]使网络更深,在降低搜索空间大小的同时,能够取得较好的分类准确度。
微搜索的目标是发现局部神经架构(Cell),并通过反复堆叠发现的Cell来构建神经网络[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],越来越多的研究者提出了各种技术来提高搜索速度[13,15-16,19,21]。文献[15]利用超网络为每个子网络生成权重,使得在不进行训练的情况下可以评估神经网络架构。文献[21]提出了一种由浅到深逐渐搜索Cell的渐进方法。虽然这些方法成功地加速了架构搜索过程,但仍然需要花费数天时间[19]。SPA-NAS与Darts[16]密切相关,使用了一种单路径激活策略,有选择性地对一个过参数化网络架构进行路径剪枝,有效地加速了搜索过程。
SPA-NAS方法主要包括三个步骤:设计搜索空间、搜索最优Norm Cell以及Norm Cell堆叠和测试。如图1所示,首先,优化了搜索空间;然后,采用基于单路径激活的搜索策略搜索最优Norm Cell;最后,堆叠最优Norm Cell构建色素性皮损分类神经网络,并在ISIC2017和HAM10000数据集上进行训练和测试。
搜索空间定义了NAS方法可以搜索到的神经网络类型,如卷积层、池化层等。与Darts一样,使用基于Cell的搜索空间,但也存在着一些区别。Darts的目标是搜索两种Cell结构: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通过上述候选操作集构造而成,如图2(a)所示。每个Norm Cell是由I1和I2,4个中间节点B1、B2、B3、B4和1个输出节点构成的有向无环图。每个Norm Cell将先前的输出作为一个输入,并通过先前的节点(I1,I2,Bj,j∈[1,i))在候选操作集合中激活操作来生成中间节点Bi。两个节点之间的边根据SPA-NAS在搜索空间中得到可能的操作(图2(b))。当中间节点有多条输入时,则多个输入将逐像素相加,所有中间节点的连接作为Norm Cell的最终输出节点。在测试阶段,为每个中间节点选择T(T=2)条边作为输入,以生成最终的Norm Cell(如图2(a)中实线组成的结构)。
图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)所示,训练时只有激活路径上的操作被计算。通过这种方式,可以节省GPU内存成本和计算时间,有效加速搜索过程。以上步骤得到了一个子架构,接下来应用梯度下降方法[16]来更新架构参数α以及权重w。具体是在进行子架构的前向传播时,分别在训练集上和验证集上计算出训练损失和验证损失,然后根据训练损失和验证来更新w和α。以上过程反复迭代,每次迭代前需重置所有路径为未激活状态。
搜索结束后,需要从学习到的架构参数α中推导出最终的Norm Cell结构。对每个中间节点连接T(T=2)个之前的节点,通过以下步骤得到最终的架构:(1)应用公式(2)得到NormCell的中间节点Bi和先前节点(I1,I2,Bj,j∈[1,i))之间连接的重要性Prob。(2)对每个中间节点Bi,与先前节点返回Prob的前T个节点连接成边。(3)对步骤(2)中返回的边,使用函数argmax(Prob)得到唯一操作。
图3 单路径激活搜索过程
一旦发现了一个Norm Cell,就把这些发现的Norm Cell堆叠起来组成一个神经网络。如图4所示,将N个Norm Cell堆叠为一个block,与后边紧跟的步长为2的3×3卷积层定义为一个组。给定输入,首先通过一个3×3卷积层转发,然后传入到G个组进行更深层次的特征提取,最后通过一个block(注意每个Norm Cell接收两路输入)。在这里,将神经网络架构的深度设置为G*(N+1)+N,其中G决定了神经网络的下采样率,N决定了神经网络的深度。
图4 候选神经网络架构
实验采用Pytorch 1.5实现,主要系统环境为Win10,Intel i7-8700 CPU,16 GB DDR4 RAM,GTX1080 8G GPU。实验主要包括搜索和测试两个阶段。在搜索阶段,通过提出的SPA-NAS方法在ISIC2017数据集上搜索最优Norm Cell结构。在测试阶段,基于最优Norm Cell构造神经网络架构,对比了不同Norm Cell堆叠深度(N,G)的神经网络在ISIC2017和HAM10000数据集上的分类性能,并分别与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数据集[30]和ISIC2017数据集[31]。图5给出了数据集的部分示例。HAM10000数据集具有10 015张皮肤镜图像,包含了七种皮损图像:黑色素瘤、色素痣、基底细胞癌、光化性角化病、良性角化病、皮肤纤维瘤和血管损伤。采用与文献[29]相同的划分方式对它按照8∶1∶1的比例划分成训练集(8 011张)、验证集(1 012张)和测试集(1 012张)。而ISIC2017数据集共有2 750张图像,包含了三种皮损图像:黑色素瘤、色素痣和脂溢性角化病。ISIC2017数据集已经划分了训练集(2 000张)、验证集(150张)以及测试集(600张)。该数据集种有两个分类子任务:黑色素瘤分类(黑色素瘤与其他)和脂溢性角化病分类(脂溢性角化病与其他)。同时,延伸了一个三分类任务。
图5 数据集部分样例
所有图像被中心裁剪并调整至224×224像素。
在搜索阶段,使用ISIC2017数据集,共迭代搜索50次,批次大小为8,初始通道为16。使用带有动量的SGD优化网络的权重参数和Adam优化网络的架构参数。初始学习率为0.001(按照余弦退火下降至0.000 1),动量为0.9,权重衰减为3×10-4,指数衰减率为(0.5,0.999)。
在测试阶段,在HAM10000数据集上共训练75个epochs,初始学习率为0.000 5;在ISIC2017数据集上共训练120个epochs,初始学习率为0.001。使用余弦退火降低学习率,批次大小为5,初始通道为16,权重衰减率为3×10-5,使用指数衰减率为(0.9,0.999)的Adam优化权重参数。
在评估指标方面,使用多类敏感性S(multi-class sensitivity,MC-Sensitivity)来全面衡量分类准确性,该指标能够平等地对待所有类,其定义如下:
(4)
其中,TP表示真阳性,FN表示假阴性,C为类别数。
首先,基于一个包含所有路径的神经网络架构,根据第2节所提出的方法搜索一个最优的Norm Cell结构。考虑到神经网络的深度和视野范围,N与G的取值不宜过大或过小。因此,在ISIC2017数据集上搜索了一个N=2、G=4深度的神经网络架构,花费约21 GPU Hours。图6给出了在该深度下搜索到的最优Norm Cell结构,其输入节点的卷积步长均为1。
图6 在ISIC2017上学习到的Norm Cell
同样地,在降低图像分辨率至64×64和通道数降为原来的1/3的情况下(否则内存过载),使用了darts方法进行架构搜索,并与文中方法进行了比较。如表1所示,可以看到,Darts在降低了算力的情况下,搜索效率仍低于SPA-NAS。
表1 搜索一个CNN所耗时间
进一步,采用Norm Cell堆叠的方式构建不同深度的候选神经网络(见图4),以确定在ISIC2017和HAM10000数据集上最优的神经网络。
3.5.1 优选Norm Cell堆叠方式
通过改变N(N=1,2,3)和G(G=4,5)来分析最优Norm Cell的堆叠深度对HAM10000和ISIC2017验证集分类性能的影响,以此分别确定各自最优的神经网络。图7给出了在不同堆叠深度下,ISIC2017和HAM10000验证集的MC-Sensitivity - Epoch曲线。由图可知,当G=4时,SPA-NAS在ISIC2017和HAM10000验证集上的性能明显要优于G=5时。可能的一个原因是,小的G值意味着输出的特征图尺寸增大,感受野变小,对检测皮肤病灶这种小物体更有利。
图7 在不同堆叠深度下,ISIC2017和HAM10000验证集的MC-Sensitivity - Epoch曲线
为了优选Norm Cell堆叠方式,根据N值不同分成3组来进行测试,并分别计算了后30个epoch的MC-Sensitivity平均值(由图6知在该阶段均已基本收敛),以此作为优选堆叠方式的参考指标。如表2所示,当N一定时,MC-Sensitivity平均值随着G的增大呈下降趋势。因此,优选了每组中MC-Sensitivity平均值最高的堆叠方式进行测试。
3.5.2 在ISIC2017数据集上的对比结果
最后,使用上节优选出的3种网络模型与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将注意力机制与残差结构相结合,使得模型能够更好地关注病灶位置,但它没有通过增加网络宽度对在相同尺度下提取的特征进行融合,导致其在黑色素瘤识别上略低于文中方法。SA-AS通过使用主动学习策略筛选有用的样本以提高分类性能,但在实现过程中仍需要人工的参与。G-CNN主要关注于病灶的全局尺度信息,而LIN更多地关注于病灶之间的局部细粒度差异,它们都没有很好地将全局信息与局部信息进行结合,从而可能导致一些细节特征的丢失。而文中方法在不需要人工参与下自动地调整网络结构,能够更好地将提取的特征信息进行结合,从而提高黑色素瘤的分类性能。另外,还与Darts进行了比较,SPA-NAS的性能在所有分类任务中均得到了改善,尤其在三分类任务中,SPA-NAS(N=1,G=4)比它高了约10.4%。
表2 不同堆叠深度下验证集的MC-Sensitivity平均值
表3 不同方法在ISIC2017上的MC-Sensitivity结果比较 %
3.5.3 迁移到HAM10000数据集上的对比结果
为了验证搜索到的Norm Cell的可转移性,继续在HAM10000数据集上进行了测试,并与MobileNet[26]、DenseNet-121[27]、Dilated-VGG19[29]、Inception-ResNet[28]和Darts等5种SOTA方法进行比较。由表4可知,优选的SPA-NAS(N=3,G=4)神经网络取得了最高的MC-Sensitivity值(69.8%),比Dilated-VGG19高3.1百分点。Dilated-VGG19在增加网络深度的同时也增加了空洞卷积的空洞数,这使得远距离卷积得到的结果之间缺乏相关性和连续性,进而影响了分类结果。Inception-ResNet、MobileNet和DenseNet-121均是针对ImageNet数据集而手工精心设计的CNN,其MC-Sensitivity约为60.4%~66.3%。而文中方法设计的CNN(在G=4情况下)均超过了以上3种手工构建的神经网络和Darts。此外,发现SPA-NAS对皮肤纤维瘤的识别率最差,最主要的原因是该类别的数量较少以及其病灶与其他病灶具有高度的视觉相似性,从而被错误分类。
表4 不同方法在HAM10000上的MC-Sensitivity结果比较
为了避免手工设计CNN需要非常专业的知识和大量参数调优的问题,提出了一种简单而有效的基于神经架构搜索的皮损图像分类方法(SPA-NAS)。该方法通过对一个过参数化网络架构采用基于单路径激活的梯度下降搜索策略进行学习,有效地提高了搜索效率。SPA-NAS方法首先在ISIC2017数据集上搜索最优Norm Cell,构建的神经网络取得了与SOTA方法接近或更好的分类性能。最优Norm Cell还成功地迁移到了HAM10000数据集上并取得了较好的分类准确性。但由于构建的CNN采用了重复堆叠的模式,这限制了Norm Cell的多样性,可能会损害到神经网络的分类性能。下一步研究可以搜索一个基于不同Norm Cell的神经网络架构,以扩大搜索空间和Norm Cell的多样性。