目标检测之YOLO V1

YOLO V1是一种one-stage目标检测方法,它摒弃了候选区域提取,直接通过网络预测目标的边框和类别。相比R-CNN系列,YOLO速度更快,但牺牲了部分精度。主要思路是将图像划分为网格,每个网格预测2个bounding box,通过confidence和条件类别概率确定目标。网络结构包含24个卷积层和2个全连接层,输出为7x7x30的张量。损失函数包括位置、confidence和类别概率的损失,通过权重调整确保平衡。尽管YOLO在小目标检测和长宽比变化时表现不佳,但其整体速度和泛化能力仍具有优势。
摘要由CSDN通过智能技术生成

前面介绍的R-CNN系的目标检测采用的思路是:首先在图像上提取一系列的候选区域,然后将候选区域输入到网络中修正候选区域的边框以定位目标,对候选区域进行分类以识别。虽然,在Faster R-CNN中利用RPN网络将候选区域的提取以放到了CNN中,实现了end-to-end的训练,但是其本质上仍然是提取先提取候选区域,然后对候选区域识别,修正候选区域的边框位置。这称为tow-stage的方法,虽然在精度已经很高了,但是其速度却不是很好。造成速度不好的主要原因就是候选区域的提取,这就需要一种网络能够直接预测出图像中目标的位置,中间不需要候选区域的计算,这就是one-stage

YOLO系就是one-stage目标检测的一种,其全名You only look once很形象,只需要将图片输入到网络中就预测中其中目标的bounding box以及bounding box所属的类别。相比R-CNN,YOLO损失了一定的精度,但是其有点就是速度快。

YOLO V1

YOLO V1将目标检测定义为一个回归问题,从图像像素信息直接得到目标的边框以及所属类别的概率,其有以下的优点:

  • 快。其整个网络结构就是解决回归问题,很快。
  • 在做predict的时候,使用的一整张图像的全局信息。two-stage的方法,每次只是“看到”图像的一块区域,YOLO 一次“看”一整张图像,所以它可以将目标整个的外观信息以及类别进行编码,目前最快最好的Fast R-CNN,较容易误将图像中的 background patches (背景的一个小块)看成是物体,因为它看的范围比较小。YOLO 的 background errors(背景错误) 比 Fast R-CNN 少一半多。
  • YOLO得到的目标的特征表示更容易泛化

YOLO 和R-CNN性能的对比
在这里插入图片描述

YOLO的也有一定的缺点,其准确度落后于Faster R-CNN,并且由于其使用比较粗糙的网格来划分原图,导致其对小目标的检测效果不是很好。

主要思路

相对于R-CNN系首先从原图中计算出一系列的候选区域,YOLO则使用简单的方法,首先将图像划分为 S × S S\times S S×S(论文中 S = 7 S = 7 S=7)的网格,如果某个目标的中心位于一个grid cell中,则该grid cell就负责检测这个目标。

在YOLO网络中,目标的坐标信息是通过相对于某个grid cell左上角的偏移来表示的,目标的宽和高是用原图的宽和高占比表示的。 这就是这里为什么会说,如果某个目标的中心位于一个grid cell中,则该grid cell就负责检测这个目标,在做边框回归的时候,其GT就是该grid cell。

在这里插入图片描述

上面提到如果某个目标的中心位于一个grid cell中,则该grid cell就负责检测这个目标,也就是说在YOLO中,grid cell设计为可以代表目标,在网络中也是针对grid cell进行处理的。 在每个grid cell中预测出来 B B B( B = 2 B = 2 B=2个bounding box,而且要为每个预测出来的bounding box打个分数,来表示该bounding box是否包含目标以及该bbox作为目标边框的可信度,这个分数称为Confidence。Confidence 的定义如下:
C o n f i d e n c e = P r ( o b j e c t ) ⋅ I o U p r e d t r u t h Confidence = Pr(object) \cdot IoU_{pred}^{truth} Confidence=Pr(object)IoUpredtruth
其中, P r ( o b j e c t ) Pr(object) Pr(object)为bbox包含目标的概率(bbox存在目标则$Pr(object) =1 , 不 存 在 目 标 则 ,不存在目标则 Pr(object) = 0 ; ; IoU_{pred}^{truth}$表示预测出来的bbox和Ground Truth之间的IoU。 也就是说,如果bbox不含目标则其confidence = 0,包含目标的话Confidence就是bbox和Ground Truth之间的IoU。

这样,通过每个grid cell预测出来的bbox可由一个五元组表示 ( x , y , w , h , C o n f i d e n c e ) (x,y,w,h,Confidence) (x,y,w,h,Confidence),其中 ( x , y ) (x,y) (x,y)表示bbox的中心相对该grid cell左上角的偏移量,使用grid cell的长宽为比例,将其值归一化到 [ 0 , 1 ] [0,1] [0,1]之间; ( w , h ) (w,h) (w,h)为bbox的宽度和长度,以图像的宽度和长度归一化到 [ 0 , 1 ] [0,1] [0,1]之间; C C C就是上面提到的Confidence,其值也是在 [ 0 , 1 ] [0,1] [0,1]之间。 这样每个bbox可以使用五元组 ( x , y , w , h , C o n f i d e n c e ) (x,y,w,h,Confidence) (x,y,w,h,Confidence)表示,并且其值都是在 [ 0 , 1 ] [0,1] [0,1]之间。

以grid cell为准预测出来的bbox表示了目标的边框信息,并不能判断出来其中包含的目标是属于哪一个类。所以YOLO网络还为每一个grid cell预测出 C C C个conditional class probability(条件类别概率):
P ( c l a s s i ∣ o b j e c t ) P(class_i | object) P(classiobject)
即在一个grid cell中有一个Object的前提下,它属于某个类的概率。只为每个grid cell预测一组类概率,而不考虑框的数量。

类别概率 P ( c l a s s i ∣ o b j e c t ) P(class_i | object) P(classiobject)是对于某个grid cell的,表示该grid cell能够预测一个目标的条件下,其目标的属于某个类的概率;而bbox的confidence表示的是,包含目标的可行性。 将这两个值相乘,就可以得到bbox中包含的目标的的类别的概率了。
所以在测试阶段,将grid cell的 P ( c l a s s i ∣ o b j e c t ) P(class_i | object) P(classiobject)和以该grid cell为准预测出来bbox的confidence相乘
P ( c l

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值