Tic商业评论

关注微信公众号【站长自定义模块】,定时推送前沿、专业、深度的商业资讯。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

YOLOv1原理深入理解

0
回复
5575
查看
[复制链接]
已绑定手机

49

主题

4

回帖

1228

积分

管理员

积分
1228
QQ
来源: 2021-4-27 13:21:02 显示全部楼层 |阅读模式
yolo是最早出现的单阶段目标检测方法,也是最早的一个可以实时进行检测的算法。本文主要对yolo算法进行原理分析理解。
网络分为两部分,首先是识别,先确定图片中存在我们标注的物体,然后用边框进行定位:
如图所示:

1.jpg
   图一. 对图片的识别与定位
要对图片进行识别,首先我们要确定图片的哪个位置存在物体,这就需要引出候选区域,即存在物体的区域,这个区域怎么去确定,以及确定多少是一个比较复杂的问题。
这里对于二阶段的检测方法,候选区域选的比较多,当然也导致推断速度非常慢。

一,yolo方法实现
首先yolo没有消除预选框,而是将图片分为SxS个小方格,这里yolov1版本S=7,即49个方格,每个方格中挑选2个预选框,总共有98个预选框,有了预选框就需要对预选框里的物体进行预测,这里每个预选框,除了要预测物体的位置,还要预测物体的置信度,置信度的计算方法如下:
2.jpg
这里Pr(object)是预测物体是否落在方格里,如果是这里值为1,否则为0,IOU是预测bounding box和实际的truth之间IOU的值。每个bounding box 要预测(x,y,w,h)和confidence共5个值,每个网格还有预测一个类别信息,假设共有C类,所以每个网格输出就是(5*2+C)这里每个网格预选框为2,最终输出就为SxSx(5*2+C)的一个tensor。
这个预测图像如图所示:
2.jpg


二,网络结构
2.jpg
上图为YOLO的整个网络结构,输入图片经过神经网络变换得到一个输出张量,里面存在图像的种类以及区域。

输入和输出的对应关系如图所示:
2.jpg
在进行预测时,每个网格的class信息和bounding box预测的信息相乘,就会得到每个bounding box的class-specific confidence score计算如下:
2.jpg
这里左边是类别信息和某一类的置信度以及位置信息相乘,这结果就是某个类别以及相应的位置准确度信息。这里得到很多box的class-specific confidence score将得分比价低的box进行过滤,也就是所说的极大值抑制,NMS。
三,yolo实现细节以及相关解释

1.输入
   在网络中的全连接层要求需要固定大小的向量作为输入,所以往前也需要原始图像需要有固定的尺寸。这里作者选择的图像为448*448
2.输出:
   输出是一个7*7*30的一个tensor

3.30维向量;
   具体维度的信息如下图所示:
2.jpg

其中坐标的x,y用对应网格的offset归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。

在具体设计损失函数时,这里8,2,20明显不平衡,作者采用sum-squared error loss来进行设计。
这里这样设计存在问题。
1.8维的localization error和20维的classification error同样重要不合理
2.如果网格中没有object,网格的confidence为0,毕竟图像中为0的是比较多的,这种做法会overpowierng,这会导致网络发散。

解决方法:
才用加权的方式进行解决:更重视8维的坐标预测,给这些损失前面添加更大的loss weight,即为: 2.jpg 在Pascal VOC训练中5.
对没有object的box的confidence loss,赋予小的loss weight,记为 2.jpg 在pascal VOC训练中取0.5。
有object的box的confidence loss和类别的loss的loss weight正常取1
整个损失函数如下所示:

2.jpg




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
电话咨询: 135xxxxxxx
关注微信