YOLO 学习笔记(一)
前言
本系列将记录笔者在 YOLO(You Only Look Once) 学习中遇到的困难与心得,分享给其他有需求的同学,做为知识库使用。
YOLO 是什么?
YOLO是目标检测模型,目前已发展到 v5 版本。
目标检测是计算机视觉中比较简单的任务,用来在一张图篇中找到某些特定的物体,目标检测不仅要求我们识别这些物体的种类,同时要求我们标出这些物体的位置。
显然,类别是离散数据,位置是连续数据。
机算机视觉的三类任务:分类,目标检测,实例分割。整体上这三类任务从易到难,我们要讨论的目标检测位于中间。
YOLO 的全称是 You Only Look Once,指只需要浏览一次就可以识别出图中的物体的类别和位置。
因为只需要看一次,YOLO 被称为 Region-free 方法,相比于 Region-based 方法,YOLO 不需要提前找到可能存在目标的Region。
Region-free 也被称为单阶段(one-stage)模型
Region-based 也被称为两阶段(two-stage)模型
YOLO 版本对比
YOLO-V1
优点:快速,简单。
缺点:每个 Cell 只预测一个类别,重叠无法解决,小物体检测效果一般。
YOLO-V2
每个卷积层后都加入 Batch Normalization。
相当于网络每一层的输入都做了归一化,收敛相对更容易,从现在的角度来看 BN 已经是必备处理
经过 BN 处理后的网络大约会提升2%的mAP
使用更大的分辨率分类器,V2 训练时额外又进行了10次448*448的微调。
V1 训练时使用的是224*224,测试使用448*448
使 YOLOv2的 mAP 提升了约4%
舍弃全连接层,使用卷积来预测 Anchor Boxes,并且去掉 V1 网络中的池化层,以提高卷机输出的分辨率。
V2 网络的输入分辨率更改为416X416而不是448X448
聚类提取先验框。
YOLO-V3
最大的改进就是网络结构,使其更适合小目标检测。
DarkNet 和 YOLO 系列作者 Joseph Redmon 宣布退出 CV 界,因为YOLO被用于军事,是他不想看到的。
YOLO-V4
设计了强大而高效的检测模型,进一步降低了使用门槛。
修改了很多 SOTA 的方法,对单 GPU 训练更加高效。
YOLO-V5
相比于 YOLOv4,YOLOv5 在原理性方法没有太多改进,在速度与模型大小上比 YOLOv4 有较大提升,可以认为是通过模型裁剪后的工程化应用。
指标分析
mAP:综合衡量检测效果。
在不同置信度阈值中综合考虑所有的 Precision 与 Recall 的情况,综合得出的一个指标值。
IOU:交集和并集的比值。
$$
\begin{flalign*} &
IOU = \frac{Area \space of \space Overlap}{Area \space of \space Union}
& \end{flalign*}
$$交集:真实值和预测值重叠的部分。
并集:真实值 + 预测值。
TP:true positives,正类判定为正类。
真实是好瓜,并正确识别为好瓜。
FP:false positives,负类判定为正类。
真实是坏瓜,并错误识别为好瓜。
FN:flase negatives,正类判定为负类。
真实是好瓜,并错误识别为坏瓜。
TN:true negatives,负类判定为负类。
真实是坏瓜,并正确识别为坏瓜。
precision:精度(真实标注的范围与检测到的范围的重合率)
$$
\begin{flalign*} &
precision = \frac{TP}{TP \space + \space FP}
& \end{flalign*}
$$Recall:召回(查全率,被真实标注的是否被检测到)
$$
\begin{flalign*} &
Recall = \frac{TP}{TP \space + \space FN}
& \end{flalign*}
$$
训练参数
epoch:一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次epoch。
使用训练集中的全部样本训练一次。
batch_size:决定一次训练的样本数目。
从零开始训练模型的话,batch_sise 可以给小一点。
从预训练模型开始的话,batch_sise 可以尽可能给大一点。
因为大的 batch_sise 代表模型迭代每一步会稳定一些。
总的来说 batch_size 太小会有欠拟合倾向(没那么明显), 对模型拟合数据的影响没有 learningrate 大。
建议 learningrate 的值给的稳健一些,不要太大,然后给一个 gpu 范围内承受的最大的 batch_sise。
iteration:使用 batch_size 个样本训练一次。