YOLOv1知识补充说明

注:本文章基于YOLOv1论文进行相关学习总结,原文链接如下:https://arxiv.org/pdf/1506.02640.pdf

一、YOLO算法检测流程

在这里就不过多地详细介绍YOLO算法了。概括来说,它的检测过程可以概括为:

  1. 将图片划分为S*S个网格(grid cell)(在YOLOv1中划分成了7*7个),每个网格预测B个候选框(bounding box,简称bbox)(YOLOv1中有2个bbox)
  2. 在训练阶段,标签ground truth(真实值)落在哪个网格中,就由哪个网格预测这个物体(也就是中心点落在哪个网格,哪个网格预测),对应的类别=1,其他类别=0 。 网格对应的两个bbox哪一个与ground truth的IoU最大,那个bbox便负责预测该物体。每一个网格最终只可预测一个类别,最终整张图片输出S*S*(B*5+C)的tensor(在YOLOv1中即输出7*7(2*5+20)的tensor)
  3. 在检测阶段则直接获得图片的S*S*(B*5+C)的tensor,进行NMS(非极大值抑制)后处理得到目标检测结果。
    YOLOv1算法流程

二、Q&A

1. 对上文中一些公式和术语进行解释

S*S*(B*5+C):S为网格个数,B为bbox个数,C为预测种类个数,5表示一个bbox所含的5个参数(x,y,w,h,c)–>坐标(x,y)、宽高(w,h)、置信度c,yolo利用PASCAL VOC数据集进行训练,它包括了20类物体,所以c=20;

IoU用大白话讲就是两个bbox分别和真实框重叠,哪个重叠度高,哪个IoU大(个人理解);

NMS(非极大值抑制)同理就是用来筛选哪个bbox用来预测目标,仅在测试阶段使用。举例来说:图片现在有772=98个bbox,每一个bbox对于20类物体都有相应的概率(比如说我这个网格里面有一只狗的概率为0.7,一只鸟的概率为0.1…),以狗狗类别作为示范,首先会将98个bbox通过人手动设置阈值(比如0.2),将小于阈值的bbox对应的类别设置为0(dog=0 ),再按照狗类别概率进行由大到小排序,利用NMS将最大的保留,其余设置为0.最终狗类别概率最大的bbox用来预测狗这个目标。

2. 为什么说YOLO算法对于检测小目标、重叠目标效果差?

因为每一个网格最终只可以预测一个类别,yolov1将图片分成7*7的网格,所以最大只能预测49个目标,对于小目标、密集目标、重叠目标,大概率会多个目标落在一个网格内,然而只能检测出一个,这也是效果不好的原因。

3. 一个目标落在了多个网格中怎么办?

取目标中心点,目标中心点落在哪里,该网格负责预测,其他网格为为0。

4. 中心点落在网格点上怎么办?

yolo算法通过将图片分成奇数个行和列,像yolov1中分成了7*7,使得图片有一个中心网格,极大地避免了目标检测中大目标中心点往往落在中间这一常见问题(如果是偶数,中心点必然会落在中心网格点上)

5. 一个网格中存在多个目标怎么办?

实际上yolo直到v3才取消了一个网格最终只能预测一个目标的限制,不同的bbox可以预测不同的目标,从而在小目标检测性能上有了很大的提升。在此之前,只能是选择类别概率最大的作为最终输出。

本文章为个人理解,措辞不太严谨,如有错误的地方,欢迎在评论区留言指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要暴富的小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值