个人学习笔记-计算机视觉篇-YOLOv1

YOLOv1论文翻译: https://blog.csdn.net/woduoxiangfeiya/article/details/80866155?utm_source=distribute.pc_relevant.none-task
YOLOv1原文: https://arxiv.org/pdf/1506.02640.pdf
以下为参考博主博客https://blog.csdn.net/leviopku/article/details/82588059
https://blog.csdn.net/leviopku/article/details/82588059
https://blog.csdn.net/lanran2/article/details/82317021

自从物体检测问题出现后,大部分的算法思想是将其分成两部分:先找出兴趣区域(proposal)再通过classification分类物体属性。这样的方法需要two-stage的网络结构来执行,比如Fast R-CNN直到YOLO(you only look once)出现提供了一种新的思想:用回归思想直接找出bounding box并预测其内含物体的种类。
和算法名字一样,YOLO系列算法是整体的检测图像,在对初始图像处理得到规定大小的图像后,只要‘看’图片一次即可得出检测结果。而不用为了好的候选框在feature map上来回折腾。并且YOLO和人眼一样关注于图像整体,所以与Fast R-CNN相比,它从背景中检测出错误物体的概率会小一半。虽然YOLOv1阶段准确性还比较弱,但是它提供了新的思想是很宝贵的

YOLOv1统一检测原理

YOLOv1把所有物体检测的组件放在一个神经网络中,这个网络同时预测图像中所有的bonding box和所有的类。网络将输入图像分成S×S块,这些分出的块负责其中内含物体的检测。每个网格预测B个边界框以及每个边界框的置信度(confidence)。这里的confidence 定义为C=Pr(Object)× IOU truth pred(Pr(Object)网格存在物体为1,不存在为0)IOU是预测边界框和真实边界框的交并比。
YOLO预测边界框的方式也和Fast R-CNN的RPN四点标注不同,它给出五个预测值 x,y,w,h,c。(x,y)是框体中心点的坐标,(w,h)代表框体的长宽,c是上面所述的置信度。
每个网格预测C个(数据中的种类数)条件类别概率, Pr(Class i |Object)是网格中含有物体的条件下属于某个类别的概率,不管有多少个可能的边界框,上述的概率对每个区块只算一次。测试时将条件类概率和confidence相乘,提供了每个边界框在各个类别的得分值 ,这些得分值代表该类别物体出现在框中的概率和边界框与物体的拟合程度。然后保留最大的那个类别作为该框体的类别。
计算公式啊
这种预测方式可以在找出边界框的同时找出本块代表的最有可能的物体类型。于是就有了下面的图:
在这里插入图片描述
可以看到在分出S×S个区块后每个区块都会根据情况(预设 逊啦)得到一定数量的边界框。这些边界框对于回归其实不怎么重要(假的)。他们的作用更像在算完上面那几步后提供一个‘约束’。比如图上那只狗,有八个区块内最大概率都是狗,最后的目标检测把第九个区块也带上了,这就是bounding box的作用。

网络结构设计

在这里插入图片描述
上面是结构图yolo_v1结构图,通过结构图可以轻易知道前向传播的计算过程。原文使用的是PASCAL VOC数据集,内含20种物品所以这里的输出是是一个7x7x30的张量,7x7表示把输入图片划分位7x7的网格,每一个小单元的另一个维度等于30。30=(2*5+20)。代表能预测2个框的5个参数(x,y,w,h,score)和20个种类。表中式为YOLOv1的总预测数

SxSx(B∗5+C) = 7x7x(2*5 + 20)
SxS表示网格数量,B表示每个网格生成框的个数,C表示能检测识别的种类。

训练

YOLOv1最大的好处体现在训练上,他是end to end训练,所以所有东西包括预测框的位置、size、种类、置信度(score)等信息的预测都通过一个损失函数来训练。 这可太爽了,一刀切的快感,妈妈再也不用担心我在模型里迷路了!‘
在这里插入图片描述
S2S2表示网格数,原文是7x7。B表示每个单元格预测框的个数,原文是2。
第一行用平方和误差( sum-squared error)来当作位置预测的损失函数,第二行用根号平方和误差来当作宽度和高度的损失函数。第三行和第四行对置信度confidence也用SSE作为损失函数。第五行用SSE作类别概率的损失函数。最后将几个损失函数加到一起,当作yolo v1的损失函数。
λcoord 和λnoobj 是值为5和0.5的两个预设值,他们是为了处理用平方和误差优化模型会导致模型对定位误差和分类误差的处理不怎么聪明的问题。所以增加的边界框坐标预测损失权重和减少的不含物体边界框置信度预测损失权重,换句话说就是解决梯度爆炸用的两个参数。我要是这么会偷懒多好。。。
在这里插入图片描述是框体是否存在物体的检测值,有就是1,没得就是0

使用

在使用时(叫前向传播好麻烦)与训练时一样,网络对新的图像预测一次,给出一堆边界框然后给他们每框以一个confidence得分。因为只要跑这一个网络,所以YOLOv1显而易见的比基于分类方法的方法快多了,我馋的就是这个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值