You Only Look Once: Unified,Real-Time Object Detection

版权声明:本文为博主原创文章,转载请一定附上博主原文链接,并署名转自ZeroZone零域。 https://blog.csdn.net/ksws0292756/article/details/82623642

摘要

YOLO将目标检测问题看作是一个回归问题,进而从整张图像中直接直接得到bounding boxes和对应的class probabilities。

1. 介绍

之前的工作都是将检测任务看成是一个分类问题,如RCNN,通过区域提取,分类,区域修正,去重等等一系列工作得到检测结果,这样的模型十分复杂而且很难优化,因为区域提取和分类任务必须单独训练,麻烦且难以调试。

本文将目标检测问题看成是一个回归问题,直接从图片像素中得到bounding box坐标和class probabilities。

YOLO具有三大优点:
1. Fast。 由于不用按照复杂的pipeline进行运作,YOLO只需要一个卷积网络就可以同时预测出多个物体,因此十分快
2. YOLO在进行推理时,可以看到整幅图片,因此,可以隐式地对物体的周围像素进行分析。这使得YOLO不容易在背景中错误识别。反观Fast RCNN,经常会将背景中的非物体检测出来。
3. YOLO的泛化性更好,可以学到更一般的特征。在自然图像上训练后,YOLO在艺术图像上可以取得相比于RCNN更好的检测效果。

2. 一体化检测

YOLO使用整幅图像的特征图谱进行预测,同时预测所有物体的所有bounding box。这样的设计思想,可以使得YOLO进行端到端的训练,并且能够进行实时检测。

系统将整张图片划分成 S × S 大小的网格。 如果某个物体落入了网格中的某一格,那么这个格子就负责检测该物体。

每个格子会预测B个bounding boxes和B个confidence scores。这些confidence scores反映了模型对这个box里面是否有物体,并且有多大的把握确定。 将confidence定义为 P r ( O b j e c t ) × I O U p r e d t r u t h I O U p r e d t r u t h 代表真实框和预测框之间的IOU值。

每一个bounding box包含5个预测值:x,y,w,h,和confidence。

每一个grid cell预测C个conditional class probabilities,记为 P r ( C l a s s i | O b j e c t ) 。 C与B的个数之间没有直接关系。

在测试阶段,我们将conditional class probabilities和individual box confidence predictions相乘:

P r ( C l a s s i | O b j e c t ) × P r ( O b j e c t ) × I O U p r e d t r u t h = P r ( C l a s s i ) × I O U p r e d t r u t h

由此可以得到针对每个box的特定class的confidence scores。这些scores代表着特定calss出现在box里面的概率,以及预测出来的box在多大程度上适应这个object。

最终预测的tensor维度: S × S × ( B × 5 + C )

2.1 网络设计

YOLO:收到GoogleNet的启发,公有24层卷积层和2层全连接层

但是没有使用Inception模块,而是使用了 3 × 3 的卷积层和一个 1 × 1 的reduction layers(减少depth)

fast YOLO:9个卷积层和2个全连接层。

2.2 训练

首先在ImageNet上进行了预训练。 预训练时,使用前20个卷积层,加上一个平均池化层,和一个全连接层。 使用了Darknet framework。

Ren et al证明在预训练的网络上添加卷积层和全连接层可以提升性能。因此,本文添加了4个卷积层和2个全连接层,都赋予随机初始值。 模型的输入图像像素为448 。

最后一层同时预测class probabities和bounding box coordinates。 我们将box的宽和高都归一化到占图片宽高值的比例,因此coordinates的值在0到1之间。coordiantes的x和y归一化到对特定cell的相对位移,所以它们的值也在0到1之间。

本文最后一层使用线性激活函数,其他层均使用leaky rectified linear 激活函数,如下所示:

ϕ ( x ) = { x if  x > 0 0.1 x otherwise

本文的优化函数为平方和误差。 由于它对localization error的权重和对classification的权重是一样的,因此该函数并不能够很好的匹配我们的目标。为了解决问题,提升了bounding box coordinate predictions的loss,同时降低了confidence predictions的loss。 作者使用了 λ c o o r d = 5 λ n o o b j = 5 来实现这一目标。 同时为了更好的针对小目标,本文对bounding box的宽和高都使用了平方跟。

YOLO对每个grid cell都会预测出多个bounding boxes,而在训练阶段,我们只需要一个bouding box 来对每个物体负责。选取的原则是与GT有最高的IOU值。

在训练阶段,本文优化下面的联合目标损失函数:

batch size为64,采用 momentum of 0.9 and a decay of 0.0005。

2.3 推理阶段

平均每张图片会得到98个bounding boxes。

虽然采用了非极大值抑制,但是提升的效果并不高,不如RCNN和DPM那么明显。

2.4 YOLO的局限性

难以检测小物体和堆积在一起的物体,比如鸟群。

另外,YOLO对于不同大小的物体,其采取的损失函数是一样的,因此,在面对大物体时,细微的差别可能不会引起IOU的大幅变化,但是在面对小物体时,就会产生较大波动。YOLO的错误来源主要是由于定位错误。

猜你喜欢

转载自blog.csdn.net/ksws0292756/article/details/82623642
今日推荐