yolov7 paper阅读笔记

不同于现有的主流方法,yolov7的主要改进点在优化训练过程,
包括优化modules 和 优化方法,这些会加强traing cost从而提高object detect的accuracy, 但是不会提高inference cost(时间开销),

这个改进方法和优化方法叫做trainable bag-of-freebies。

最近,模型的re-parameterization和动态label assignment在模型训练和object detection中都是重要话题。

yolov7因此Propose了planned re-parameterized model
根据动态label assignment存在的问题:怎么给多个output layers branches分配动态的targets,yolov7提出了coarse-to-fine lead guided label assignment.
compound scaling,
可减掉40%的参数和50%的计算量。

model re-parameterization
相当于组合了多个计算的modules into one at inference stage.
分为module-level 和 model-level.
model level的有2种常用的方法:
1.用不同training data训练同一模型,得到多个weight, 求这些weight的平均
2.把不同迭代次数的weight求平均
但设计好的一些re-parameterization方案并不适用于所有的网络结构,因此,yolov7重新设计了一个re-parameterization和相关的应用策略。

model scaling
根据计算设备的不同scale up or down一个模型
可scale的因素有:图像size, layer数量,channel数量,特征金字塔层数
这个方向network architecture search(NAS)可以自动搜索合适的缩放因子,缺点是计算量很大
目前这个方向的方法都是在研究各个单独的缩放因素(假设各因素独立),而不是整体研究。
yolov7提出一个混合因素的缩放方案。

结构设计
目前很多设计实效性方案的考虑多是参数的数量,计算量等,
本文考虑的是梯度路径,参考CSPVoVNet和ELAN的结构,
因为ELAN中提出如何设计efficient network: 控制最短和最长的梯度路径,deeper net就可以learn和收敛更快。
然后yolov7在ELAN的基础上提出了Extended-ELAN(E-ELAN), 结构如下(真够复杂的):
yolov7 paper阅读笔记_第1张图片
在大规模的ELAN中,梯度长度和stacking number of computation blocks已经达到了一种稳定的状态,
如果继续增加computational blocks, 这种稳定的状态会遭到破坏,
proposed E-ELAN使用expand, shuffle, merge机制,在不破坏原有梯度path的基础上增强学习能力。

用group convolution来扩展channel和computation blocks的基数。
computational layer中所有的计算block共用相同的group parameter和channel multiplier。
得到的feature map会shuffle到g个组,然后连接起来,
每个group的channel数和原始结构的channel数是一样的。

model scaling for concatenation-based models
model scaling的目的在于满足不同的推断速度需要(计算量的不同)
级联模型只scale一个因素的话,会影响in-degree和out-degree, 见图,
所以,提出了同时scale几个factor, 比如图3的scale depth的时候,还要考虑到它对输出有什么变化,要同时scale width。
这样会保持模型最初的设计,保持最优的结构。

yolov7 paper阅读笔记_第2张图片
planned re-parameterized convolution
re-parameterization直接用在不同的网络,可能效果不好。
经过测试,发现RepConv不能用在ResNet结构中,如果用RepConv结构,就不用identity connection,
下面是测试的一些结构
yolov7 paper阅读笔记_第3张图片
deep supervision 与 head
deep supervision经常用在训练很深的网络,主要通过在网络中间层增加附加的head以辅助训练。
本文中,把和最终output相关的较lead head, 辅助训练的叫auxiliary head
yolov7 paper阅读笔记_第4张图片

label assignment
以前的训练是直接把output和ground truth的label直接结合起来
而最近通过output的分布等信息,和ground truth综合考虑,通过某种方法产生soft label,
比如YOLO就是通过把预测的边框和ground truth的IOU作为soft label。

目前存在的问题是还没有文献指出如何分配soft label给auxiliary head和lead head,
已有的方法是分别分配的,而yolov7是用lead head的预测值同时分配给auxiliary head和lead head
理由是认为lead head有更强的学习能力,学习出来的soft label更能表现data和target的关联性。
yolov7 paper阅读笔记_第5张图片
coarse to fine label
产生两种soft label, 即coarse label 和 fine label
fine label和lead head产生的soft label一样
coarse label就是把正样本的条件放松一些,让更多的grid被认为是positive target,
理由是aux head没有lead head那么强的学习能力,因此让更多的positive信息给它,集中在优化recall的方式。
最后的output会从高recall结果里选择高precision的。

但是要注意coarse label必须和fine label是接近的,
为了抑制不好的coarse positive,yolov7在decoder中加了一些限制,动态调整coarse label和fine label的比重,保证fine label的优化上边界始终比coarse label要高。

some tricks in training
conv-bn-activition中的BN, CNN与BN直接连接
把卷积层的feature map和YOLOR的implicit knowledge结合:把implicit knowledge在推断时提前计算,作为一个向量,这个向量可以和bias, 卷积层的weight相结合(加/乘)
EMA model,作为最后的inference model

不同的版本
yolov7-tiny(edge GPU), yolov7(normal GPU), yolov7-W6(cloud GPU)
yolov7-E6(proposed E-ELAN)
其中激活函数:
yolov7-tiny: ReLU, 其它:SiLU

baseline:
前一版本的YOLO和YOLOR

与前几版yolo的实验对比
yolov7 paper阅读笔记_第6张图片
Ablation study
scale:
综合scale width 和 depth 与 单独scale这俩的对比实验:
yolov7 paper阅读笔记_第7张图片
re-parameterized model:
验证级联和residual-based model,
选择3-stacked ELAN 和 CSPDarknet验证,
验证ELAN时,把3x3卷积放到不同的位置
yolov7 paper阅读笔记_第8张图片
验证dark block时,由于原来的block没有3x3卷积,因此重新设计了一个block进行验证
yolov7 paper阅读笔记_第9张图片

你可能感兴趣的:(DeepLearning,计算机视觉,人工智能,深度学习)