理解与总结:YOLOv1中候选框(Bounding Box或者Predict Box)——纯文字真的很干

各位CV伙伴估计已经看了很多网上许多关于YOLO1的博客,在这里我推荐路过的朋友可以参考以下链接,有一定基础再来看我的这个博客。因为我参考了前人的知识再做的总结,有些小的基础的概念没有详细解释。

参考链接:https://www.jianshu.com/p/cad68ca85e27

【YOLOv1中的B-BOX理解】
1.RCNN提出了候选区(Region Proposals)的方法,先从图片中搜索出一些可能存在对象的候选区(Selective Search),大概2000个左右,然后对每个候选区进行对象识别。先找到,后分类。
2.将候选区和对象识别这两个阶段合二为一,同时找到并分类。
3.YOLO中的候选区本质:
采用了预定义的候选区(准确点说应该是预测区,因为并不是Faster RCNN所采用的Anchor)。也就是将图片划分为 7*7=49 个网格(grid),每个网格允许预测出2个边框(bounding box,包含某个对象的矩形框),总共 49*2=98 个bounding box。可以理解为98个候选区,它们很粗略的覆盖了图片的整个区域。
与RCNN候选区的差异:
YOLO中候选区的数量确定,且远小于2000(因为都要回归边框,核心思想认为只需粗略找到目标);每组(2个)候选区的中心点确定;训练时匹配的B-BOX
确定(计算与T-BOX的IoU,取最大的predict box)。
4.网络结构:
基于GoogleNet前20层进行预训练,得到分类网络;
最后加了两层全连接;
最大的差异是最后输出层用线性函数做激活函数,因为需要预测bounding box的位置(数值型),而不仅仅是对象的概率。
5.网络输入与输出的映射关系:
输入:448*448*3
输出:7*7*30
6.易混淆概念:
网络结构:全链接层前的7*7*1024和输入有感受野上的对应关系,7*7中的每一个tensor编码了输入图像中1个cell的信息;通过正反2次全连接,将7*7*1024的信息编码到7*7*30的每1个tensor中。
网络参数:7*7*30的每1个tensor=(1+4)+(1+4)+20;每个1+4中编码信息的作用,4表示以原图中该cell为主观测区,可能存在物体的box,1表示该box可能是物体的置信度得分(和T-box计算IoU);20表示原图中该cell对应的IoU较大的predict box可能是每一类物体的得分。

7.最近(2020.12.01)在看YOLO 2和3,等我梳理好了三者对于anchor(YOLOv1中还不能叫anchor,暂且这么提)的改进,后续再对比Faster-RCNN和SSD中anchor的设置方式。

总结:YOLO并没有预先设置2个bounding box的大小和形状,也没有对每个bounding box分别输出一个对象的预测。它的意思仅仅是对一个对象预测出2个bounding box,选择预测得相对比较准的那个。这里采用2个bounding box,有点不完全算监督算法,而是像进化算法。如果是监督算法,我们需要事先根据样本就能给出一个正确的bounding box作为回归的目标。但YOLO的2个bounding box事先并不知道会在什么位置,只有经过前向计算,网络会输出2个bounding box,这两个bounding box与样本中对象实际的bounding box计算IOU。这时才能确定,IOU值大的那个bounding box,作为负责预测该对象的bounding box。
训练开始阶段,网络预测的bounding box可能都是乱来的,但总是选择IOU相对好一些的那个,随着训练的进行,每个bounding box会逐渐擅长对某些情况的预测(可能是对象大小、宽高比、不同类型的对象等)。所以,这是一种进化或者非监督学习的思想。

写在后面:如果想了解候选区域的生成,可以参考链接:https://blog.csdn.net/m0_37970224/article/details/85238603。前人的工作很好,不过筛选也很累,大家看了如果有用,记得回来给我点个赞呀~

有错欢迎指正,或者一起讨论

 

 

 

 

你可能感兴趣的:(目标检测-YOLO系列,YOLO,人工智能)