YOLO目标检测算法的深入理解

YOLO框架概述

YOLO(You only look once)是一种目标检测算法,目标检测算法分为两大任务:目标分类和定位,YOLO创造性的将候选区和对象识别这两个阶段合二为一,看一眼图片(不用看两眼)就能知道有哪些对象以及它们的位置。实际上,YOLO并没有真正去掉候选区,而是采用了预定义的候选区,通过筛选找到图片中某个存在对象的区域,然后识别出该区域中具体是哪个对象。因此其仅仅使用一个CNN(卷积神经网络)直接预测不同目标的类别与位置。
YOLO作用:对象识别和定位。例如:输入一张图片,要求输出其中所包含的对象,以及每个对象的位置(包含该对象的矩形框)。如图1 yolo检测过程所示。
在这里插入图片描述

YOLO的整体结构

Yolo算法很好的解决了这个问题,它不再是窗口滑动了,而是直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,基于上面的分析,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标,这就是Yolo算法的朴素思想。下面将详细介绍Yolo算法的设计理念。
整体来看,Yolo由于没有候选区,所以结构相对简单,就是单纯的卷积、池化。YOLO算法采用一个单独的CNN模型实现end-to-end的目标检测,整个系统如图2所示:首先将输入图片resize到416x416,然后送入CNN网络,最后处理网络预测结果得到检测的目标。由于没有候选区,所以结构相对简单,就是单纯的卷积、池化。相比R-CNN算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。
YOLO的算法饥结构
具体来说,Yolo的CNN网络将输入的图片分割成 S×S 网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,如图3所示,可以看到狗这个目标的中心落在左下角一个单元格内,那么该单元格负责预测这个狗。
在这里插入图片描述
每个单元格会预测 B 个边界框(bounding box)以及边界框的置信度(confidence score)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为 P_r (object),当该边界框是背景时(即不包含目标),此时 P_r (object)=0。而当该边界框包含目标时, P_r (object)=1 。边界框的准确度可以用预测框与实际框(ground truth)的IOU(intersection over union),交并比)来表征,记为 IOU_pred^truth。因此置信度可以定义为 P_r (object)×IOU_pred^truth 。因此Yolo的置信度是两个因子的乘积,边界框是否含有目标的概率以及预测框的准确度。边界框的大小与位置可以用4个值来表征: (x,y,w,h) ,其中(x,y) 是边界框的中心坐标,而 w 和 h 是边界框的宽与高。还有一点要注意,中心坐标的预测值 是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的,单元格的坐标定义如图3所示。而边界框的 w和h预测值是相对于整个图片的宽与高的比例,这样理论上4个元素的大小应该在 [0,1] 范围。这样,每个边界框的预测值实际上包含5个元素: (x,y,w,h,c) ,其中前4个表征边界框的大小与位置,而最后一个值是置信度。
YOLO检测过程
还有分类问题,对于每一个单元格其还要给出预测出 C 个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率。但是这些概率值其实是在各个边界框置信度下的条件概率,即P_r (〖class〗_i |object) 。值得注意的是,不管一个单元格预测多少个边界框,其只预测一组类别概率值,这是Yolo算法的一个缺点,同时,我们可以计算出各个边界框类别置信度(class-specific confidence scores):
P r ( c l a s s ∣ 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 P_r(class|object) * P_r(object) *IOU_{pred}^ {truth} = P_r(class_i)*IOU_{pred}^ {truth} Pr(classobject)Pr(object)IOUpredtruth=Pr(classi)IOUpredtruth
最终每个单元格需要预测 ( B ∗ 5 + C ) (B*5+C) (B5+C)值。如果将输入图片划分为 S ∗ S S*S SS个 网格,那么最终预测值为 S ∗ S × ( B ∗ 5 + C ) S*S× (B*5+C) SS×(B5+C)大小的张量。整个模型的预测值结构如下图所示。对于PASCAL VOC数据,其共有20个类别,如果使用S=7,B=2,那么最终的预测结果就是7×7×30大小的张量。
最后YoLo利用非极大值抑制算法(non maximum suppression, NMS)对预测的结果进行筛选输出与目标重合度最高的在图像中的分类及其类别置信度和边框位置。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值