You Only Look Once: Unified, Real-Time Object Detection
问题动机与贡献
-
当前存在的物体检测系统通常都是重用分类器实现检测,为了检测一个物体,这些方法通常是在测试图片的不同位置,不同尺度进行滑动分类评估。最近的比如
R-CNN
模型会生成一些潜在的bounding box
, 然后使用分类器去判断这些可能的bounding box
。这些方法都是很慢的,而且很难优化,因为每个单独的component
都必须单独的训 -
针对上述问题,本文把物体检测看做是一个单回归任务,直接回归像素级的
bounding box
坐标和对应的类概率,可以预测物体在哪儿,物体是什么 -
YOLO
的模型很简单,相比传统的检测,主要优点体现在下面几点- 第一,因为YOLO没有复杂的pipeline,仅仅是一个回归问题,所以非常快
- 第二,YOLO检测是时候是全局推理,不像滑动窗口和区域建议技术(
region proposal
) - 第三,YOLO学习的是物体的泛化表示
方法
方法思想
- 模型首先会把输入图像划分为
S*S
的网格,如果一个物体的中心在某个网格中,那么对应的网格就负责该物体的检测。 - 每个网格(
cell
)都会预测B
个bounding box
和对应的置信分数,定义为 P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object)*IOU_{pred}^{truth} Pr(Object)∗IOUpredtruth,如果没有物体,那么置信分数 P r Pr Pr应该是0,否则的话,希望置信分数等于预测的box
与真实box
的交并比。 - 每个
bounding box
会包含5个变量,分别为x,y,w,h
和置信分数,(x,y)
表示box相对每个cell的边缘的中心坐标,以及相对整幅图像的宽和高。最终的置信分数表示的是预测的box和真实的box的交并比。 - 每个cell也预测
C
个类条件概率 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i|Object) Pr(Classi∣Object),这些概率是基于cell包含的物体的。 Pr ( Class i ∣ Object ) ∗ Pr ( Object ) ∗ I O U pred truth = Pr ( Class i ) ∗ I O U pred truth \operatorname{Pr}\left(\text { Class }_{i} \mid \text { Object }\right) * \operatorname{Pr}(\text { Object }) * \mathrm{IOU}_{\text {pred }}^{\text {truth }}=\operatorname{Pr}\left(\text { Class }_{i}\right) * \mathrm{IOU}_{\text {pred }}^{\text {truth }} Pr( Class i∣ Object )∗Pr( Object )∗IOUpred truth =Pr( Class i)∗IOUpred truth - 本文设置
S
=
7
,
B
=
2
S=7,B=2
S=7,B=2,在 PASCAL VOC数据集上,一共有20类,所以最终预测的tensor形状为
7*7*30
, 计算公式为 S ∗ S ∗ ( B ∗ 5 + C ) S*S*(B*5+C) S∗S∗(B∗5+C)
网络设计
损失函数
实验结果