YOLO

参考目录:

论文:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

YOLO论文解读:https://zhuanlan.zhihu.com/p/31427164

fasterRCNN是two-stage的目标检测算法,即分别完成分类和回归任务。而YOLO提出将物体检测作为一个回归问题进行求解,即输入图像经过一次网络,就得到物体的位置、类别和置信度,开启了one-stage目标检测。

YOLO的网络结构:

1. YOLO的网络结构

(这段将在我看完YOLO的代码后来补充)

2. 创新点和核心思想

YOLO的创新点和核心思想主要可以总结为以下几个:

2.1 网格

将输入图像设置若干个等间隔的线,假设纵向S条,横向S条,这些线会将图像分割为S*S个cell。每一个cell对应着一个类别,标签的类别将有ground truth决定。在训练和推理过程中,判断一个bbox的方法就是看这个bbox的中心点落在哪一个cell中。因此,一个cell中对应的所有bbox的类别都是同一类

2.2 confidence

引入了置信度confidence的概念。confidence具有两重信息:(1)目标中心是否落在cell中;(2)预测值和ground truth的IoU。因此,可以表示为:

\[confidence = Pr(object)·IoU^{truth}_{pred}\\ where\ Pr(object) = \begin{cases} 1,\ cell\ in\ bboxes\\ 0,\ others \end{cases} \]

同时,bounding box的表示从四维增加到了五维,即由原先的\((x,y,w,h)\)变为\((x,y,w,h,confidence)\),添加了置信度(且这里的\(x,y,w,h\)都是经过归一化的)。

2.3 class-specific confidence score

在进行推理时,会将每个网格预测的条件概率(即,对于这个网格,类别为\(Class_i\)的概率)\(Pr(Class_i|Object)\)和confidence相乘,即:

\[Pr(Class_i|Object) \times confidence \\ = Pr(Class_i|Object) \times Pr(object) \times IoU^{truth}_{pred}\\ = Pr(Class) \times IoU^{truth}_{pred} \]

最后这个成绩为每个bbox的class-specific confidence score,既包含了bbox属于的类别的概率,又包含了bbox的位置的准确度。

3. Training

YOLO的训练过程中,在设计Loss函数时考虑了以下几个方面:

3.1 bbox的坐标预测误差

作者认为,对于不同大小的bbox,相比于大bbox的大小预测有了一定的偏差,小的bbox的大小有了相同的偏差是更致命的。因此,在loss中同等对待不同大小bbox的预测偏差是不合理的。因此作者选择将w和h用\(sqrt\)进行压缩,这样随着w和h的增大,惩罚程度的上升会逐渐变慢。

3.2 bbox的confidence预测误差

图像中的大部分cell可能包含背景(即不包含目标),因此大多数box的confidence为0.作者认为confidence为1和0的bbox不应该同等对待,confidence=0的惩罚被减轻了,乘以了权重\(\lambda_{noobj} = 0.5\).

此外坐标预测误差和conference预测误差之间也有权重\(\lambda_{coord} = 5\).

3.3 分类预测误差

前面提到过,每一个cell对应的bbox都是同一类,因此在计算时只需要逐cell计算,而不需要逐bbox计算。

最终的预测误差如下:

posted @ 2024-01-31 17:04  PaB式乌龙茶  阅读(8)  评论(0编辑  收藏  举报