资讯详情

YOLO算法最全综述:从YOLOv1到YOLOv5

点击上方“”,选择加""或“

重磅干货,第一时间送达64cafc5c66ed97d0bf5cfe905ae6d5dd.png

YOLO官网:

https://github.com/pjreddie/darknet

1.统一网络:YOLO没有显示求取region proposal的过程。Faster R-CNN中尽管RPN与fast rcnn但在模型训练过程中,需要反复训练RPN网络和fast rcnn网络.相对于R-CNN系列的"看两眼"(提取和分类候选框),YOLO只需要Look Once.

2. YOLO统一是一个回归问题,R-CNN检测结果分为两部分:物体类别(分类问题)bounding box(回归问题)。

http://arxiv.org/abs/1506.02640

https://github.com/pjreddie/darknet

核心思想:将整个图片作为网络输入(类似)Faster-RCNN),输出层直接对BBox返回位置和类别。

实现方法

  • 将图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,这个网格负责预测object。

  • 每个网络都需要预测BBBox位置信息和confidence(信度)信息,一个BBox对应于四个位置的信息和一个confidence信息。confidence代表预测box中含有object的置信度和这个box预测多准两重信息:

其中如果有object落在一个grid cell第一项取1,否则取0。第二项是预测bounding box和实际的groundtruth之间的IoU值。

  • 每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还需要预测一个类别信息,记录为C类。SxS每个网格预测Bbounding box预测Ccategories。输出就是S x S x (5*B C)的一个tensor。(

  • 举例说明: 在PASCAL VOC图像输入为448x448,取S=7,B=2.共有20个类别(C=20)x7x30的一个tensor。如下图所示:

  • 在test当每个网格预测时class信息和bounding box预测的confidence如果你乘以信息,你会得到每一个bounding box的class-specific confidence score:

等式左侧的第一项是每个网格预测的类别信息,第二项和第三项是每个网格预测的类别信息bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有box信息的准确性。

  • 得到每个box的class-specific confidence score之后,设置阈值,过滤掉低分boxes,对保留的boxes进行NMS处理,得到最终的检测结果。

(1) 给出输入图像,将图像分成7*7的网格

(2) 对于每个网格,我们都预测两个边框(包括每个边框是目标的可信度和每个边框区域在多个类别中的概率)

(3) 可以根据上一步预测7*7*两个目标窗口,然后根据阈值去除低可能性的目标窗口,最后NMS去除冗余窗口

损失函数

在实现中,最重要的是如何设计损失函数,以便在这三个方面得到很好的平衡。作者简单而粗糙地使用了它这样做。

  • 第一,8维的localization error和20维的classification error同样重要显然是不合理的;

  • 第二,如果一个网格中没有object(图中有很多这样的网格),然后这些网格就会被放置box的confidence push到0,相比较少的object网格,这种做法是overpowering是的,这会导致网络不稳定甚至发散。

  • 更加注重8维坐标预测,给这些损失更大loss weight。

  • 对没有object的box的confidence loss,赋予小的loss weight。

  • 有object的box的confidence loss和类别的loss的loss weight正常取1。

不同大小的box与对于大的预测box预测偏,小box一点预测肯定更难以忍受。sum-square error loss中对同样的偏移loss是一样。

为了缓解这个问题,作者用了一个更聪明的方法,那就是box的width和height取平方根代替原来的height和width。参考下图很容易理解,小box当发生偏移时,横轴值较小,与y轴相比反应较大box要大。(也是一种类似的接近方式)

多个网格预测box,每一个都是希望box predictor专门负责预测某个object。具体做法是看当前预测box与ground truth box中哪个IoU大,负责任。这种做法叫做。box predictor的specialization。

最后,整个损失函数如下:

损失函数:

  • 只有在某个网格中object的时候才对classification error进行惩罚。

  • 只有当某个box predictor对某个ground truth box只有负责的时候,才会对box的coordinate error惩罚哪一个ground truth box负责取决于其预测值和ground truth box的IoU是不是在那里?cell的所有box中最大。

其他细节,如使用激活函数leak RELU,模型用ImageNet预训练等等

优点

  • 快速,pipline简单.

  • 背景误检率低。

  • 通用性强。YOLO也适用于艺术作品中的物体检测。它对非自然图像物体的检测率远高于DPM和RCNN系列检测方法。

缺点

  • 在检测过程中,由于输出层是全连接层,YOLO训练模型只支持与训练图像相同的输入分辨率。

  • 虽然每个格子都可以预测Bbounding box,但最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个网格最多只能预测一个物体。当物体占图像的比例较小时,如图像中的牲畜或鸟类,每个网格包含多个物体,但只能检测到其中一个。YOLO方法的缺陷。

  • YOLO loss大物体在函数中IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根的方没有根本解决)。因此,对于小物体,小物体IOU误差也会对网络优化过程产生很大影响,从而降低物体检测的定位准确性。

https://arxiv.org/abs/1612.08242

YOLOv2相对v在继续保持处理速度的基础上,1版本从预测开始

标签: 熵指数传感器entropyv3接近传感器1k角位移传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台