1 yolo 1 论文
最后生成的张量的维度是7*7 *30
目标检测数据集:
最开始的卷积层负责提取特征,图像分类是全连接层是输出每个类别的概率。
yolo 是 受到GooLeNet启发,GooLeNet24 个卷积层和2个全连接层。
卷积层和全连接层是深度神经网络中常用的两种层类型,用于处理不同类型的输入数据。
卷积层(Convolutional Layer): 卷积层是深度神经网络中常用的一种层类型,特别适用于处理图像、语音等具有空间结构的数据。卷积层通过应用卷积操作来提取输入数据的特征。它包含一组可学习的卷积核(也称为滤波器),每个卷积核都是一个小的矩阵,通过在输入数据上滑动并执行卷积操作,生成特征图或激活图。每个卷积核负责提取输入中的不同特征,例如边缘、纹理等。在卷积层中,卷积核的权重是可学习的参数,通过反向传播算法进行训练优化。卷积层通常还包括其他操作,如激活函数和池化操作,以进一步提高模型的表达能力和减少参数量。
全连接层(Fully Connected Layer): 全连接层是深度神经网络中最常见的层类型之一,也被称为密集连接层或输出层。**全连接层的每个神经元与前一层的所有神经元都有连接,这意味着前一层的所有输出都会作为输入传递到全连接层。全连接层的主要作用是将前一层提取的特征进行组合和组织,以产生最终的输出结果。在分类任务中,通常最后一个全连接层的输出通过softmax函数进行_归一化_,以获得各类别的概率分布。**全连接层中的权重也是可学习的参数,通过反向传播进行训练。
总结: 卷积层主要用于处理具有空间结构的数据,如图像,通过卷积核提取空间特征。全连接层主要用于对前一层的特征进行组合和整合,生成最终的输出结果。在深度神经网络中,通常会交替使用这两种层类型来构建模型,并通过反向传播算法进行训练优化。
2 . fast yolo
更少的卷积核:9个
下图:图上只画一个卷积层,实际是由两个卷积层的
1*1的卷积层的通道比较小,所以作用是降维。 减少features space( map )的个数,也就是减少了权重和计算量。 3*3 的卷积层的通道比较大 。
整个过程先是Imagenet 进行图像分类,去训练使用的是24*24 的输入图片的分辨率,然后是在448*448 分辨率上训练目标检测的模型。
输入448*448*3 通道,用64个7*7大小的卷积核,以步长为2 这样去进行卷积,然后最大池化,再用193个3*3的卷积核去进行卷积,2*2 池化,步长为2,级联,conv layers 一步步走下去,像 VGG ,到下面时
成了一个7*7 *1024的一个张量。拉平输出一个4096层的全连接层。
输出一个4096维的向量,喂到一个1470个神经元的全连接层,输出1470维的向量,在把它reshape 一下,就变成7*7*30的张量,
所以输入448*448*3,输出7*7*30,所有预测框的类别和预测都在这个7*7*30的框里面。中间可以当成黑箱子。
3 训练细节
先是在1000个类别的magineNet的数据集上预训练模型,训练出了前20个卷积层,后面加一个全局平均池化,相当于替代了全连接层,去训练图像分类模型,训练大概一个星期,最后达到准确率是88%,single crop 图片不进行裁剪和集成,和在Caffe 中的GoogleNet模型的准确率是相当的,用Draknet 的作者自己写的深度学习框架。
保留模型的权重来训练目标检测模型。任少卿的文章说增加卷积层和全连接层可以增加性能,根据这个思路,作者在后面加了四个卷积层和两个全连接层。这些层的权重都是随机初始化的。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224 × 224提高到448 × 448。
最后一层预测类概率和边界框坐标。我们通过图像的宽度和高度对边界框的宽度和高度进行标准化,使它们落在0和1之间,就是归一化。我们将边界框的x和y坐标参数化为特定网格单元格位置的偏移量,因此它们也被限定在0和1之间。
我们对最后一层使用线性激活函数,所有其他层使用以下漏整流线性激活:相当于没有非线性函数。
我们对模型输出中的和平方误差进行了优化。我们使用和平方误差,因为它很容易优化,但它并不完全符合我们最大化平均精度的目标。它将定位误差与分类误差等同地加权,这可能不是理想的。 此外,在每张图像中,许多网格单元不包含任何对象。这使得这些单元格的“置信度”得分趋近于零,往往压倒了包含对象的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。
解析:bounding boxes 有三类,强行使用平方和误差,对于两类不用的bounding boxes 这对误差的影响较大,所以设置不同的权重。
为了解决这个问题,我们增加了边界框坐标预测的损失,减少了不包含对象的框的置信度预测的损失。我们使用两个参数“cord”和“noobj”来完成此操作。我们设置“coord = 5”和“noobj = 0.5”。
平方和误差在大盒子和小盒子中的权重也相等。我们的误差度量应该反映出大盒子里的小偏差比小盒子里的小偏差影响小。为了部分解决这个问题,我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
使用绝对误差,对大小框一视同仁,对大框的损失函数不公平。所以用根号。
YOLO预测每个网格单元格有多个边界框。 在训练时,我们只希望一个边界框预测器负责每个对象。我们指定一个预测器“负责”预测一个对象,基于哪个预测具有最高的当前IOU与基本事实。这导致了边界框预测器之间的专门化。每个预测器在预测特定尺寸、长宽比或物体类别方面都做得更好,从而提高了整体召回率。 在培训过程中,我们优化了以下几个部分
损失函数:
其中obj I表示对象是否出现在单元格I中,obj ij表示单元格I中的JTH边界框预测器“负责”该预测。
请注意,损失函数只在对象出现在该网格单元中时惩罚分类错误(因此前面讨论了条件类概率)。它也只惩罚边界框坐标错误,如果该预测器是“负责”地面真值框(即在该网格单元中具有最高的IOU的任何预测器)。
我们在PASCAL VOC 2007年和2012年的训练和验证数据集上训练了大约135轮的网络。在2012年的测试中,我们还包括2007年VOC测试数据进行培训。在整个训练过程中,我们使用批大小为64(就是每次喂进去64张图片),动量为0.9,权重衰减为0.0005(就是L2 正则化)。 我们的学习率时间表如下:对于第一个时代,我们慢慢地将学习率从10“3”提高到10“2”。
如果我们从一个高学习率开始,我们的模型经常由于不稳定的梯度而偏离。我们继续训练10“-2”次方训练75轮,然后10“-3”30轮,最后10“-4”30轮。
为了避免过拟合,我们使用dropout和广泛的数据增强。在第一个连接层之后,速率为0.5的dropout层阻止了层间的共适应。 对于数据增强,我们引入了原始图像大小的20%的随机缩放和平移。我们还在HSV色彩空间中随机调整图像的曝光和饱和度,最高可达1.5倍。
2.3. 推断预测
就像在训练中一样,预测测试图像的检测只需要一次网络评估。在PASCAL VOC上,网络预测每张图像的7*7*2=98个边界框和每个框的类概率。YOLO在测试时非常快,因为它只需要一次网络评估,不像基于分类器的方法。
网格设计在边界框预测中加强了空间多样性(差异性)。通常情况下,一个对象落在哪个网格单元是很清楚的,网络只预测每个对象的一个框。然而,一些较大的物体或靠近多个单元边界的物体可以被多个单元很好地定位。**非最大抑制(保留高置信度的框)**可以用来固定这些多重检测。虽然不像R-CNN或DPM那样对性能至关重要,但非最大抑制在mAP中增加了23%
2.4. YOLO的局限性
YOLO对边界框预测施加了很强的空间约束,因为每个网格单元只能预测两个框,并且只能有一个类。这个空间约束限制了我们的模型可以预测的附近物体的数量。我们的模型难以处理成群出现的小物体,比如鸟群。
由于我们的模型学习从数据中预测边界框,它很难推广到新的或不寻常的长宽比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构从输入图像中有多个下采样层。(池化层和下采样层会导致信息空间的缺失)
最后,当我们在近似检测性能的损失函数上进行训练时,我们的损失函数在小边界框和大边界框中处理错误是相同的。大盒子里的小错误通常是良性的,但小盒子里的小错误对借据的影响要大得多。 我们的主要错误来源是不正确的定位
3.与其他检测系统的比较
目标检测是计算机视觉中的一个核心问题。 检测管道通常首先
从输入图像中提取一组鲁棒特征(Haar [25], SIFT [23], HOG[4],卷积特征[6])。然后,使用分类器[36,21,13,10]或定位器[1,32]来识别特征空间中的对象。
这些分类器或定位器要么以滑动窗口的方式在整个图像上运行,要么在图像中的某些区域子集上运行[35,15,39]。 我们将YOLO检测系统与几个顶级检测框架进行了比较,突出了关键的相似性和差异性。 可变形零件模型。
可变形部件模型**(DPM)**使用滑动窗口方法进行对象检测[10]。
DPM使用一个不相交的管道来提取静态特征,对区域进行分类,预测高分区域的边界框等。我们的系统用一个卷积神经网络取代了所有这些不同的部分。该网络同时执行特征提取、边界盒预测、非最大值抑制和上下文推理。
yolo网络不是静态特征(HOG 人工设计好的特征),而是在线训练特征并针对检测任务对其进行优化。我们的统一架构带来了比DPM更快、更准确的模型。
R-CNN作者是RGB 大神。是下面这个方法的变种。
R-CNN及其变体使用区域建议而不是滑动窗口来查找图像中的对象。选择性搜索[35] selective search 方法 生成潜在的边界框(候选框),卷积网络提取特征,支持向量机对边界框进行评分(分类),线性模型调整边界框**(回归)**,非最大抑制消除重复检测(去除重复的框)。这个复杂管道的每个阶段都必须精确地独立调整(精准上下游产业链),结果系统非常慢,在测试时间[14]时每个图像需要40多秒。(40多秒一张图片)
YOLO与R-CNN有一些相似之处。**每个网格单元提出潜在的边界框,并使用卷积特征对这些框进行评分(分类)。**然而,yolo的系统对网格单元建议施加了空间约束,这有助于减少对同一目标的多次检测(重复检测)。yolo的系统提出的边界框也少得多,每张图像只有98个,(相比较)而selective search 选择性搜索大约有2000个。
最后,我们的系统将这些单独的组件组合成一个单一的、共同优化的模型。
其他快速探测器
Fast 和 Faster R-CNN 专注于通过共享计算和使用神经网络提出区域而不是选择性搜索[14]b[28]来加速R-CNN框架。虽然它们在速度和准确性上都比R-CNN有所提高,但两者的实时性仍然不足**(达不到30FPS)**
许多研究工作都集中在加速DPM管道上。它们加速HOG计算**(方向梯度直方图特征)**,使用级联,并将计算推给gpu。然而,只有30Hz DPM[31]实际上是实时运行的。
YOLO不是试图优化大型检测管道的单个组件,(而是整个,所以说yolo从根上来说就是快的)而是完全抛弃了管道,并且设计得很快。
人脸或人等单一类别的检测器可以高度优化,因为它们必须处理的变化要少得多。YOLO是一个通用的检测器,学习同时检测各种物体。
Deep MultiBox。与R-CNN不同,Szegedy(GooleNet的作者)等人训练卷积神经网络来预测感兴趣的区域(regions of interest) ROI ** b[8],而不是使用选择性搜索。MultiBox还可以通过用单个类预测(单物体检测)代替置信度预测(confidence 换成 单个物体检测)来执行单个对象检测**。然而,MultiBox不能进行通用的目标检测,(也依赖于庞大的目标检测流),仍然只是更大的检测管道中的一部分,需要进一步的图像补丁分类。卷积网络来预测图像中的边界框,(需要对每一个候选框进行分类)yolo 和 muitibox 都需要卷积神经网络,而YOLO是一个完整的检测系统。
OverFeat。
Sermanet等人训练卷积神经网络进行定位,并调整该定位器来执行检测[32]。OverFeat可以有效地进行滑动窗口检测,但仍然是一个不相交的系统。OverFeat优化的是定位,而不是检测性能。 与DPM一样,本地化器在进行预测时只看到本地信息。OverFeat不能对全局环境进行推理(只能看得到滑动窗口),不能分析全图的信息) 因此需要大量的后处理来产生连贯的检测(才能产生合理的效果),YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。
MultiGrasp。我们的工作在设计上与Redmon等人的抓取检测工作相似。我们对边界框预测的网格方法是基于MultiGrasp系统对抓点的回归。然而,抓握检测是一个比物体检测简单得多的任务。MultiGrasp只需要为包含一个对象的图像预测单个可抓取区域。它不需要估计物体的大小、位置或边界,也不需要预测物体的类别,只需要找到一个适合抓取的区域。YOLO预测图像中多个类别的多个对象的边界框和类别概率。
4. 实验
首先,我们将YOLO与其他基于PASCAL VOC 2007的实时检测系统进行了比较。为了理解YOLO和R-CNN变体之间的差异,我们探讨了YOLO和Fast R-CNN (R-CNN b[14]的最高表现版本之一)在VOC 2007上的错误(比较他们的错误比例)。基于不同的误差分布,我们表明YOLO可以用于快速R-CNN检测的重分,并减少背景假阳性**(FP:将背景识别为物体)的误差,(两个结合)从而显着提高性能。我们还介绍了VOC 2012的结果,并将mAP与当前最先进的方法进行了比较。最后,我们在两个艺术品数据集上证明了YOLO比其他检测器更好地泛化**到新的领域
4.1 与其他实时系统的比较
许多目标检测的研究工作都集中在使标准检测管道快速。然而,只有Sadeghi等人真正产生了实时运行(每秒30帧或更好)的检测系统。我们将YOLO与其运行在30Hz或100Hz的DPM的GPU(改进版的DPM)实现进行比较。 虽然其他努力没有达到实时里程碑,但我们也比较了它们的相对mAP和速度,以检查目标检测系统中可用的准确性和性能权衡
Fast YOLO是PASCAL数据集上最快的目标检测方法;据我们所知,它是现存最快的物体探测器。mAP为52.7%,比之前的实时检测精度提高了两倍多。YOLO将mAP推至63.4%,同时仍保持实时性能。 "mpa"通常指的是"mean average precision"(平均精度均值)
我们还使用VGG-16做为主干模型,训练YOLO。这个模型更准确,但也比YOLO慢得多。这对于与其他依赖于VGG-16的检测系统进行比较是有用的,但由于它比实时慢,本文的其余部分将重点放在我们更快的模型上。
Fastest DPM在不牺牲太多mAP的情况下有效地加快了DPM的速度,但它仍然会损失2倍的实时性能。与神经网络方法相比,DPM的检测精度相对较低,这也限制了它的发展
最近的Faster R-CNN用神经网络代替选择性搜索来提出边界框,类似于Szegedy等人[8]在我们的测试中,他们最准确的模型达到了7fps,而一个更小、更不准确的模型运行在18fps。VGG-16版本的更快R-CNN比YOLO高10 mAP,但速度也比YOLO慢6倍。ZeilerFergus Faster R-CNN只比YOLO慢2.5倍,但精度也不如YOLO
4.2. VOC 2007错误分析
为了进一步研究YOLO和最先进的检测器之间的区别,我们将详细分析VOC 2007的结果。我们将YOLO与Fast RCNN进行比较,因为Fast R-CNN是PASCAL上性能最高的检测器之一,而且它的检测是公开可用的。
我们使用Hoiem等人的方法和工具,对于测试时的每个类别,我们查看该类别的前N个预测。每个预测要么是正确的,要么根据错误的类型进行分类:
两阶段模型准确度更高。
图4:错误分析:Fast R-CNN vs. YOLO这些图表显示了不同类别(N = #该类别中的对象)的前N个检测中定位和背景错误的百分比。
图4显示了所有20个类中每种错误类型的平均细分。 YOLO很难正确定位对象。定位错误在YOLO错误中所占的比重超过了所有其他来源的总和。Fast R-CNN的定位错误要少得多,但背景错误要多得多。**13.6%(FP 误差)**的最高检测结果是假阳性,不包含任何对象。Fast R-CNN预测背景检测的可能性几乎是YOLO的3倍。
4.3. 结合快速R-CNN和YOLO
YOLO比Fast R-CNN犯的背景错误少得多。通过使用YOLO来消除Fast R-CNN的背景检测,我们可以显著提高性能。对于R-CNN预测的每个边界框,我们检查YOLO是否预测了一个类似的框。如果是这样,我们根据YOLO预测的概率和两个框之间的重叠来提高预测。 最好的Fast R-CNN模型在VOC 2007测试集上实现了71.8%的mAP。当与YOLO结合在一起时,它是
表2:VOC 2007模型组合实验。我们研究了将各种模型与Fast R-CNN的最佳版本相结合的效果。其他版本的快速R-CNN只提供了一个小的好处,而YOLO提供了显著的性能提升
表3:2012年PASCAL VOC排行榜。YOLO与2015年11月6日完整的comp4(允许外部数据)公开排行榜的对比。显示了各种检测方法的平均平均精度和每类平均精度。YOLO是唯一的实时探测器。Fast R-CNN + YOLO是得分第四高的方法,比Fast R-CNN提高2.3%
mAP上升3.2%至75.0%。我们还尝试将顶级的Fast R-CNN模型与其他几个版本的Fast R-CNN模型结合起来。这些组合在mAP中产生了0.3%到0.6%之间的小幅增长,详见表2。 YOLO的提升并不仅仅是模型整合的副产品,因为不同版本的Fast R-CNN组合在一起几乎没有什么好处。更确切地说,正是因为YOLO在测试时犯了不同类型的错误,它才如此有效地提高了Fast R-CNN的表现。 不幸的是,这种组合并没有从YOLO的速度中受益,因为我们分别运行每个模型,然后再组合结果。然而,由于YOLO是如此之快,与fast R-CNN相比,它不会增加任何显著的计算时间
4.4. VOC 2012结果
在VOC 2012测试集中,YOLO的mAP得分为57.9%。 这比目前的技术水平要低,更接近于使用VGG-16的原始R-CNN,见表3。与最接近的竞争对手相比,我们的系统在处理小物体方面遇到了困难。在奶瓶、绵羊和电视/监视器等类别上,YOLO的得分比R-CNN或Feature Edit低8-10%。然而,在猫和训练等其他类别上,YOLO的表现更高。 我们的组合快速R-CNN + YOLO模型是性能最高的检测方法之一。Fast R-CNN与YOLO的结合提高了2.3%,在公共排行榜上上升了5个名次。
4.5. 概括性:艺术作品中的人物检测
用于目标检测的学术数据集从相同的分布中提取训练和测试数据。在真实的应用程序中,很难预测所有可能的用例,并且测试数据可能与系统在2010年之前看到的数据不同。我们将YOLO与毕加索数据集[12]和人-艺术数据集[3]上的其他检测系统进行比较,这两个数据集用于测试艺术品上的人检测。 图5显示了YOLO和其他检测方法的性能对比。作为参考,我们给出了对人的VOC 2007检测AP,其中所有模型仅根据VOC 2007数据进行训练。在毕加索模型上,他们接受VOC 2012的培训,而在人物艺术上,他们接受VOC 2010的培训
R-CNN 2007年VOC的AP含量很高。然而,当应用于艺术品时,R-CNN下降相当大。R-CNN使用选择性搜索来搜索针对自然图像进行调整的边界框建议。R-CNN的分类器步骤只看到小区域,需要好的建议。 当DPM应用于艺术作品时,它能很好地保持AP。 先前的工作理论认为,DPM之所以表现良好,是因为它具有很强的物体形状和布局的空间模型。 虽然DPM不像R-CNN那样退化,但它从较低的AP开始。 YOLO对VOC 2007有良好的性能,在处理艺术品时,其AP的降解率低于其他方法。 与DPM一样,YOLO建模对象的大小和形状,以及对象之间的关系和对象通常出现的位置。艺术品和自然图像在像素水平上非常不同,但它们在物体的大小和形状方面是相似的,因此YOLO仍然可以预测良好的边界框和检测
5. 野外实时检测
YOLO是一种快速,准确的目标检测器,使其成为计算机视觉应用的理想选择。我们将YOLO连接到一个网络摄像头,并验证它保持实时性能,
图5:在Picasso和People-Art数据集上的泛化结果。
图6:定性结果。YOLO运行在样本艺术品和自然图像从互联网上。虽然它确实认为一个人是一架飞机,但它基本上是准确的。
包括从相机获取图像和显示检测结果的时间。 由此产生的系统具有互动性和吸引力。虽然YOLO可以单独处理图像,但当它连接到网络摄像头时,它就像一个跟踪系统,可以检测物体的移动和外观变化。系统的演示和源代码可以在我们的项目网站上找到:pjreddie.com/yolo/。
6. 结论
介绍了目标检测的统一模型YOLO。我们的模型构造简单,可以直接在完整的图像上进行训练。与基于分类器的方法不同,YOLO是在直接对应于检测性能的损失函数上进行训练的,并且整个模型是联合训练的。 快速YOLO是文献中最快的通用对象检测器,YOLO推动了最先进的实时对象检测。YOLO还可以很好地推广到新的领域,使其成为依赖于快速、健壮的对象检测的应用程序的理想选择。
致谢: 这项工作得到了ONR N00014-13-1-0720, NSF IIS-1338054和Allen杰出研究者奖的部分支持