YOLOV1全解
You Only Look Once,把检测问题转化成回归问题,一个CNN就搞定了!!!效率高,可对视频进行实时检测,应用领域非常广,到V3的时被美国军方用于军事行动,作者出于某种压力就退出了后续版本的更新,改由其他大佬继承衣钵!
论文地址:
铭记历史
当年Fast R-CNN效果很好,但是速度太慢,距离实时检测差得远,于是YOLO横空出世。
YOLO发展历史
网络特征
- 直接对输入图预测出边框坐标(x,y,w,h)和物体类别(C)、置信度(Confidence),是典型的One-stage目标检测方法,运行速度快,可以做到实时检测。
网络结构
- 结构:24个卷积层,4个池化,2个全连接层
核心思想
候选框策略
- 将输入图像分为
个grid;
- 每个grid预测 B 个Bounding Box,每个bbox包含4个坐标和置信度;
- 每个grid预测 C 类类别概率
预测流程
- 将图片划分为
个Grid
- 目标中心落在哪个grid cell里,就由其预测
- 每个grid预测 2 个bbox
- 每个grid预测 20 个类别概率(当时VOC数据集是20分类)
网络结构和预测合体
1.合体效果图如下:
2.图中数字解释:
- 7 × 7:表示把图片分成7 × 7共49个Grid;
- 30则代表每个Grid有30个参数:20 +2 × (1+4)=30
- 20个分类、2个Bounding(候选框),每个候选框分别有1个Confidence和(x,y,w,h)表示的坐标位置 。
- 选择置信度大的框作为预测结果
- 一个Grid只有一个预测结果(图像重叠就会有丢失)
- 参数归一化
- x、y是相对于对应grid cell边界的坐标,归一化到0到1之间 w、h 是bbox相对于图片宽高的比例,归一化到0到1之间
损失函数
整体概览
1.整个损失函数由5部分组成(框中有无物体时的中心点坐标,宽高和置信度之间的差距):
2.整体合并后公式如下:
详细解读
1.公式部分非常规操作详解:
①关于开根号
②关于S的平方以及i和j
③关于权重系数
④关于noobj
NMS处理(后处理)
非极大值抑制处理
非极大值抑制(Non-Maximum Suppression, NMS)是目标检测任务中的一种后处理技术,用于消除冗余的边界框(Bounding Boxes),从而确保每个检测对象只有一个最准确的边界框。在诸如R-CNN、YOLO、SSD等深度学习模型中,NMS是一个关键步骤,它帮助提高检测结果的质量和准确性。以下是NMS的工作原理及处理过程:
NMS 的工作原理
1. 得分排序:
- 首先根据每个预测框的置信度分数(confidence score)对所有候选框进行降序排序。置信度分数反映了模型认为该框包含目标的可能性。
2. 选择最高得分框:
- 从排序后的列表中选取具有最高得分的边界框作为当前最佳框,并将其加入最终的输出列表中。
3. 计算IoU并过滤重叠框:
- 对于剩余的每一个候选框,计算其与当前最佳框之间的交并比(Intersection over Union, IoU)。IoU衡量了两个边界框的重合程度。
- 如果某个候选框与当前最佳框的IoU超过了预设阈值,则认为这两个框覆盖了同一个物体,因此将该候选框移除。
4. 重复上述步骤:
- 在移除了与当前最佳框高度重叠的候选框之后,再次从未处理的候选框中选择得分最高的一个作为新的最佳框,并继续执行第3步的操作,直到没有更多的候选框可以处理为止。
5. 输出最终结果:
- 经过一系列迭代后,剩下的那些没有被抑制掉的边界框即为最终的检测结果。
改进版 NMS
传统的NMS虽然有效,但在某些情况下可能会过于严格地剔除一些实际有效的检测框。为此,研究人员提出了几种改进版本:
- Soft-NMS:不是直接丢弃高IoU的框,而是降低它们的得分,这样可以让更多潜在正确的框保留下来。
- Adaptive NMS:动态调整IoU阈值,对于不同类别或不同大小的目标采用不同的策略。
- Fast NMS:通过近似方法加速传统NMS的速度,适用于实时应用场合。
- Diou-NMS 和 Ciou-NMS:引入了距离度量(如中心点距离)和形状相似性度量来改进IoU标准,使得NMS更加符合实际情况。
算法性能对比
1.各网络性能对比:
2.和Fast R-CNN多维度对比:
YOLOV1特点总结
优点
- 更快更简单:可达到45fps,远高于Faster R-CNN系列,轻松满足视频目标检测。
- 避免产生背景错误:YOLO区域选择阶段是对整张图进行输入,上下文充分利用,不易出现错误背景信息。
缺点
- 定位精度低:网格划分有些粗糙和单一,多少难定
- 每个Cell只预测一个类别,如重叠或距离太近效果比较差
- 小物体检测效果一般,长宽比可选尺寸及比例单一
YOLOV2
论文地址:
和V1对比
- 加入不同优化点后产生的效果对比
加入BN
(YOLOV1出来的时候还没有BN)
- V2加入Batch Normalization
- 网络的每一层的输入都做了归一化,收敛相对更容易
- 经过Batch Normalization处理后的网络会提升2%的mAP
- 目前Batch Normalization已经成网络必备处理
更大分辨率
- V1训练时用224×224,测试时用448×448,影响最终效果
- V2训练时额外进行10次448×448的训练微调
- 使用高分辨率分类器后,YOLOV2的mAP提升了约4%
网络结构
采用darknet-19作为主干网络:
- Darknet,实际输入为416*416
- 没有FC层,5次降采样(5次池化操作尺寸维度发生更改)(416 ➗32=13)
- 1*1卷积节省了很多参数
包含:19个conv层、5个max pooling层、无FC层,每个conv层后接入BN层
锚框策略
- 在YOLOv2中,引入了Anchor Boxes(先验框)(选出N个最明显的预测框)的思想来替代YOLOv1中直接预测边界框的方式。
Anchor Boxes
1.Anchor Boxes,锚框,先验框,也就是所谓的候选框。Grid会预设多个Anchor Boxes,他们分别具有不同尺寸,作为预测边界框的参考模板。YOLOv2基于Anchor Boxes预测相对偏移量并对宽高做调整,使得预测更加灵活,能够适应各种物体大小。
2.描述Anchor Boxes:
- 一般用大小(Scale)和形状(ratio,比例)来描述:
聚类先验框
1.Faster R-CNN系列共3(个尺寸)×3(个比例)=9种先验框,但在数据集未必都适配;
2.V2则采用K-means聚类中的距离:根据数据中的标注框进行聚类,尺寸无关的距离准则公式如下(先聚类后分类)
2.计算步骤:这里的样本是指标注的目标框
①选择K个样本作为初始聚类中心
②针对数据集中每个样本,计算它到K个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中
③针对每个类别,重新计算它的聚类中心
④重复②、③,直到达到某个终止条件(迭代次数、最小误差变化)
- K(样本数量)取值很关键:太小特征差距大,太大特征差距太小,经观察5是一个比较折中的值;
- 整体Precious降低0.3%,但是召回率却从81%提升到88%;
边界框回归
YOLOV2不再使用全连接层预测每个格子的坐标,而是使用基于Anchor的边界框回归公式。
假设:P是候选框、G是真值框、G'是输出框
目标:寻找一种关系使得候选框经过微调后得到一个跟真实框更接近的回归框
常规偏移计算
YOLOV1是通过模型直接预测位置和大小,这就带来了一系列问题:
- 违背了YOLO的以格子为中心点的预测思想;
- 导致收敛很慢,模型很不稳定,尤其刚开始进行训练的时候;
位置偏移计算
- 然后可以计算相关偏移系数(找寻映射函数过程):候选框和真值框均已知,目标是二者尽可能接近
- 模型预测值: 设
为模型预测值,那么输出框的计算公式如下:
边界框回归(约束候选框中心坐标位置)
- (计算出的中心店坐标不会飘出整个框)