我这主要是江大白老师的内容!!
深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解(优快云)
深入浅出Yolo系列之Yolov5核心基础知识完整讲解(知乎)
目录
0、基础概念
目标检测算法常见标识物体位置的框:
- 边界框(bounding box)用于标识物体的位置,可以是真实框也可以是预测框,它指目标物体的最小外边界框。常用格式有左上右下坐标,即xyxy;中心宽高,即xywh。
- 真实框(Ground truth box) 是人工标注的位置,存放在标注文件中
- 预测框(Prediction box) 是由目标检测模型计算输出的框
- 锚框(Anchor box)用于预测框计算做参考;基于这个参考,算法生成的预测框仅需要在这个锚框的基础上进行“精修或微调fine-tuning”即可。
1、Yolov5四种网络
YOLOv5官方代码中,给出的目标检测网络中一共有4个版本,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个模型。
YOLOv5s整体的网络结构图
本文以YOLOv5s的网络结构为主线,讲解与其他三个模型(YOLOv5m、YOLOv5l、YOLOv5x)的不同点。
YOLOv5s网络是YOLOv5系列中深度最小,特征图的宽度最小的网络。其他的三种都是在此基础上不断加深,不断加宽。
2、核心基础内容
2.1 YOLOv5核心基础内容
上图即YOLOv5的网络结构图,可以看出其分为输入端、Backbone、Neck、Prediction四个部分。
Backbone:主干网络,其大多时候指的是提取特征的网络。主干网络的作用就是提取图片中的信息,供后面的网络使用。经常使用的网络是resnet、VGG等(非自己设计),这些网络在分类等问题上的特征提取能力很强。
neck:其作用是更好地融合/提取backbone给出的feature,从而提高网络的性能。
基本组件:
CBL:由Conv+Bn+Leaky_relu激活函数三者组成。
Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
CSPX:借鉴CSPNet网络结构,由卷积层和X个Res unint模块Concate组成。
SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。
其他基础操作:
Concat:张量拼接,会扩充两个张量的维度,例如26*26*256和26*26*512两个张量拼接,结果是26*26*768。
add:张量相加,张量直接相加,不会扩充维度,例如104*104*128和104*104*128相加,结果还是104*104*128。
YOLO5作者的算法性能测试图:
YOLOv5s网络最小,速度最快,AP精度也最低。若检测的以大目标为主,追求速度,是个不错的选择。其他的三种网络,在YOLOv5基础上,不断加深加宽网络,AP精度也不断提升,但速度的消耗也在不断增加。
2.2 Yolov5核心基础内容
2.2.1 输入端
(1)Mosaic数据增强
YOLOv5中使用的Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接,对于小目标的检测效果是不错的。
在平时项目训练时,小目标的AP一般比中目标和大目标低很多。而COCO数据集中也包含大量的小目标,但比较麻烦的是小目标的分布并不均匀。
小、中、大目标的定义:2019年发布的论文《Augmentation for small object detection》对此进行了区分: