文章目录
一、yolov5s.yaml
中各行(参数)所表示的意义
1.1 depth_multiple
和width_multiple
介绍
在yolov5s.yaml
中,depth_multiple
和width_multiple
是非常重要的参数,yolov5相比于yolov4,在模型方面最大的特点是灵活,源于其引入了depth_multiple和width_multiple这两个系数,根据对它们值的大小设定,来得到yolov5
不同大小模型:
yolov5s:
depth_multiple: 0.33
width_multiple: 0.50
yolov5m:
depth_multiple: 0.67
width_multiple: 0.75
yolov5l:
depth_multiple: 1.0
width_multiple: 1.0
depth_multiple表示channel的缩放系数,就是将配置里面的backbone和head部分有关通道的设置,全部乘以该系数即可;
而width_multiple表示BottleneckCSP模块的层缩放系数,将所有的BottleneckCSP模块的number系数乘上该参数就可以最终的层个数;
可以发现通过这两个参数就可以实现不同大小不同复杂度的模型设计,因此yolov5比yolov4更加灵活;
1.2 yolov5中新增的Focus模块介绍
1.2.1 Focus模块介绍1
提出了一个新模块Focus(其余模块都是yolov4里面提到的),源码如下:
这个其实就是yolov2里面的ReOrg+Conv操作,也是亚像素卷积的反向操作版本,简单来说就是把数据切分为4份,每份数据都是相当于2倍下采样得到的,然后在channel维度进行拼接,最后进行卷积操作;
其最大好处是可以最大程度的减少信息损失而进行下采样操作;
1.2.2 Focus模块介绍2
作者在特征提取的上层结构中采用了四次slice操作组成了Focus层;
对于Focus层,在一个正方形中每 4 个相邻像素,并生成一个具有 4 倍通道数的feature map,类似与对上级图层进行了四次下采样操作,再将结果concat到一起,最主要的功能还是在不降低模型特征提取能力的前提下,对模型进行降参和加速;
1.7.0+cu101 cuda _CudaDeviceProperties(name='Tesla T4', major=7, minor=5, total_memory=15079MB, multi_processor_count=40)
Params FLOPS forward (ms) backward (ms) input output
7040 23.07 62.89 87.79 (16, 3, 640, 640) (16, 64, 320, 320)
7040 23.07 15.52 48.69 (16, 3, 640, 640) (16, 64, 320, 320)
1.7.0+cu101 cuda _CudaDeviceProperties(name='Tesla T4', major=7, minor=5, total_memory=15079MB, multi_processor_count=40)
Params FLOPS forward (ms) backward (ms