模型剪枝学习笔记2--SlimYOLOv3:Narrower,Faster and Better for Real-Time UAV Application

SlimYOLOv3:Narrower,Faster and Better for Real-Time UAV Application

这篇文章是针对Yolov3做模型剪枝的,开始给出典型的模型剪枝方法流程,如图。
在这里插入图片描述
其次,给出针对yolov3的模型剪枝流程,如图

在这里插入图片描述
什么是深度模型的剪枝?就像论文名字中的更窄(Narrower),它是要减少模型通道数。
去除每个卷积层中不重要的特征通道。所以需要合理地评估特征通道的重要性。
其本质:通过对信道缩放因子强加L1正则化并修剪信息量较少的特征信道来实现卷积层的信道级稀疏度,以获得SlimYOLOv3。

上图中的流程解释如下:YOLOv3经过稀疏训练,得到各通道的尺度因子,然后去除那些尺度因子小的通道,将剪枝得到的模型SlimYOLOv3在数据集上进一步微调,得到检测结果,然后进入下一轮的稀疏训练。以上剪枝过程是迭代重复的,直到满足一定的模型条件,比如模型剪枝率达到一定要求。

这篇论文中,作者使用特征融合技术,引入了空间金字塔(SPP)结构,对yolov3做了一个小改变。SPPmodule包含4个并行的maxpooling layer,核大小分别是1 * 1, 5 * 5, 9 * 9,13 * 13.SPPmodule就可以提取不同感受野的特征,然后在通道维度哪里concat它们。
在这里插入图片描述
作者在检测header往上数第五个卷积和第六个卷积之间加入SPPmodule(从yolo层往输入方向数,第五个和第六个卷积之间加入SPPmodule)。
Detection header的输出是N * N * (3 * (4 + 1 + C)),其中N * N是feature map的尺寸,C是类别数目。

sparsity training

yolov3的网络结构除了yolo层的输入卷积层没有bn层以外,其他卷积层都有bn层,bn层的计算公式:
在这里插入图片描述
公式(1)中,在这里插入图片描述 分别是一个batch的均值和方差,在这里插入图片描述分别是训练缩放比例(trainable scale factor)和偏置(bias)。作者直接使用在这里插入图片描述来衡量通道的重要性,在这里插入图片描述的重要性使用L1回归来衡量,sparsity training的目标公式:
在这里插入图片描述
表示L1回归,在这里插入图片描述用于平衡两个loss,用负梯度方法对非光滑L1惩罚项进行优化,作者使用在这里插入图片描述值大小是0.0001

Channel pruning:

进行完稀疏训练后,引入一个全局阈值在这里插入图片描述决定哪个特征通道被剪掉,使用全局阈值控制所有在这里插入图片描述会被减去百分之几。同时,引入一个局部阈值在这里插入图片描述为了保护一个卷积层内的通道被过度剪枝,避免网络连接结构的完整性受到破坏。

Fine-tuning

对剪枝后的结构进行微调,恢复精度。

Iteratively pruning

迭代剪枝,防止过拟合。

Results and Discussions

在这里插入图片描述
从图看出,yolov3-spp3比yolov3-spp1好,这说明了多感受野可以有效提取多尺度深度特征。
附:yolov3-spp3使用了三个spp模块,分别装在三个检测头的往后数的 5th 和 6th 之间。

发布了29 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/c2250645962/article/details/103870240