YOLOv1
YOLOv1 创新:
- 将整张图作为网络的输入,直接在输出层回归 bounding box 的位置和所属的类别(将对象检测作为一个回归问题)
- 速度快,one stage detection 的开山之作
- 速度快,one stage detection 的开山之作
之前的目标检测方法需要先产生候选区再检测的方法虽然有相对较高的检测准确率,但运行速度较慢。
YOLO 将识别与定位合二为一,结构简便,检测速度快,更快的 Fast YOLO 可以达到 155FPS。
YOLOv1 优缺点
- YOLO 模型相对于之前的物体检测方法有多个 优点:
- YOLO 检测物体非常快。
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO 可以非常快的完成物体检测任务。标准版本的 YOLO 在 Titan X 的 GPU 上能达到 45 FPS。更快的 Fast YOLO 检测速度可以达到 155 FPS 。而且,YOLO 的 mAP 是之前其他实时物体检测系统的两倍以上。 - YOLO 可以很好的避免背景错误,产生 false positives。
不像其他物体检测系统使用了滑窗或 region proposal,分类器只能得到图像的局部信息。YOLO 在训练和测试时都能够看到一整张图像的信息,因此 YOLO 在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和 Fast-R-CNN 相比,YOLO 的背景错误不到 Fast-R-CNN 的一半。 - YOLO 可以学到物体的泛化特征。
当 YOLO 在自然图像上做训练,在艺术作品上做测试时,YOLO 表现的性能比 DPM、R-CNN 等之前的物体检测系统要好很多。因为 YOLO 可以学习到高度泛化的特征,从而迁移到其他领域。
- YOLO 检测物体非常快。
- 尽管 YOLO 有这些优点,它也有一些缺点:
- YOLO 的物体检测精度低于其他 state-of-the-art 的物体检测系统。
- YOLO 容易产生物体的定位错误。
- YOLO 对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测 2 个物体)。
- 召回率低
- YOLOv1 最大的劣势是不够精确
网络结构及检测流程
- 网络结构
YOLO 网络借鉴了 GoogLeNet 分类网络结构,不同的是 YOLO 使用 1x1 卷积层和 3x3 卷积层替代 inception module。如下图所示,整个检测网络包括 24 个卷积层和 2 个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。
-
检测流程
-
先将图片缩放到固定尺寸
-
YOLO 将输入图像划分为 S*S (论文中是 7×7)的栅格,每个栅格负责检测中心落在该栅格中的物体。
-
每一个栅格预测 B (论文中是 2 个)个 bounding boxes(对每个边界框会预测 5 个值,分别是边界框的中心 x,y(相对于所属网格的边界),边界框的宽高 w, h(相对于原始输入图像的宽高的比例)),以及这些 bounding boxes 的 confidence scores。(边界框与 ground truth box 的 IOU 值)
-
同时每个网格还需要预测 c (论文中的 c=20)个类条件概率 (是一个 c 维向量,表示某个物体 object 在这个网格中,且该 object 分别属于各个
-