APP下载

面向城市路况交通标志识别的VGG网络剪枝与量化

2021-05-24张志佳刘立强杨欣朋王士显

小型微型计算机系统 2021年6期
关键词:交通标志剪枝复杂度

林 雪,张志佳,刘立强,杨欣朋,王士显

1(沈阳工业大学 信息科学与工程学院,沈阳 110870)2(辽宁航天凌河汽车有限公司研发部,辽宁 凌源 122500)

E-mail:18201084058@163.com

1 引 言

交通标志识别是智能交通系统[1](Intelligent Transportio System,ITS)的重要组成部分,传统的交通标志识别采用人工设计特征与机器学习相结合的识别方法,包括基于浅层神经网络或支持向量机等算法,通过掌握的先验知识设计特征,要求设计人员对特征掌握程度较高,例如模板匹配等,将输入样本与模板进行相关度匹配进行分类[2],以及传统特征与深度特征相结合[3]的方法进行识别.

在LeCun 等人确立了卷积神经网络(CNN)的现代结构LeNet-5之后,卷积神经网络成为目标识别的主要研究方向,学者们对LeNet网络进行复杂度的升级和深度的扩展,衍生出了AlexNet、GoogleNet和ResNet等深度网络[4].大部分深度神经网络中存在巨大的计算冗余,真正对识别结果做出贡献的权值仅有5%(Denil M,2013)[5],舍弃冗余保留对识别结果影响较大的权重参数就可实现目标识别在大部分应用中的需求.模型压缩可从模型结构与卷积方式的角度对模型进行轻量化改进如SqueezeNet(Forrest N.Iandola,2016)[6]、MobileNet(Howard A G,2017)[7]以及ShuffleNet(Zhang X,2017)[8]等,也可通过剪枝与量化的方式对模型结构与参数进行优化.模型剪枝主要分为权重剪枝和通道剪枝两种方式,通道剪枝在减少计算量的同时也压缩了模型的横向结构,成为了模型剪枝的主要研究方向,常见的有基于范数[9]或基于几何中心(Yang He,2018)[10]的剪枝方法.模型量化的两个方向是权值共享和权值精简,如Deep Compression算法(Han S,2015)[11]在剪枝后通过k-means聚类确定量化阈值,并对同一聚类的参数共享聚类中心的权重值.

VGGNet是对AlexNet的改进与加深,采用3×3小卷积核的多层串联代替大卷积核,减少了网络的参数量与计算量,加深网络的深度带来更多层次的特征提取.在实际应用中,交通标志识别的距离为20米-50米,在该区间内采集所得图像中交通标志为小目标,VGG的3×3小卷积核可以提取更加细节的交通标志特征.

针对沈阳及周边市区路况中的常见交通标志,本文选用VGGNet以及自采数据集训练交通标志识别模型,基于LASSO回归对卷积通道进行剪枝以减小模型宽度,固定通道后通过恢复训练提高模型识别精度;以K-L散度为阈值选择标准,将参数由float32形式量化为int8形式,拟合复杂模型的参数分布;以数据融合的方式扩增数据样本,解决样本不均衡以及深层网络训练过拟合的问题.

2 基于LAOSS回归的模型剪枝

通道剪枝以卷积核为剪枝对象,根据确定的通道剪枝标准将特定通道剪去,这种剪枝方法避免了参数剪枝会引起不规则的内存访问的弊端.本文基于通道剪枝的结构化稀疏思想,利用Laoss回归的思想对卷积通道进行裁剪,解决网络架构过大计算冗余的问题.

2.1 岭回归与LAOSS回归

卷积神经网络参数量巨大带来冗余问题的同时也会造成训练模型的过拟合问题,通常通过对Loss引入正则化惩罚项解决过拟合问题.

使用L2范数正则化惩罚项时:

(1)

L2范数正则化称为岭回归.将正则化项中的L2范数替换为L1范数:

(2)

以L1范数为惩罚项的线性回归方式称为LASSO回归.LASSO回归比岭回归更优越的地方在于易于将权重wT的分量稀疏为0.

图1 LASSO回归和岭回归Fig.1 LASSO regression and ridge regression

由图1可看出L1范数等值线为菱形,Loss等值线容易与范数等值线的顶点相交,范数等值线的顶点在坐标轴上,可将权重向量中的某一参数归为0.

2.2 剪枝流程

神经网络剪枝过程分为两步:1)根据剪枝标准剪裁掉不重要的通道;2)恢复训练保留的固定通道.神经网络训练的误差公式为:

(3)

固定W值,利用LASSO回归将参数向量β中的某些元素βi归为0同时舍去βi对应通道;随后固定β值,重新训练W.

(4)

‖β‖0≤c′

剪去β向量中的0元素对应的通道,对剩下的通道重构误差进行恢复训练.恢复训练的损失函数为:

(5)

3 基于K-L散度的模型量化

模型量化的主要目的是为了减小模型的占用内存、压缩模型的计算量和运行时间,使模型能够在移动嵌入式设备上运行.本文将float32浮点型权重卷积操作用更精简的低比特位权重如int8卷积操作代替,达到压缩模型的目的.

3.1 K-L散度

p(x),q(x)是两个离散随机变量的概率分布函数,p(x)关于q(x)的相对熵为:

(6)

真实分布相对于理论分布的相对熵称为前向K-L散度,K-L散度具有非负性和不对称性.量化过程中,原始模型权重分布为最优期望分布,对原始模型进行量化得到拟合模型,拟合模型的权重概率分布与原始模型越接近越好,本文采用相对熵即K-L散度作为拟合误差优化量化结果.

3.2 量化流程

通常情况下权重参数的量化是找到权重分布的最大绝对值,以此作为最大边界与int8做等比映射得到量化后参数.但大部分神经网络模型中各层的权重分布高度不均匀,通过直接映射的方式拟合原始参数会产生信息损失,量化结果并不理想.本文采用最佳阈值的思想,确定最佳阈值|S|,将±|S|以及绝对值更大的参数均映射为±127,舍去权重分布中绝对值较大但分布较为稀疏的权重.

K-L散度作为量化的误差标准,最优化拟合分布q(int8)使其最接近期望分布p(float32).

算法.模型量化

输入:Calibration dataset,Model_a(FP32),Deploy_prototxt_file

Begin:

原始模型Model_a(FP32)的概率分布P(Model_a)=probability_distribution(Model_a);

收集各层校准数据集权重值直方图,确定阈值s1…sn;#阈值内分布占比不低于固定值

For i=1→n

Int8 Model_ b

{

截断阈值外的参数加到阈值位置得到截断模型Model_a′;

对截断模型进行int8量化Model_b = Quantize(Model_a′,int8);

反量化Model_b恢复参数位数得到反量化模型Model_b′;

计算量化后的概率分布P(Model_b)= probability_distribution(Model_b′);

求得量化模型与原始模型的K-L散度Di(a‖b)= KL_divergence(P(Model_a),P(Model_b));

}

排序得到Di(a‖b)最小时对应的i值确定最佳分布阈值s

s=Sort(Min(Di(a‖b),i)

End

输出:Model_b #选用s对应的量化模型Model_b

4 数据采集与扩增

数据是网络训练的基础,为了提高模型的实用性,本课题在沈阳及周边市区真实街景下采集数据用于模型的训练,数据融合的方式扩增训练样本数量,并增加正则化惩罚项.为了本文数据集采自2018年11月-12月不同时间,不同天气状况下沈阳市及周边城市交通环境中,保证了数据的多样性.

4.1 数据采集

拍摄视频的方式采集视频,对视频分帧获取得到样本图像,图2为60km/h标志的样例.

图2 采集到交通路口的标志数据Fig.2 Signage data at traffic intersections

视频分帧后通过目标检测截取共6787个样本,包括常见的10类交通标志,2/3样本为训练集、1/3为测试集进行模型训练.为了防止过拟合,通过数据增强等方式进行数据扩增.

4.2 数据扩增

本文采用SamplePairing思想对自采数据集进行数据扩增,从训练集抽取的两幅图像1∶1叠加合成一个新的样本,选取其中一个样本的标签作为新样本的标签,补充数据集的丰富度.

选取标签为ya的训练图像xa与标签为yb的训练样本xb融合,求得平均值作为新样本,标签采用二者之一.10类样本都可引入了其他9种类型的相关噪声,通过数据增强的形式增加样本中的噪声,对模型增加了正则化项效果如图3所示.

进行数据扩增是为了平衡样本数量,同时平衡训练过程中的学习方向.可以通过融合后同时拥有两个样本特征但只有一个标签的数据明晰特征界限,提高识别精度.原始数据集中样本种类多但样本数量的差异过大,对于原始样本数量过小的类别要想平衡到可以训练的规模会掩盖了原始的特征无法进行训练学习,所以选取了十类数量较多的样本通过融合扩增平衡数量,并对其进行训练.

图3 正则化惩罚Fig.3 Regularization penalty

5 实验结果及分析

本文中交通标志识别模型均是通过Caffe框架学习训练,本实验实现的操作系统为Linux Ubuntu16.04,系统硬件配置为Intel(R)HD Graphics 530,显存为4G,CPU为Intel(R)Core(TM)i7-6700HQ CPU @ 2.60GHz,内存为8G.

5.1 模型剪枝结果与复杂度分析

采用基于L1范数的Loass回归,通过收缩惩罚参数λ对通道进行剪裁,后续仍然采用最小均方误差作为误差标准对固定通道后的模型进行恢复训练.由表1可知,剪枝VGG模型得到VGG-cp模型,减少5倍卷计量,top-1损失0.4%,但GPU运行速率有明显的提升.

表1 通过LASSO优化剪枝后模型对比Table 1 Model comparison after pruning

模型剪枝是一个训练与剪枝同时进行的动态过程所以训练过程中模型的单次算量FLOPS介于VGG与VGG-cp之间.基本操作是一个训练过程,迭代次数为n的训练,时间复杂度介于O(VGG(flops)×n)与O(VGG-cp(flops)×n)之间.一个完整的基本操作由各层串联而成,单层计算量flops=M×N×K×K×H×W,其中M、N为输入及输出通道数,K为卷积核大小,H、W为特征图大小.通过计算VGG及VGG-cp各层计算量得出,迭代n次时模型剪枝的时间复杂度介于O(1.55×1010n)与O(3.28×109n)之间.剪枝过程的空间复杂度介于VGG与VGG-cp的参数量之间,即O(VGG(params))与O(VGG(params))之间.单层参数量params=N×(K×K×M+1),其中M、N为输入及输出通道数,K为卷积核大小.通过计算VGG及VGG-cp各层参数量得出,模型剪枝的空间复杂度介于O(1.38×108)与O(1.26×108)之间.

5.2 模型量化结果与复杂度分析

由表2可知量化后模型的参数类型由float32变为int8,空间占用为原模型的1/4.VGG模型量化后GPU运行速度提升11.3%,VGG-cp模型量化后GPU运行速度提升33.6%,但剪枝模型已经经过一次去除冗余,再次量化对模型精度损失较大.

表2 量化结果Table 2 Quantitative results

模型量化的基本操作为量化与反量化,单层网络的参数量为params=N×(K×K×M+1),其中M、N为输入及输出通道数,K为卷积核大小.VGG与VGG-cp的量化参数量分别为1.38×108与1.26×108,量化的时间复杂度为O(1.38×108×2×n)=O(2.76×108×n)和O(1.26×108×2×n)=O(2.52×108×n),量化的空间复杂度为O(1.38×108)与O(1.26×108).

5.3 数据扩增结果

图4为原始数据10类共6787个样本的数据分布,按照10类样本的数据量由大到小做0.1-1的升序比例的数据扩增.图5为融合扩增后10类共9115个样本的数据分布,因为数据量小的种类扩增比例大,所以各类数据分布更加均匀.由表3可知通过数据扩增后的训练结果均有提升,top-1错误率减少0.9%,top-5错误率减少0.2%.通过对300个交通标志样本进行测试得到,数据扩增后训练模型的误测数少于原始训练模型,可知模型获得了更高的拟合能力.

图4 原始数据Fig.4 Original data

图5 扩增后数据Fig.5 Data amplification

表3 数据扩增训练结果对比Table 3 Comparison of data amplification training results

6 总 结

面向城市路况的交通标志识别模型的优化与训练,本文采用基于Laoss回归的通道剪枝方法,压缩网络横向结构提高识别速率,GPU运行速度提高了29.6%,VGG模型模型空间占用减少30M;以K-L散度作为误差损失拟合模型的参数分布,将VGG模型空间缩小为原来的1/4,GPU运行速度提高了12.8%;通过数据融合对数据进行扩增提高模型的推演能力,Top-1提高了0.9%测试识别率,通过样本测试实验的误测数降低证明模型的拟合能力得到了提高.

猜你喜欢

交通标志剪枝复杂度
基于梯度追踪的结构化剪枝算法
全球大地震破裂空间复杂度特征研究
基于YOLOv4模型剪枝的番茄缺陷在线检测
工业场景下基于秩信息对YOLOv4的剪枝
基于双向特征融合的交通标志识别
数字经济对中国出口技术复杂度的影响研究
Kerr-AdS黑洞的复杂度
非线性电动力学黑洞的复杂度
剪枝
交通标志小课堂