一、YoloV8
1.网络详解
①backbone部分:第一次卷积的卷积核缩小(由3变为6);CSP模块的预处理卷积从3次变为2次;借鉴了YoloV7的多分支堆叠结构(Multi_Concat_Block)。
所小第一次卷积的卷积核尺寸会损失部分感受野,但是可以加速整个网络的运算速度。同时CSP模块借鉴了多分支堆叠结构,首先使用卷积将通道数扩充为原来的一倍,然后在此基础上进行对半分割(减少一次卷积次数,加速网络)
②FPN部分:不再对骨干网络的特征层进行卷积(可以有效加快计算速度),另外CSP模块预处理次数变为2次。
FPN获取的特征向量分别来自骨干网络的中层(feat1=80x80x256),中下层(feat2=40x40x512),底层(feat3=20x20x1024*deep_mul,其中,deep_mul为深层缩放系数,用一以平衡计算量)。
上采样部分:
feat3经过上采样后与feat2融合后再由CSP模块进行减半得到特征向量P4(40x40x512)
P4经过上采样后与feat1融合后再由CSP模块进行减半得到特征向量P3(80x80x256)
下采样部分:
P3经过一次下采样(3x3卷积)与P4 concat,再使用CSP模块进行特征提取,得到新P4(40x40x512)
新P4同样适用3x3卷积处理后与P5concat,在使用CSP处理,得到新P5(20x20x1024xdeep_mul)
最后FPN模块输出P3,新P4和新P5,可以很好的结合多尺度特征。
③预测头部分:加入DFL模块;同时借鉴了YoloX的anchor free结构,对一些长宽不规则的目标具有优势。
DFL模块的加入使得Yolo Head不会直接获得回归值,而是通过概率的方式的方式获得回归值,若DFL的长度设为8,那么计算方法如下:
预测结果的softmax值 | 0.0 | 0.1 | 0.0 | 0.0 | 0.4 | 0.5 | 0.0 | 0.0 | 点乘 |
固定值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0.1*1+0.4*4+0.5*5=4.2 |
2.Yolo Head的编码
经过模型处理后,会得到3个输出结果,设类别数为num_classes,结果如下:
P3 :回归输出(20x20x4),种类输出(20x20x num_classes)
新P4:回归输出(40x40x4),种类输出(40x40x num_classes)
新P5:回归输出(80x80x4),种类输出(80x80x num_classes)
其中,回归输出的前两个元素代表预测框左上角的位置,后两个元素代表预测框右下角的位置,种类输出的参数为每个类的概率。
将上述结果fatten后得到总回归输出(8400x4),种类输出(8400x num_classes),经过得分排序和非极大抑制筛选后,满足置信度(confidence)的预测框将被输出。其中,非极大抑制的作用是筛选出一定区域内同一种类得分最大的框。