呼延烺,李 映,周 诠,刘娟妮,魏佳圆,肖化超,张 怡,方 海
1.西北工业大学计算机学院,西安 710129
2.空间微波技术国家级重点实验室,西安 710100
近年来人工智能技术,尤其是深度学习技术在多个任务上均取得了突破性进展.深度学习技术相比于传统技术在性能上有巨大优势,在地面上已经有了广泛应用.但受空间环境限制,该技术在轨应用仍是一个具有挑战性的任务.众多学者尝试将该技术应用到星表非结构化岩石目标辨识[1]、地球同步轨道目标检测[2]以及在轨高光谱图像云检测[3]等空间任务中,并取得了大量研究成果.
遥感技术的快速发展和遥感卫星数据量几何级增长给卫星数据传输系统带来诸多问题.其中最突出的问题是遥感卫星获取的数据中有很大一部分属于无效数据[4],这类数据对卫星数据传输系统造成巨大压力,浪费了珍贵的带宽资源[5],大大降低了载荷利用率,也难以满足用户对遥感图像处理的时效性要求.通过在轨智能处理可以降低星地之间数据传输量,从而解决当前遥感卫星面临的问题.
目标检测是遥感图像处理的基础任务[6],也是遥感图像理解和场景理解等高级应用的基础.遥感图像目标检测器一般有2种应用场景,一种是将遥感图像通过卫星数据传输系统传回地面后再进行目标检测[7],这种应用场景下,目标检测器部署在地面上,不需要考虑空间环境所带来的存储、算力及功耗等限制.另外一种应用场景是直接在星上进行目标检测[8],检测器需要部署在星上,这时在设计检测模型时需要考虑卫星能够提供的资源.
在轨目标检测在军用和民用任务中更具有吸引力.首先,这种方式能够实时响应地面的变化,并反馈结果,这种优势在军事应用或者灾害监测中表现尤为突出;
其次,无需将原始数据传回地面站,卫星采集到的图像中存在大量冗余数据,将所有数据传回地面站,无疑会浪费宝贵的卫星带宽资源,通过星上目标检测后,仅将有价值的数据传回地面这将会大大减少带宽的浪费.
但在轨应用时,受空间环境限制,星上计算能力和存储能力与地面相差甚远[9-10],且深度学习算法是计算密集型和存储密集型算法[11],其优异性能是以大量计算资源和存储资源消耗为代价的.在星上部署深度学习算法比地面上更具有挑战性,不仅需要关注算法性能,而且需要关注算法在星上的可实现性以及如何在二者之间取得平衡.因此,遥感图像目标检测模型压缩技术是一个重要研究领域,同时也是研究热点和难点.
为了降低深度模型的复杂度,目前可以采用轻量化设计、低秩分解、知识蒸馏、剪枝以及量化中的一种或多种方式来降低模型参数量和计算量.其中,剪枝是模型压缩的重要手段之一.通过将深度模型中不重要的参数或者卷积核剪除掉,从而实现降低模型复杂度的目的.按照剪枝粒度可以将剪枝分为结构化剪枝和非结构化剪枝.非结构化剪枝的对象是模型中的单个参数,被剪参数不具有任何结构.结构化剪枝的对象是卷积核、通道或者分组.
无论结构化剪枝还是非结构化剪枝,如何确定被剪除的参数是一个核心问题.权重剪枝可以追溯到OBD(optimal brain damage)[12]和OBS(optimal brain surgeon)[13],这一类算法将权重对损失函数的影响作为剪枝标准,通过损失函数的Hessian矩阵对权重进行剪枝.但Hessian矩阵的计算复杂度较高,文献[14]提出采用泰勒展开式中一阶项的绝对值作为剪枝标准,将该绝对值较小的参数剪除.文献[15]提出将模型权重的绝对值作为重要性衡量标准,以此来确定被剪除的参数,权重的绝对值越大,对模型的贡献越大,因此将模型中绝对值较小的权值剪掉.
通过给模型中加入掩码层和正则项使得模型稀疏化也是一种常用的剪枝方法.例如文献[16]采用L1正则化对模型权重进行剪枝,之后通过微调来恢复剪枝损失的性能.文献[17]也采用L1正则化对卷积核进行剪枝.文献[18]采用LASSO回归对通道进行剪枝.文献[19]提出了一种高效结构化剪枝方法,该方法引入了软掩码,通过定义带有稀疏正则化因子的目标函数将基准模型输出与带有软掩码的网络模型输出对齐从而实现模型结构化剪枝.文献[20]提出了一种预算正则化剪枝框架,该框架包含可学习掩码层、预算感知的损失函数以及知识蒸馏.AutoPruner[21]剪枝算法通过在模型中增加通道选择层,从而实现了不重要卷积核和通道的自动选择.
将剪枝归结为优化问题.文献[22]通过求解凸优化问题来剪除冗余连接.ThiNet[23]将卷积核剪枝归结为一个优化问题,其认为卷积核的重要性是通过其下一层的统计信息决定而并非当前层.DCP[24]剪枝算法将通道或卷积核选择归纳为一个带约束的优化问题,并通过贪心算法求解,从而得到需要剪枝的通道或卷积核.NISP[25]剪枝算法认为模型最后一层的响应能够有效减少重建误差,所以通过最后输出特征图的秩来衡量卷积核的重要性,将模型剪枝归纳为一个二元整数优化问题.
HRank[26]剪枝算法通过特征图的秩来选择被剪掉的卷积核,秩小的特征图包含的信息量少,因此,生成该特征图的卷积核应该被剪除.
此外,还有一些其它剪枝方法.例如,文献[27]提出了一种频域动态剪枝方法,不同频段对精度的贡献不同,对不同频段进行有区别的剪枝.文献[28]通过优化BN(batch normalization)层中的扩展因子r来确定通道的重要性,从而将不重要的通道剪掉.文献[29]提出了采用AutoML进行模型压缩,这种方法利用了强化学习来获得剪枝策略.Gate Decorator[30]通过给普通的卷积层乘以通道缩放因子,从而实现通道剪枝.
非结构化剪枝的优点是可以在保持原始模型结构不变的基础上获得更加细粒度剪枝,但剪枝之后的卷积核是稀疏张量,并不能够利用现有硬件和软件进行加速,无法减少模型的推理时间.结构化剪枝的优点是,可以整体剪除卷积核或者通道,可以有效利用现有软硬件进行加速,但是同一个卷积核中的参数重要性并非一致,这种粗粒度的剪枝可能会将模型中的重要参数剪除,从而导致模型性能急剧下降.
本文针对目标检测算法空间应用需求,提出了一种结构化条带剪枝方法,有效降低了深度目标检测模型的存储复杂度和计算复杂度.虽然在本文中未对该算法进行硬件实现及评估,但在算法设计时考虑了空间环境硬件资源的限制,使得压缩之后的模型具有硬件资源利用率高的特性.
条带剪枝[31]提出了卷积核的骨架属性,并通过卷积核骨架来指导剪枝过程,实现了在卷积核权重剪枝时卷积核形状也可以剪枝.基于卷积核骨架的剪枝方法与其它结构化剪枝方法相比,其剪枝粒度是条带而不是整个卷积核,可以获得更好的剪枝粒度.虽然该方法在剪枝粒度上具有优势,但是采用该方法剪枝后各卷积核中条带数目不尽相同.如图1(b)所示,由于卷积核的不规则特性导致剪枝后的模型并不能够有效利用硬件平台的计算资源,剪枝模型存在“模型小、推理慢”的问题.
常规3×3卷积如图1(a)所示,其中包含4个卷积核.在硬件平台进行加速时,为每个卷积核设计一个卷积计算单元.如图1(d)所示,每一列对应一个卷积核,每个卷积核消耗9个乘法器及相应的累加器(图中省略了累加器).此时,4个卷积核一共消耗了36个乘法器,乘法器的利用率为100%.在条带剪枝之后,第一个卷积核剩余一个条带,第二个卷积核剩余一个条带,第三个卷积核剩余2个条带,第四个卷积核剩余3个条带.此时,4个卷积核依然需要设计4个卷积运算单元,每个卷积计算单元需要消耗3个乘法器,共消耗12个乘法器,但在卷积运算时,并不是每个乘法器都使用,例如,乘法器(0,1)、(0,2)、(1,1)、(1,2)及(2,2)都未使用,在这个例子中乘法器利用率为58.3%.
虽然条带剪枝能够获得更好的剪枝粒度,但对于在轨目标检测模型的剪枝并不友好.星上能够提供的计算资源有限,但是条带剪枝对硬件资源的利用率较低,进一步加剧了目标检测模型在星上部署的难度.为了既能够利用条带剪枝细粒度剪枝的特性,又能够提高剪枝模型对硬件资源的利用率,本文提出了结构化条带剪枝.如图1(c)所示,为了提高条带剪枝后模型硬件利用率,本文在条带剪枝的基础上加上了约束条件,使剪枝模型每个卷积核条带数量相同.如图1(f)所示,结构化条带剪枝模型运算共消耗了9个乘法器,乘法器利用率为100%.
图1 不同类型卷积及硬件利用率可视化Fig.1 The visualization of different types of convolution and hardware utilization
2.1 结构化条带剪枝流程
结构化条带剪枝流程如图2所示.该方法由4步组成.
1)采用ImageNet数据集上的训练结果对RetinaNet网络模型进行初始化;
2)采用条带剪枝方法对目标检测模型进行剪枝训练,获得卷积核骨架矩阵;
3)条带结构化,在条带剪枝中设置了剪枝门限,小于门限的条带将被剪掉,为了使得剪枝模型条带数目相同,通过动态调整剪枝门限使得所有卷积核具有相同数目的条带,从而达到条带结构化目的;
4)混合精度训练,为了进一步减少模型所消耗的存储容量,采用混合精度训练结构化剪枝模型,获得半精度表示的模型.结构化条带剪枝伪代码如表1所示.
图2 结构化条带剪枝流程Fig.2 Flow-chart of the structure stripe pruning procedure
表1 结构化条带剪枝伪代码Tab.1 Structure strip pruning algorithm
2.2 条带剪枝
条带剪枝认为卷积核除了权重之外还有形状属性,每个条带对模型的贡献不同.若第l层的权重为Wl∈N×C×K×K,则用FSl∈N×K×K来表示其卷积核形状属性,将FS称作卷积核骨架,其中N表示卷积核的数量,C表示通道数,K表示卷积核尺寸.
在训练过程中,将卷积核权重W与骨架矩阵I相乘,则损失函数用式(1)表示.
(1)
式中,I表示卷积核骨架矩阵,⊙表示点积,x和y分别表示输入特征图和输出特征图.
(2)
(3)
(4)
在推理阶段,将卷积核权重W与骨架矩阵I相乘得到包含卷积核形状信息的卷积核参数.
为了使骨架矩阵稀疏化,在损失函数中加入正则化函数,如式(5)所示.
(5)
式中,α表示正则化的幅度,g(I)表示在I上L1正则化的惩罚因子.g(I)的表达式如式(6)所示.
(6)
2.3 条带结构化
为了提高剪枝模型对硬件资源的利用率,需要实现结构化条带剪枝.在本文中指剪枝之后每个卷积中所包含的条带数目一致.为了实现这个目的,在条带剪枝训练过程中不再设置剪枝门限δ,而是设置训练轮数(epoch),例如在NWPU数据集上训练轮数设置为200,当训练结束之后同时获得了卷积核权重参数和骨架矩阵I.
此时采用以下步骤实现结构化条带剪枝.
1)首先对骨架矩阵中的所有元素从大到小进行排序;
2)如式(7)所示,将骨架矩阵中最小的m个元素置为0,获得结构化条带剪枝的骨架矩阵SI;
(7)
3)如式(8)所示,将结构化的骨架矩阵与权重进行融合得到结构化权重;
WSFS=W⊙SI
(8)
4)在推理阶段,结构化条带卷积如式(9)所示.
(9)
2.4 混合精度训练
结构化剪枝之后,遥感图像目标检测模型采用全精度表示,即一个权重参数使用32bit的浮点数进行表示.为了进一步减少权重参数所消耗的存储空间和模型推理所需要的通信带宽,本文采用混合精度训练方法[32]对结构化剪枝模型进行再次训练.首先在优化器中储存一个全精度的网络权值;
在训练过程中,模型使用半精度的权值计算损失(loss)和各网络权值的梯度,然后将梯度转化为全精度并复制到优化器中;
优化器使用全精度梯度值对参数进行梯度下降,最后再将更新的全精度权值转化为半精度,替换模型中的网络权值.为了避免梯度被忽略,混合精度训练方法还采取了损失缩放技术.通过放大半精度损失值防止因其过小而被忽略为0;
在全精度梯度下降前,梯度值会缩小相同比例,保证了梯度值不变.此方法不再需要对模型进行预训练,降低了训练难度,提升了模型的鲁棒性.
3.1 数据集
本文分别在NWPU VHR-10数据集[33]和自建数据集上对剪枝前后的遥感图像目标检测模型性能进行了评估.NWPU VHR-10数据集是西北工业大学标注的航天遥感目标检测数据集,共有800张图像,其中包含目标的650张,背景图像150张,目标包括:飞机、舰船、油罐、棒球场、网球场、篮球场、田径场、港口、桥梁和车辆10个类别.
图3 数据集图像和标注的可视化结果Fig.3 The visualization of samples and annotations of our dataset
在实际任务中,并不需要对NWPU VHR-10中的所有类别进行检测,为了验证剪枝模型在实际应用中的性能,在DOTA[34]和HRSC20162016[35]数据集的基础上构建了一个仅含有飞机和舰船2类目标的数据集.自建数据集共1393张512*512图像及4032个目标(分为训练集和测试集,训练集2799个目标,测试集1233个目标).选用HRSC2016数据集是因为其主要包含大量舰船目标,选用DOTA数据集是因为其场景丰富、数据量大.在获取到足够的数据后,还需对其进行筛查、目标尺寸调整、图像尺寸归一化、数据增强等操作.图3为数据集图像和标注的可视化结果.
3.2 实验结果及分析
本文在64位Ubuntu 18.04操作系统上进行实验,CPU为Intel(R) Core(TM) i7-6850K,GPU为TITAN XP,内存为16 GB.深度学习框架为Pytorch1.6.0、CUDA10.1和cuDNN7.6.3.训练轮数设置为200,动量和权值衰减参数分别被设置为0.9和0.001.优化器选择SGD,初始化学习率设置为0.0025.下文中BL代表基准网络,SP代表条带剪枝模型,SSP代表结构化条带剪枝模型,PL代表性能损失.
(1)NWPU VHR-10 数据集上的实验结果
表2显示了RetinaNet目标检测模型分别采用条带剪枝和本文所提出的结构化条带剪枝方法剪枝之后在NWPU数据集上的性能.
表2 SSP在NWPU-VHR-10上的性能Tab.2 Performance of SSP on NWPU-VHR-10 dataset
从表2可以看出,RetinaNet目标检测模型在NWPU数据集上的mAP为93.1%.该模型经条带剪枝之后mAP 为92.4%,性能下降0.7%.经本文所提出的结构化条带剪枝之后mAP为92.2%,性能下降0.9%.与条带剪枝相比,结构化条带剪枝性能仅下降0.2%.可见,结构化后的条带剪枝对模型性能的影响甚微.从每一类的检测结果来看,结构化条带剪枝模型在飞机类别、田径场类别以及港口类别上的AP值超越了原始模型.油桶类别、网球场类别以及车辆类别的AP值下降较多,分别为2.6%、2.8%和3.3%,这3类目标在NWPU数据集中属于小目标,可见,剪枝之后对于小目标的检测性能影响较大.
压缩比和加速比定义如式(10)和(11)所示.
(10)
(11)
式中,PBP表示剪枝前模型的参数量,PAP表示剪枝后模型的参数量,FBP表示剪枝前模型的运算量,FAP表示剪枝后模型的运算量.
表3 模型压缩性能对比Tab.3 Performance comparison of compression
表3为基准模型、条带剪枝模型以及结构化条带剪枝模型的压缩性能对比.可以看出条带剪枝结构化之后压缩比、加速比以及性能略有下降,分别为0.01、0.04以及0.2%,但影响甚微.由于条带剪枝具有更细的粒度,而结构化条带剪枝为了保持卷积核中条带数目一致,牺牲了剪枝粒度.因此,其参数量和计算量会稍多,性能也有部分损失.
从资源利用率看,结构化条带剪枝模型和基准模型的资源利用率均为100%,但是条带剪枝硬件资源利用率仅有16.05%.可见,本文提出的结构化条带剪枝能够有效提高硬件资源利用率.同时,在相同硬件平台上,由于结构化条带剪枝减少了计算量及参数量,因此,其推理时间与基准模型相比有较大提高.条带化剪枝方法虽然减少了模型参数量和计算量,但是由于其硬件资源利用率较低,出现了“模型小、推理慢”的现象.
图4为原始模型、条带剪枝模型和结构化条带剪枝模型在NWPU数据集上训练200轮时的损失曲线图.从图中可以看出条带剪枝模型和结构化条带剪枝模型的损失值略高于原始模型.训练120轮之后3种目标检测模型均趋于收敛.
图4 剪枝模型在NWPU 数据集上的损失曲线Fig.4 The loss curves of the pruned mode on NWPU VHR-10
图5 剪枝模型在NWPU数据集上的PR曲线Fig.5 PR curves for the pruned mode on NWPU VHR-10
图5为剪枝模型在NWPU数据集上的PR曲线图,可以看出条带剪枝模型和结构化条带剪枝模型的精准率和召回率几乎接近,都趋向1.这也说明在该数据集上,条带剪枝结构化之后并不会显著降低模型的性能.
(2)自建数据集上的实验结果
在一些任务中目标的类别并不是很多,例如在我们的任务中只有舰船和飞机2个类别,为了验证剪枝后的模型在实际任务中的表现,利用自建的数据集对剪枝模型性能进行了评估.表4为RetinaNet目标检测模型分别采用条带剪枝和本文所提出的结构化条带剪枝方法剪枝之后性能评估结果.
表4 结构化条带剪枝在自建数据集上的性能Tab.4 Performance of structure strip pruning algorithm on our dataset
从表4可以看出,相对于原始模型,条带剪枝模型和结构化条带剪枝模型在自建数据集上的mAP性能分别下降6.1%和1.7%.虽然结构化条带剪枝的mAP性能有所下降,但是也达到了93.6%,能够满足任务需求.与NWPU数据集上的结果不同,在自建数据集上结构化条带剪枝模型的mAP值比条带剪枝模型提高4.4%.从每一类的检测结果来看,条带剪枝模型飞机类别的AP值略有下降,但是舰船类别AP值下降较多,达到了11%.结构化条带剪枝模型在此类别上的性能优于条带剪枝模型,仅仅下降了2.4%.
图6 剪枝模型在自建数据集上的PR曲线Fig.6 PR curves for the pruned mode on our dataset
图7 剪枝模型在自建数据集上的损失曲线Fig.7 The loss curves of the pruned mode on our dataset
图6为剪枝模型在自建数据集上的PR曲线图,明显可以看出结构化条带剪枝模型的精准率和召回率均优于条带剪枝模型.在自建数据集上,条带剪枝结构化之后性能会有显著提升.
图7为原始模型、条带剪枝模型和结构化条带剪枝模型在自建数据集上训练轮数为200时的损失曲线图.从图可以看出结构化条带剪枝模型的损失值略高于原始模型,但是条带剪枝模型的损失值明显大于原始模型和结构化条带剪枝模型.在训练110轮之后3种目标检测模型均趋于收敛.
3.3 性能对比
为了更好的说明本文所提出的结构化条带剪枝算法的性能,将该算法与目前性能较好的剪枝算法的压缩比、加速比和性能损失进行了比较,结果如表5所示.
表5 与其它算法性能对比Tab.5 Performance comparison of other algorithms
CR值越大表明模型中被剪掉的冗余参数越多,模型存储复杂度降低.SR值越大表明模型所需要的计算量越小,模型的计算复杂度降低.表中PL表示性能损失,对于分类任务而言为准确率降低量,对于目标检测任务而言为mAP降低量.
从压缩比指标来看,本文所提出的结构化条带剪枝算法的压缩比略低于DCP[24]算法和AutoPruner[21]算法,分别低0.03和0.09,优于其它性能较好的同类算法.但是本文所提出的剪枝算法性能损失相比DCP算法和AutoPruner算法,分别小0.12和0.49.DCP算法的加速比比本文所提出的算法高0.57,AutoPruner的加速比比本文所提出的算法低0.59.
从性能损失指标来看,随机剪枝算法[38]的性能有0.52%的提升,本文算法性能降低了0.9%.但是本文所提出的算法的压缩比略高于随机剪枝算法.本文所提出的算法性能损失比ThiNet-70算法和NISP-50-B算法略高,分别为0.06%和0.01%,但是压缩比指标优于这两个算法.
从加速比指标来看,本文所提出的算法优于AutoPruner算法、HAP算法、SSS-32算法;
与ThiNet-70算法、SFP算法、GAL-0.5算法、NISP-50-B算法以及HRank算法相比,压缩比性能相当;
劣于DCP和随机剪枝算法的压缩比指标.
与FPGM[40]算法相比,本文所提出的算法压缩比大于FPGM算法的压缩比,加速比小于FPGM算法的加速比.本文的性能损失小于FPGM算法的性能损失.
由此可见,模型剪枝算法的3个性能评价指标相互之间存在此消彼长的现象,并不能够实现所有指标最优.
为了解决基于卷积神经网络的目标检测算法在轨应用时因其存储复杂度和计算复杂度高而难以实现在轨部署的问题,本文提出一种结构化条带剪枝算法来实现在轨目标检测模型的压缩.本文以RetinaNet模型为基础分别在NWPU数据集和自建数据集上对所提出的结构化条带剪枝算法进行了验证,并与同类性能较好的算法进行了比较,结果表明本文所提出的算法性能良好,具有实际工程应用价值.本文所提出的方法仅在Retinanet模型上进行了验证,但该方法是一个通用剪枝方法,也可以用来对其它目标检测模型进行剪枝.此外,虽然该方法是针对空间应用环境中的目标检测任务所提出的一种模型压缩方法,但是该方法也可以应用在其它应用场景的其它任务中,例如移动设备上目标检测、分类等任务中.针对该方法的硬件加速是一个值得研究的工作,在后续工作中我们将对该算法的硬件加速进行研究.
猜你喜欢剪枝集上条带人到晚年宜“剪枝”保健医苑(2022年5期)2022-06-10基于YOLOv4-Tiny模型剪枝算法成都信息工程大学学报(2021年6期)2021-02-12Cookie-Cutter集上的Gibbs测度数学年刊A辑(中文版)(2020年2期)2020-07-25基于激活-熵的分层迭代剪枝策略的CNN模型压缩计算机应用(2020年5期)2020-06-07链完备偏序集上广义向量均衡问题解映射的保序性数学物理学报(2019年6期)2020-01-13分形集上的Ostrowski型不等式和Ostrowski-Grüss型不等式井冈山大学学报(自然科学版)(2019年4期)2019-09-09华北地区地震条带的统计分析山西地震(2019年1期)2019-03-20剪枝天津诗人(2017年2期)2017-03-16基于条带模式GEOSAR-TOPS模式UAVSAR的双基成像算法系统工程与电子技术(2016年2期)2016-04-16基于 Savitzky-Golay 加权拟合的红外图像非均匀性条带校正方法中国光学(2015年1期)2015-06-06