YoloV1-学习记录

Yolov1是一种单阶段目标检测算法,它将检测视为回归问题,通过一个神经网络直接预测边界框和类别概率。网络避免了多阶段处理,具有较高的效率。每个网格单元预测两个边界框,包含坐标、大小、置信度和类别概率。归一化处理和非极大值抑制(NMS)用于优化结果,提高模型的准确性。
摘要由CSDN通过智能技术生成

引入:本次学习内容基本来自于Joseph RedmonSantosh Divvala,编写的的《You Only Look Once: Unified, Real-Time Object Detection》,以及部分讲解视频,本学习记录仅为个人学习收获,部分内容存在纰漏烦请各位大佬批评指正。
(一)摘要:Yolov1是一种单阶段算法,它将目标检测视为一个回归问题,用于预测空间上分离的边界框和相关类别概率。同时,它不像FasterRCNN那样需要多阶段处理,它是一个单独的神经网络,可以直接从完整的图像中一次性预测出边界框和类别概率。

(二)发表时间:2015

(三)关键词:目标检测,卷积神经网络,单阶段检测

(四)学习记录:

Yolov1是一种单阶段算法,它将目标检测视为一个回归问题,用于预测空间上分离的边界框和相关类别概率。同时,它不像FasterRCNN那样需要多阶段处理,它是一个单独的神经网络,可以直接从完整的图像中一次性预测出边界框和类别概率。

Yolov1的网络结果图如下所示,图中批注来源于博主“同济子豪兄”。

 

网络结构整体有24个卷积层,2个全连接层。

在yolov1中,最终的输出结果会得到一个7×7×30的图像,如下图。

 

7×7×30图像

如图中的网络分格所示,7×7的图像会得到49个小的网格,叫做grid cell,在第一代版本中,每一个grid cell会预测出两个bounding box,每个bounding box同时预测着4+1个重要的信息,即x,y,w,h,分别是它所预测的物体的中心点坐标(x,y)和宽度(w)以及高度(h),以及预测一个置信度值(confidence score),它表示该bounding box 中是否存在物体目标,即目标存在的概率, 该值为0~1之间的数值。同时,bounding box的预测值内还会包含目标类型的信息,类别的信息由用户自己定义,如yolov1中,定义了20个基础类型。因此,根据以上信息,我就可以大致得到一个7×7×(2×5+20)的输出预测值。

得到了bounding box内的x,y,w,h信息,我们需要做的就是对它进行归一化处理。这是因为在不同图片的尺寸、宽高比等方面的差异性的影响下,bounding box的大小和位置也会有所变化,所以需要将它们统一化。通过归一化处理,将bounding box内的信息转化为相对于图像大小的比例,能够使模型更好地适应不同大小的图片,从而提高模型的鲁棒性。常见的归一化方式包括将坐标值除以图像宽高,将bounding box的宽高值除以参考宽高值。XC和Yc代表的是bounding box 预测的框的x,y坐标,w,y则代表宽度的相对值,Xcol和Yrow则分别代表像素块所在的位置信息,例如三行四列的像素块的值为4和1。转化公式基本如下:

而接下来的工作就会用到我们之前提前标注的目标框图,我们自己定义好的目标会被yolo定义为ground truth,每一个ground truth都会有一个像素中心,yolo便会让这个像素中心的grid cell来负责物体的预测,而这个grid cell产生的两个bounding box会预测信息,通过与ground truth进行比较,即可测试是否为目标物体,基本计算公式如下。

IoU的具体意思是交并比(Intersection over Union,简称IoU),它是目标检测算法中常用的评估指标之一,用于衡量预测的边界框和真实边界框之间的重叠程度。在使用IoU评估目标检测算法时,通常使用一个预定的IoU阈值来判断预测框是否正确匹配真实框。

而上诉公式用到的则是预先设置的目标框与grid cell生成的预测框进行一个面积的对比,公式中的Pr(Object)则可以对bounding box进行一个筛选,因为我们只利用像素中心的预测框,所以只有中心位置的Pr(Object)为1,其他位置的则为0。

 

基于公式3.3,公式3.4的前方多了一个类别计算概率式子,因为类别有许多个,但是我们在检测时一次只检测一个,所以我们必须排除其他类别的干扰,第一个部分就是计算单个类别的条件概率公式,它也只有0或者1的数值,是检测的物体,则为1,否则为0。由此可以看出,此公式可用于计算目标检测算法的置信度得分,以及防止模型将背景误报为目标。

接着就是对得到的数据,7×7×30个tensor进行后处理,因为每个grid cell会含有两个bounding box,所以一共有98个bounding box,而这98个bounding box都对应着一个概率数值(置信度),根据这些概率值进行从大到小的排序,随后对所有框进行对比筛选。

把所有框进行筛选对比的这种方法叫做非极大值抑制(Non-Maximum Suppression, NMS)。它的主要作用就是解决多个目标检测框重复检测一个物体的情况。它的核心思想就是保留置信度高的那个框,然后把其他的所有框全部淘汰掉,其基本的工作模式便是利用IOU来完成:先按上述操作完成对bounding box的排序,接着从第二个开始,与第一个(也就是置信度最大)检测框进行比较,如果两者的IOU值大于0.5,则判定为重复,将第二个框淘汰掉,如果第二个框与第一个框的IOU值小于0.5,那么就将第三个框与第一个进行比较,大于阈值则淘汰,小于就保留。并且会一直重复这个过程,直到出现最大置信度的目标框,或者IOU比值未超过阈值的情况。当IOU的阈值未超过设定在,则可能是因为即使目标框检测到了小狗,但可能只是包含了小狗,其主要检测对象为其他物体。

例如获得对于小狗这个类别,yolo得到的多个检测框的置信度排序如下表3-1:

表3-1 置信度排序图

置信度

0.8

0.7

0.6

0.5

0.45

0.33

0.32

0.18

接着将第二个0.7的置信度与第一个0.8的置信度框进行比较,会出现如下情况:

情况一:两者的IOU大于0.5,则0.7对应的检测框淘汰,则新的置信度排序如下表3-2:

表3-2 情况一置信度排序图

置信度

0.8

0

0.6

0.5

0.45

0.33

0.32

0.18

情况二:两者的IOU值小于0.5,则暂时保留0.7对应的框,直接用代表0.6置信度的检测框与第一个进行对比,如果大于0.5,则情况如下表3-3所示:

表3-3 情况二置信度排序图

置信度

0.8

0.7

0

0.5

0.45

0.33

0.32

0.18

按照着这个逻辑一直进行比较,最终可以得到置信度高,重复率较小的检测框,最总结果可能如下表3-4所示:

表3-4 最终置信度排序图

置信度

0.8

0

0

0.5

0

0

0

0

NMS处理之后,bounding box内的许多数据概率已经归0,而这时候我们需要做的就是在这个筛查出的bounding box的所有概率中,找到它预测概率最大的那个数值。Bounding box内的概率可能如下表3-5所示:

表3-5 类别概率排序图

类别

Bb1

Bb2

Bb3

Bb4

Bb5

Bb6

Bb7

Bb8

置信度

0.8

0

0

0

0

0.2

0.1

0.6

Yolo会直接找到置信度最大的那个分类并且判断置信度是否大于0,这样的操作会对每一个bounding box进行,如果某一个bounding box满足条件则会同时得到它的分类索引号,而每一个索引号则对应着一类物体,yolo则会绘制出检测框,例如表3-5中的最大置信度为Bb1的框,因此直接绘制Bb1。其他框即使也是绘制出了目标,但因为存在最合适的目标框,因此也会被直接排除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值