YOLO系列论文笔记
YOLO 简介:
论文地址:
项目地址:
英文摘要:
We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabilities. A single neural network predicts bounding boxes and class probabilities directly from full images in one evaluation. Since the whole detection pipeline is a single network, it can be optimized end-to-end directly on detection performance
中文简要说明:
我们提出了一种新的物体检测方法:YOLO。先前关于对象检测的工作是通过重新调整分类器的用途以执行检测。相反,我们将对象检测框定为空间分离的边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像预测边界框和类概率。由于整个检测管道是一个单一的网络,因此可以直接根据检测性能进行端到端优化
YOLO初代算法解析:
YOLO的全称是 you only look once,指只需要浏览一次就可以识别出图中的物体的类别和位置。
YOLO 前的方法称为 Region-based 方法,典型模型为 R-CNN,先通过计算机图形学(或者深度学习)的方法,对图片进行分析,对图片进行一次滑动窗口扫描,搜索可能存在检测目标的区域(Region)并裁切出,然后将得到的 Region 输入分类器,进行线性分类输出,整体分为两阶段。Region-based方法也被称为两阶段(2-stage)方法。
因为只需要看一次,YOLO 被称为 Region-free 方法,相比于 Region-based 方法,YOLO 不需要提前找到可能存在目标的 Region 。因为 YOLO 这样的 Region-free 方法只需要一次扫描,也被称为单阶段(1-stage)模型。
具体实现方法分析:
我们的目的是在一张图片中找出物体,并给出它的类别和位置。目标检测是基于监督学习的,每张图片的监督信息是它所包含的N个物体,每个物体的信息有五个,分别是物体的中心位置(x,y)和它的高(h)和宽(w),最后是它的类别。
YOLO的第一步是分割图片,它将图片分割为 S^2 个 grid ,每个 grid 的大小都是相等的,对于每一个 grid ,YOLO 只要求其识别的物体中心在 grid 中,最后进行统计判别,从而避免了 region 的操作。具体实现时,使 S^2 个 grid 中的每一个都预测出** B 个 bounding box ,有5个量,分别是物体的中心位置 (x,y) 和它的高(h)和宽(w),以及这次预测的置信度**。同时,每一个 grid 也要求通过一次分类器预测类别,产生C位独热码。
所有整个ground truth的长度为:S\times S\times B\times5+C
其中 B 的置信度(confidence)由交并比计算得出:C_B=Pr(obj)\times IOU^{pred}_{truth}
其中定义交并比: IOU=\frac{B_11\cap B_12}{B_11\cup B_!2}
Pr(obj) 是一个 grid 有物体的概率,在有物体的时候 ground truth 为1,没有物体的时候 ground truth 为0。此处不考虑分类。
每个 grid 找到负责的物体并将其识别。实际中操作中,往往存在 object 很大,而 grid 很小,一个物体被多个 grid 识别的情况。为解决这个问题,YOLO 使用了非极大值抑制 Non-maximal suppression(NMS) 的技术。
NMS 原理上依旧是基于交并比实现的,在先前的预测中,confidence 表示这个 object在这个 grid 中的后验概率,并且得益于交并比的数学性质,object 中心在 biunding box 中时 bounding box 的置信度更高,bounding boxes是用中点坐标+宽高表示的,每个 grid 预测的bounding box 都要求其中心在这个 grid 内,不是最中间的 grid 的 IOU 自然就会降低,相应的confidence因此同步降低,同理,真正的最中间的 grid 的 confidence 更大。
删除识别同一 object 中置信度低的且 IOU 高的 bounding box ,完成 NMS。
最后输出:筛选过后的 Bouding Box (x,y,h,w) 向量和置信度 C_C\times C_C :grid 中有 object 的后验概率乘 grid 经过分类器输出的后验概率
YOLO 的损失函数:
损失函数一共有5项:
中心坐标的损失函数,均方误差 MSE;
高和宽的损失函数,用平方根的 MSE,让模型对小尺度的物体更敏感(相比于MSE);
物体检测置信度的损失函数:均方误差 MSE;
线性判别损失:均方误差 MSE;
性能表现
由于 Region-free 的特性,模型运行效率显著上升,YOLOv1 精度表现上没有传统优化迭代后的 RCNN 表现好,存在定位错误 (Error Location) 和召回率低 ( low recall ) 的问题
YOLOv2(YOLO9000) 的改进:
论文:YOLO9000:Better, Faster, Stronger
论文地址:https://arxiv.org/pdf/1612.08242.pdf
代码地址:http://pjreddie.com/yolo9000/
代码地址(旧):https://pjreddie.com/darknet/yolov2/
在YOLO v1的基础上做改进,用multi-scale training的方法,训练得到YOLO v2,它可以在不同图片尺寸上运行,而且在精度和速度上能做很好的权衡;
用object detection和image classification联合训练(joint training)的方法,用大量的目标检测和图片分类的数据去训练了一个能够识别9000种类别的模型YOLO9000;
用k-means cluster的方法来自动选择锚框,而不是像faster R-CNN一样手动选择锚框;
Better(用一系列优化措施得到YOLO v2, 比YOLO更优), faster(用Darknet-19,更快), stronger(用image classification和object detection联合训练得到YOLO9000, 分类能力更强)。
YOLOv3 的改进:
论文:YOLOv3: An Incremental Improvement
论文地址:https://arxiv.org/pdf/1804.02767.pdf
Bounding box and class prediction:
Bounding box 的改进,分类预测的改进(跨尺度预测)
跨尺度预测:进行了三次检测,分别是在32倍降采样,16倍降采样,8倍降采样时进行检测
YOLO v3用新的网络结构来提取特征:Darknet-53:
YOLOv4 的改进:
论文:https://arxiv.org/pdf/2004.10934.pdf
项目地址:https://github.com/AlexeyAB/darknet
Mosaic数据增强方法
Self-Adversarial Training 自对抗训练
CmBN 使用多个独立的 mini-batch 的数据获得一个近似于更大 batch 的统计量以提升学习效果。
modified SAM 空间注意力机制
modified PANet 但是更改了融合方法