模型整体框架
对应代码文件 yolov5 -> models -> .yaml文件
不同yaml文件的depth_multiple、width_multiple不同,通过这两个参数控制模型大小
模型从小到大依次为 n -> s -> m -> l -> x
示例:yolov5s.yaml
module
-
Conv——ConvBNSiLU(Convolution, Batch normalization,SiLU)
- Activation——SiLU(Sigmoid Linear Unit)
- x ∗ s i g m o i d ( x ) = x / ( e − x + 1 ) x * sigmoid(x) = x / (e ^ {-x} + 1) x∗sigmoid(x)=x/(e−x+1)
- 有利于模型收敛(有极小值点)
- Activation——SiLU(Sigmoid Linear Unit)
-
SPP(Spatial Pyramid Pooling)/SPPF(Spatial Pyramid Pooling Fast)
- SPP是何凯明15提出的,在RCNN中第一阶段检测出来的候选框大小不一样,为了让这些候选框可以变成固定大小送进FC层,SPP就达到了这一目的。
- yolov5作者提出了SPPF,用更快的速度达到了SPP一样的效果 -
C3(cross stage partial network with 3 convolutions)
- C3中的3指的是用了3个ConvBNSiLU层,在第一列(backbone)中利用BottleNeck1(带resnet),更利于增加网络深度。
补充
从全局角度分析模型,模型主要有三列构成,首先通过第一列自上向下的模块得到感受野越来越大的feature map,但是在大的感受野上丢失了局部特征,由此通过第二列的自下向上的模块进行特征融合,呈现出FPN (feature pyramid networks):特征金字塔网络结构。
同时,在FPN层的后面还添加了一个自底向上的特征金字塔。其中包含两个PAN结构。这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行特征聚合。
FPN (feature pyramid networks):特征金字塔网络
采用多尺度来对不同size的目标进行检测;
如图所示,FPN是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图。