YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
前言
前提条件
相关介绍
Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。它是一个在COCO数据集上预训练的物体检测架构和模型系列,代表了Ultralytics对未来视觉AI方法的开源研究,其中包含了经过数千小时的研究和开发而形成的经验教训和最佳实践。
yolov5s.yaml解读
nc : 80
depth_multiple : 0.33
width_multiple : 0.50
- nc: 8 代表数据集中的类别数目。
- depth_multiple: 0.33
- 用来控制模型的深度,仅在number≠1时启用。
- 如第一个C3层的参数设置为[ -1, 3 , C3, [ 128 ] ] ,其中number= 3 ,表示在yolov5s中含有 3 × 0.33 ≈ 1 个C3。
- width_multiple: 0.50
- 用来控制模型的宽度,主要作用于args中的channel_out。
- 如第一个Conv层,输出通道数channel_out= 64 ,那么在yolov5s中,会将卷积过程中的卷积核设置为 64 × 0.50 = 32 ,所以会输出 32 通道的特征图。
backbone :
[ [ -1 , 1 , Conv, [ 64 , 6 , 2 , 2 ] ] ,
[ -1 , 1 , Conv, [ 128 , 3 , 2 ] ] ,
[ -1 , 3 , C3, [ 128 ] ] ,
[ -1 , 1 , Conv, [ 256 , 3 , 2 ] ] ,
[ -1 , 6 , C3, [ 256 ] ] ,
[ -1 , 1 , Conv, [ 512 , 3 , 2 ] ] ,
[ -1 , 9 , C3, [ 512 ] ] ,
[ -1 , 1 , Conv, [ 1024 , 3 , 2 ] ] ,
[ -1 , 3 , C3, [ 1024 ] ] ,
[ -1 , 1</