YOLO–v2
摘要:
论文的摘要部分介绍了YOLO9000,这是一个最新的实时对象检测系统,能够检测超过9000个对象类别。以下是对摘要部分的详细解释:
-
YOLO9000的介绍:
- YOLO9000是基于YOLO(You Only Look Once)检测方法的改进版本,它是一个实时系统,意味着它能够快速处理图像并识别其中的对象。
- 该系统能够识别的对象类别数量达到了9000多个,这是一个显著的增加,因为传统的对象检测数据集通常只包含几十到几百个类别。
-
YOLO检测方法的改进:
- 论文首先提出了对YOLO检测方法的多项改进,这些改进既包括新颖的想法,也包括借鉴之前研究的成果。
- 改进后的模型被称为YOLOv2,它在标准的检测任务上,如PASCAL VOC和COCO数据集上,达到了最先进的性能。
-
多尺度训练方法:
- 通过一种新颖的多尺度训练方法,YOLOv2模型能够在不同的尺寸下运行,这提供了在速度和准确性之间的一个简单权衡。
- 例如,在67帧每秒(FPS)的速度下,YOLOv2在VOC 2007数据集上达到了76.8的平均精度(mAP),而在40 FPS的速度下,它的mAP达到了78.6,这表明即使在速度较慢的情况下,它仍然能够超越其他最先进的方法,如使用ResNet的Faster R-CNN和SSD。
-
对象检测与分类的联合训练:
- 论文提出了一种方法,可以同时在对象检测和分类上进行训练。
- 使用这种方法,研究者们训练了YOLO9000,它同时在COCO检测数据集和ImageNet分类数据集上进行训练。
- 这种联合训练允许YOLO9000预测那些没有标记检测数据的对象类别。
-
验证方法:
- 研究者们在ImageNet检测任务上验证了他们的方法。
- 尽管YOLO9000只在200个类别中的44个上有检测数据,它在ImageNet检测验证集上的mAP达到了19.7。
- 对于不在COCO中的156个类别,YOLO9000的mAP为16.0。
-
总结:
- YOLO9000不仅能够检测200个类别,还能预测超过9000个不同的对象类别,并且仍然能够实时运行。
摘要部分强调了YOLO9000的主要贡献和特点,即其实时检测能力、处理大量对象类别的能力,以及通过联合训练提高检测和分类性能的能力。这些特点使得YOLO9000在对象检测领域具有重要的应用潜力。
1.introduction
-
对象检测的重要性:
- 引言部分首先强调了通用对象检测在计算机视觉中的重要性,它应该是快速、准确并且能够识别多种不同对象的能力。
- 对比了对象检测数据集与其他任务(如分类和标记)的数据集在规模上的差异,指出了现有对象检测数据集的局限性。
-
现有检测方法的局限性:
- 论文讨论了尽管神经网络的出现使得检测框架变得越来越快速和准确,但大多数检测方法仍然局限于一小部分对象类别。
- 指出了标记检测数据的成本远高于分类或标记数据,因为检测数据需要更详细的标注(如对象的边界框),而且用户通常可以免费提供分类或标记数据。
-
利用分类数据集:
- 作者提出了一种新的方法,利用已有的大量分类数据来扩展当前检测系统的能力。
- 这种方法使用了一个层次化的视角来看待对象分类,允许将不同的数据集结合起来。
- 论文还提出了一种联合训练算法,可以在检测和分类数据上同时训练对象检测器。
-
YOLO9000的目标:
- 论文的目标是训练一个实时对象检测器YOLO9000,它可以检测超过9000个不同的对象类别。
- 首先,作者改进了基础的YOLO检测系统,产生了YOLOv2,这是一个最先进的实时检测器。
- 然后,使用数据集组合方法和联合训练算法,训练了一个模型,该模型不仅使用了来自COCO的9000多个类别的数据,还使用了来自ImageNet的检测数据。
-
资源可用性:
- 论文指出,所有的代码和预训练模型都可以在线上获得,提供了相关网址。
引言部分为读者建立了研究的背景和框架,阐明了YOLO9000的研究意义和实际应用价值。通过提出一个新的方法来利用大规模的分类数据集,YOLO9000能够在实时检测系统中识别大量对象类别,这在计算机视觉领域是一个重要的进步。
2.better
YOLO的不足:
定位错误:与Fast R-CNN相比,YOLO在对象定位上犯了许多错误。这意味着YOLO在确定对象在图像中的具体位置方面不够准确。
召回率低:YOLO的召回率相对较低,特别是与基于区域提议的方法相比。召回率是指模型正确识别出所有正样本的能力,低召回率意味着模型可能会错过一些对象。
改进目标:
提高召回率和定位精度:作者的主要目标是提高YOLO的召回率和定位精度,同时保持分类准确性。
保持速度:尽管计算机视觉的趋势是使用更大、更深的网络,但作者希望YOLOv2在提高准确性的同时,仍然能够保持快速。
采取的措施:
简化网络:与扩大网络规模不同,作者选择了简化网络架构,并使网络的表示更容易学习。
整合过去的工作和新颖概念:作者汇集了过去的各种想法,并结合自己的创新概念来提升YOLO的性能。
结果总结:
表2:文章中的表2总结了采取这些措施后YOLO性能的改进结果。这可能包括不同改进对mAP(平均精度)和速度的影响等数据。
Batch Normalization
批量归一化:作者引入了批量归一化(Batch Normalization)到YOLO的所有卷积层中。这种技术可以显著提高模型收敛的速度,并消除了对其他形式正则化的需求。通过使用批量归一化,模型的mAP(平均精度)提高了超过2%。
High Resolution Classifier
高分辨率分类器:为了提高模型的性能,作者对分类网络进行了微调,使其在448×448分辨率的ImageNet上进行训练,而不是原始YOLO的224×224分辨率。这样,网络有更多时间来调整其过滤器,以便更好地处理高分辨率输入。这一改进使得mAP提高了近4%。
高分辨率分类网络的微调:
微调过程:首先,YOLOv2的分类网络在ImageNet数据集上以448×448像素的完整分辨率进行了10个训练周期的微调。
目的:这样做的目的是让网络有时间调整其过滤器,以便更好地处理高分辨率的输入图像。
检测网络的微调:
在完成了上述高分辨率分类网络的微调之后,作者接着对得到的网络进行了针对检测任务的微调。
性能提升:
mAP提升:这种高分辨率分类网络的使用几乎使模型的平均精度(mAP)提高了4%。mAP是评估对象检测模型性能的一个重要指标,它衡量的是模型在检测任务中的平均准确率。
Convolutional With Anchor Boxes
使用锚框(Anchor Boxes)的背景:
原始的YOLO模型直接使用全连接层来预测边界框的坐标,这种方法在预测时存在一定的局限性。
与之相对的是基于区域提议的方法(如Faster R-CNN),它们使用预定义的锚框(prior boxes)和卷积层来预测边界框的偏移量和置信度。
卷积层预测偏移量而不是直接预测坐标,这种方式简化了问题,使得网络更容易学习。
YOLOv2中的改进:
去除全连接层:YOLOv2去除了原始YOLO中的全连接层,转而使用锚框来预测边界框。
网络结构调整:为了适应锚框,YOLOv2消除了一个池化层,使得网络的输出分辨率更高,从而提高了预测的精度。
输入尺寸调整:YOLOv2将输入图像的尺寸从原始YOLO的448×448调整为416×416,这样做是为了在特征图中获得奇数数量的单元格,从而在图像中心有一个单一的预测单元。
锚框的预测:
对象中心预测:YOLOv2在每个单元格中预测5个边界框,每个边界框预测5个坐标(tx, ty, tw, th, to),其中tx和ty表示边界框中心相对于单元格中心的偏移,tw和th表示边界框的宽度和高度相对于锚框的偏移,to表示对象存在的概率。
类别预测:每个锚框还预测类别概率和对象存在的概率(objectness)。
性能提升:
通过使用锚框,YOLOv2的召回率得到了显著提升,尽管mAP(平均精度)略有下降,但这表明模型有更多的空间进行改进。
结论:
引入锚框的改进使得YOLOv2在预测边界框时更加精确,尤其是在处理大型对象时。
这种改进有助于提高模型的召回率,即使在牺牲一点mAP的情况下,也使得模型在后续有更多的机会进行优化和提升。
Dimension Clusters.
锚框尺寸的选择问题:
在使用锚框进行对象检测时,合适的锚框尺寸对于模型性能至关重要。原始的YOLO模型和一些其他方法通常是基于经验手动选择这些尺寸。
手动选择的锚框可能不是最优的,因为网络需要在训练过程中学习如何调整这些框以适应不同的对象尺寸,这可能会增加学习的难度。
使用聚类分析优化锚框尺寸:
为了自动找到更好的锚框尺寸,作者采用了k-means聚类算法对训练集中的边界框尺寸进行分析。
通过聚类,作者能够自动地发现哪些尺寸的锚框对于模型来说是有效的,而不是依赖于人为的选择。
聚类的实施和结果:
作者使用k-means聚类对训练集中的边界框宽度和高度进行分析,以找到最佳的聚类中心(即锚框尺寸)。
为了避免大尺寸框在聚类时对结果产生过大影响,作者使用了基于IOU(交并比)的距离度量方法,而不是传统的欧几里得距离。
通过实验不同的k值(聚类数目),作者发现k=5时在模型复杂度和召回率之间取得了良好的平衡。
改进的影响:
使用聚类得到的锚框尺寸显著提高了YOLO的性能,相比于手动选择的锚框,聚类方法使得模型的平均精度(mAP)提高了。
聚类方法提供了一个更好的起点,使得网络在学习预测高质量检测时更容易。
结论:
聚类分析的使用在YOLOv2中是一个重要的改进,它使得模型能够更有效地学习和预测不同尺寸的对象。
这种方法不仅提高了模型的性能,而且减少了对专家知识的依赖,使得模型配置更加自动化和优化。
“Direct location prediction”
原始YOLO的局限性:
- 原始的YOLO模型在预测边界框位置时存在不稳定性,尤其是在训练的早期阶段。
- 这种不稳定性主要来自于模型预测边界框中心位置的方式。在区域提议网络(如Faster R-CNN中的RPN)中,网络预测偏移量(tx和ty),这些偏移量是基于预先定义的锚框位置的。
改进措施:
- 直接预测坐标:为了解决这个问题,YOLOv2不再预测偏移量,而是直接预测边界框的中心坐标(bx和by)相对于其所在网格单元(grid cell)的位置。
- 使用sigmoid函数:通过使用sigmoid激活函数,网络的预测被限制在一个范围内(0到1之间),这样可以确保预测的边界框中心始终位于图像内。
预测方法的具体细节:
- 网格单元:YOLOv2在每个网格单元上预测5个边界框,每个边界框有5个预测坐标(tx, ty, tw, th, to)。
- 参数化:如果单元格相对于图像的左上角偏移了(cx, cy),并且锚框的宽度和高度分别是pw和ph,那么预测的坐标可以表示为:
- bx = σ(tx) + cx
- by = σ(ty) + cy
- bw = pw * tw
- bh = ph * th
- Pr(object) * IOU(b, object) = σ(to)
其中,σ表示sigmoid函数,IOU是预测框和真实框之间的交并比。
改进的影响:
- 通过直接预测边界框的中心位置,YOLOv2的模型变得更加稳定,学习过程也更加顺畅。
- 这种改进使得网络更容易学习到精确的边界框位置,从而提高了模型的整体性能。
结论:
- 直接位置预测的改进是YOLOv2相对于原始YOLO的一个重要进步,它提高了模型在对象定位任务上的准确性和稳定性。
- 这种改进与使用锚框相结合,使得YOLOv2在处理不同尺寸和形状的对象时更加有效。
Fine-Grained Features
细粒度特征的需求:
- 尽管改进后的YOLOv2在13×13的特征图上进行检测已经足够处理大尺寸对象,但为了更好地定位小尺寸对象,需要更细粒度的特征。
改进措施:
- 通道层(Passthrough Layer):为了获得更高分辨率的特征,作者引入了一个通道层,它将较低分辨率层的特征传递到较高分辨率层。
- 特征融合:通道层将较高分辨率的特征(26×26)与低分辨率层的特征进行融合,形成一个13×13×2048的特征图,这样检测器就可以利用这些细粒度特征进行检测。
预测方法的具体细节:
- 特征图转换:原始的26×26×512特征图通过通道层转换为13×13×2048的特征图,这个过程类似于ResNet中的恒等映射(identity mappings)。
- 检测器运行:YOLOv2的检测器在扩展后的特征图上运行,从而可以访问到细粒度特征。
改进的影响:
- 通过使用细粒度特征,YOLOv2在检测小尺寸对象时的性能得到了提升,尤其是在特征图中的中心位置,这对于图像中心的小对象尤其重要。
结论:
- 细粒度特征的引入使得YOLOv2在保持实时检测能力的同时,对小尺寸对象的检测精度也有所提高。
- 这种改进为YOLOv2提供了一种有效的方式来处理不同尺寸的对象,增强了模型的泛化能力。
Multi-Scale Training
多尺度训练的需求:
- 原始的YOLO模型使用固定的输入图像尺寸(448×448像素),这限制了模型在不同分辨率图像上的适应性。
- 在实际应用中,可能需要在不同大小的图像上进行对象检测,例如在小屏幕设备或高分辨率视频流中。
改进措施:
- 动态调整网络尺寸:YOLOv2不再固定输入图像的尺寸,而是在训练过程中动态调整网络的尺寸。
- 随机选择尺寸:在每10个批次的训练中,网络随机选择一个新的图像尺寸,这些尺寸是32的倍数,范围从320×320到608×608像素。
训练方法的具体细节:
- 模型调整:当网络选择一个新的尺寸时,模型会相应地调整其结构以适应该尺寸,并继续训练。
- 输入图像的下采样:由于YOLOv2的卷积层对输入图像进行32倍的下采样,所以即使输入图像的尺寸变化,输出的特征图尺寸(13×13)保持不变。
改进的影响:
- 速度与准确性的权衡:通过多尺度训练,YOLOv2能够在较小尺寸的图像上以更快的速度运行,同时在较高分辨率下保持高准确性。
- 灵活性:这种训练方法使得同一个YOLOv2模型能够适应多种不同的应用场景,根据需要在速度和准确性之间做出选择。
结论:
- 多尺度训练是YOLOv2的一个重要特性,它提高了模型的适应性和灵活性,使其能够在不同尺寸的图像上进行有效的对象检测。
- 这种训练方法为YOLOv2在实际应用中提供了更多的选择,使其能够根据不同的需求和限制进行优化。
2.faster
这段内容阐述了YOLOv2在设计时的两个主要目标:提高检测的准确性和速度。特别是在需要低延迟预测的应用中,例如机器人或自动驾驶汽车,快速而准确的检测至关重要。为了实现这两个目标,YOLOv2从根本上进行了优化设计,以确保它能够快速运行。
此外,这段内容还比较了YOLOv2所使用的基础特征提取网络与VGG-16网络的差异:
VGG-16:虽然VGG-16是一个非常强大和准确的分类网络,但它的复杂性是不必要的。VGG-16的卷积层在处理224×224分辨率的单张图像时,需要进行306.9亿次浮点运算。
YOLO的定制网络:YOLO框架使用的是基于Googlenet架构的定制网络。这个网络比VGG-16更快,只需要85.2亿次运算就可以完成一次前向传播。然而,这种速度的提升是以牺牲一些准确性为代价的。在单次裁剪、top-5准确率的情况下,YOLO的定制模型在ImageNet上的准确率为88.0%,而VGG-16的准确率为90.0%。
Darknet-19
Darknet-19网络模型:
新模型的提出:为了使YOLOv2更快,作者提出了一个新的分类网络模型,称为Darknet-19。这个模型是YOLOv2的基础特征提取器,替代了之前使用的VGG-16模型。
设计原则:Darknet-19的设计基于Googlenet架构,它通过简化网络结构来提高速度,同时尽量保持准确性。这个模型使用了3×3的卷积核和在每个池化层之后翻倍的通道数,类似于VGG模型的设计。
Darknet-19的性能:
操作数减少:Darknet-19在进行单张224×224分辨率图像的前向传播时,只需要55.8亿次浮点运算,这比VGG-16的306.9亿次大幅减少。
准确性:尽管Darknet-19的操作数减少,但它在ImageNet上的分类准确性仍然很高。在单次裁剪、top-5准确率的情况下,Darknet-19达到了88.0%,而VGG-16为90.0%。这表明Darknet-19在速度和准确性之间取得了很好的平衡。
Darknet-19的训练:
训练过程:作者使用随机梯度下降(SGD)和多项式衰减率对Darknet-19进行训练,使用了数据增强技术,如随机裁剪、旋转和颜色变换,以提高模型的泛化能力。
微调策略:在初步训练后,作者在更高的分辨率(448×448)上对网络进行了微调,以进一步提高模型在高分辨率输入上的性能。
结论:
Darknet-19是YOLOv2能够实现快速检测的关键组成部分。通过设计一个更轻量级的网络,YOLOv2在保持高准确性的同时,显著提高了处理速度。
这种网络设计的选择使得YOLOv2非常适合需要实时检测的应用,如机器人和自动驾驶汽车,同时也为YOLOv2在其他计算资源受限的环境中的应用提供了可能。
Training for detection.
调整Darknet-19以适应检测任务:
移除和添加层:为了将Darknet-19转换为检测网络,作者移除了最后的卷积层,并添加了三个3×3卷积层,每个卷积层都有1024个过滤器。这些新层负责预测边界框和类别概率。
输出层:最后,添加了一个1×1卷积层,其输出过滤器的数量等于检测任务所需的类别数加上边界框数量和其他预测(如对象存在概率)。
训练过程:
数据集:YOLOv2使用COCO数据集进行训练,这是一个广泛用于对象检测的标准数据集,包含了大量带有边界框标注的图像。
学习率和周期:训练过程开始时使用10^-3的学习率,并在第60和90个周期时分别除以10。总共训练160个周期。
损失函数:YOLOv2使用一个复合损失函数,包括边界框坐标的损失、类别概率的损失以及对象存在概率的损失。
特征融合:
通道层:为了使检测网络能够利用更细粒度的特征,作者在网络中添加了一个“通道层”(passthrough layer),它将较高分辨率层的特征传递到较低分辨率层。
结论:
通过这些调整和训练策略,YOLOv2能够有效地进行对象检测,同时保持了实时处理的能力。
这种训练方法使得YOLOv2不仅能够快速准确地检测对象,还能够在多个尺度上运行,提供了速度和准确性之间的灵活权衡。
4. Stronger
联合训练机制:
目标:作者提出了一种方法,使得模型能够同时从检测数据(带有边界框标签的图像)和分类数据(仅带有类别标签的图像)中学习。
学习内容:模型通过检测数据学习如何预测边界框坐标和对象存在性(objectness),同时通过分类数据学习如何识别常见对象的类别。
训练过程:
数据混合:在训练过程中,模型会被展示来自检测数据集和分类数据集的图像混合。
损失函数:当模型看到带有检测标签的图像时,使用完整的YOLOv2损失函数进行反向传播。而当模型看到仅带有分类标签的图像时,只反向传播与分类相关的部分的损失。
面临的挑战:
标签合并:检测数据集通常只包含通用对象和标签,如“狗”或“船”。而分类数据集,如ImageNet,包含更广泛和更深层次的标签,例如ImageNet中有上百种狗的品种标签。
标签结构:为了同时训练这两个数据集,需要一种合理的方式来合并这些标签。传统的分类方法通常使用softmax层来计算所有可能类别的最终概率分布,这假设类别是互斥的。但这种假设在合并不同数据集时会带来问题,因为像“Norfolk terrier”(诺福克梗)和“狗”这样的类别并不是互斥的。
解决方法:
多标签模型:作者提出可以使用多标签模型来合并数据集,这种模型不假设类别之间的互斥性。但这种方法忽略了数据中已知的结构,例如COCO中的所有类别都是互斥的。
(哔站找视频了解一下这部分就好,对当前研究这些方法已经没有什么意义了,不再做详细解释)