【论文阅读】Yolo_v1

本文主要是YOLO_V1的阅读翻译,希望看完一遍之后不用直接回原文抠东西出来,可以看着这个自己的阅读翻译再回原文找,更快一些,希望对大家有所帮助。

摘要

em,主要就说,我们的网络结构,很快。。对比其他系统,yolo做出定位的错误率更高,但从北京中预测出假样本的概率 也更小。

简介

人类瞄一眼图片就能立刻知道图中有什么物体,他们在哪儿,在做什么。人类视觉系统非常准确和快速,让我们能不需特别注意进行一些诸如开车的复杂任务。快速准确的物体检测算法让电脑可以不适用特殊的传感器就控制车辆行驶,让辅助工具可以传递实时场景信息给人类用户,释放了通用、响应智能系统的潜力。
现在的监测系统重新规划了分类器进而进行检测。检测一个物体,检测一个物体时,哪些系统使用了一个分类器,并在图中推测物体可能所处的位置和 大小。系统诸如(DPM,deformable parts models)使用一个滑动窗口让分类器在在整个图像上的均匀位置运行。
更多的近期方法如R-CNN使用候选区法,先选出图中的候选区,再在这些候选区中运行分类器。在分类后处理细化边框,重复进行检测,并根据场景中的边框重新调整边框。由于每个组件必须分开训练,那些复杂的过程难以优化并且运行缓慢。
本文将物体检测定义为一个回归问题,直接在图片像素中对边框和分类可能性进行回归。使用YOLO可以预测物体的种类和位置。
YOLO非常简单,如图所示。使用单卷积神经网络同时预测多个边框和物体分类的可能性。YOLO直接在整幅图上训练,并且且直接根据检测结果进行优化,因此与传统图像检测算法相比有几个明显的优势。
在这里插入图片描述

    1.重定图片的大小
    2.运行卷积神经网络
    3.运行NMS(非极大值抑制)

优势:
1.YOLO非常快,因为将物体检测定义为回归问题,所以检测也不需要复杂的组件。
2.YOLO基于全图进行检测,所以不像滑动窗口和预选区技术,YOLO中隐含着隐式编码的上下文信息。Faster R-CNN就会误把图中的背景碎片当做物体进行检测,因为他看不到更大的背景图和信息
3.YOLO学习对象的一般化表示。当在原图中训练并在艺术化处理的图中进行监测的时候,YOLO大幅优于其他顶级的检测方法。因为YOLO的高度一般化表示,所以在新的领域或使用未知输入时不容易出错。
缺点:
1.YOLO准确率不够高
2.YOLO在定位物体,尤其是小物体上表现差

2.统一检测

将所有组件统一设计进单个神经网络。网络使用从整张图中提取出来的特征去预测每个候选框,也同事对图中可能存在的所有类别同时进行预测。这意味着网络从整张图获得结果并检测所有图中的物体。YOLO的设计让端到端的训练和在满足实时速度要求的同时保证高检测率。
1.系统将输入图片分成S*S个小格。如果物体同时落入几个小格,那么物体中心所在的小格子负责该物体的检测。
每个格子预测B个边框并且计算这些边框的可信度。可信度得分反映了格子包含这种物体的可能性大小以及预测的准确率。每个格子预测B个边框。一般情况下我们定义为:Pr(Object)*IOU。物体存在,置信度得分为0。然而我们希望置信度得分等于真实边框和预测边框的交并比。
2.每个格子包含5各参数x,y,w,h,confidence
3.每个格子预测C个类别物体存在的可能性,可能性基于小格包含该物体的假设。我们预测一系列类别物体在每个小格存在的可能性,不考虑边框B的数目。
4.测试时,我们将条件概率和单个框置信度相乘:Pr(Class|Object)*Pr(Object)*IOU,可以给我们每个边框预测特定种类的得分。这些分数包含了该类物体出现在框中的可能性,也指出预测的物体边框有多契合物体的实际边界。
在这里插入图片描述

系统模型检测作为一个回归问题。将图片分成S*S个小格,每个小格预测B个边框,边框的置信度,还有C种类别的可能性,预测包含在一个S*S*(B*5+C)的张量里。在PASCAL VOC上运行YOLO时,使用参数S=7,B=2。PASCAL VOC有20个标注类,所以C=20。最终预测结果为一个7*7*30的张量

2.1网络设计

1.该网络完全由卷积神经网络组成,并在PASCAL VOC监测数据集上灵谷了他的性能。网络初始的卷积层提取了图片中的特征,并在最后使用全连接层预测输出和坐标。
2.网络的结构有GoogleNet启发得到,其中前面有24个卷积层后跟两个全连接层。与GoogleNEt使用inception模型不同的是,本网络只使用了11和33的卷积层,全连接层如图中所示。
3.作者也训练了另外一个更快版本的Fast YOLO推进了物体检测的边界。Fast YOLO使用更少的9个卷积层和更少的过滤器。除了网络的大小,YOLO和Fast YOLO的其他训练和测试参数相同。最终的输出为一个7730的张量。
在这里插入图片描述

2.2训练

1.卷积层在拥有1000个类的ImageNet比赛数据集上进行预训练。预训练时使用前20个卷计层后跟一个平均池化层和一个全连接层进行训练。训练花了大约一周时间并且获得了单一物体检测达到88%的准确率,高居前五,效果和基于Caffe框架的Model Zoo相仿。
2.接着使用模型进行检测。Ren等人证明卷积层和全连接层在预训练网络中可以提高网络的性能。根据他们的实验结果,我们给卷积层添加了权重参数随机初始化的两个全连接层和4个卷积层。检测时为了获取更高的图像分辨率,也提高了输入图片的尺寸,从224224到448448
3.我们使用最终层同时预测类的可能性和边框坐标。边框信息和宽高归一化到0-1之间。
4.激活函数使用leaky relu
5.模型的输出选择优化平方和误差。使用平方和误差因为该项最好优化,但它并不能完美契合我们最大平均预测的目标。权重定位误差并不总是理想的,和分类定位误差相同。并且,没有物体存在的小格会吧那些小格的置信度推向0,经常会影响进行物体预测的小格。这个可能会使模型不稳定,引起训练早期的偏差。
6.为了对这一点进行补救,作者为模型增加了边框坐标预测损失并且减少了不包含物体的小格中的边框置信度损失的影响。为此使用了两个lambda参数,其中坐标参数为lambda coord=5,另一个为lambda =0.5。
7.在大小边框中,平方误差依旧等于大小边框的权重误差。误差矩阵应该在大边框中比在小编框中反映的更多。为了确定这个,我们预测边框长宽的平方根,而并非直接对原值进行预测。
8.YOLO为每个小格子预测多个边框。在训练时我们只需要一个边框去预测一个物体,而非多个。我们选择IOU最大的边框负责该物体的预测。这使得每个边框预测器之间的分工更加明确。使得每个预测器的表现更好。
8.在训练时优化如下损失函数:
在这里插入图片描述
(1)其中求和号后面的系数代表了物体是否出现在第i个小格中,上下标表示第i个小格中的第j个边框预测器负责对物体进行预测。
(2)注意,损失函数只在小格中有物体存在的时候对分类误差进行修正,也只在边框负责预测物体的时候对边框预测的错误进行修正。
(3)在训练集和验证集上训练网络,使用了来自Pascal2007和pascal2012数据集的数据,大约用了135个epochs。在2012数据集进行测试时,也是用了2007测试集的数据进行训练。训练的batch大小选为64,mommentum方法的系数beta值为0.9,衰减值alpha为0.0005
(4)训练的学习率规则如下:第一个epoch缓慢的将学习率从0.001增加到0.01。如果开始训练时使用过于打的学习率会因为梯度不稳定引起大的偏差。然后使用0.01训练75个epochs,再使用0.001训练30个epochs,最终使用0.0001训练30个epochs。
(5)为了避免过拟合,使用dropout方法和广泛的数据增强技术。在第一个连接层后面加一个比率为0.5的dropout层。数据增强则推荐使用随机缩放技术最小缩放到原图的20%左右。也以参数1.5在HSV色域中调整了原图的曝光度和饱和度。

2.3推理

和训练一样,预测只需要一个网络评测。在pascal VOC中,网络每张图预测98个边框并且每个边框包含类预测的可能性。YOLO在策而事实非常快因为他只需要一个单个网络进行预测,不同于其他基于分类器的鉴别方法。
小格的设计增强了边框预测时的空间多样性。在一般情况下可以很清楚的判断物体落在哪个小格中,网络只是用一个边框预测一个物体。在物体同时落入多个边框或在边框边界处是,非极大值抑制可以用来解决这个问题。虽然不是影响性能的关键,但是NMS增加了2-3%的mAP。

局限

1.YOLO面临很强的空间局限性,因为一个格子只预测两个边框并且每个格子只能包含一个类。这个约束了对高密度集群的预测,如飞鸟等。
2.对新物体的预测表现的不够好。
3.在训练损失函数提高检测表现时,损失函数使用同等方式处理大小边框的误差。大边框中的小错误是良性的,但小编框中的小错误可能非常影响IOU。
4.主要的误差还是存在于定位误差 。

对比其他系统

有空再说~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值