YOLO系列目标检测算法目录 - 文章链接
本文总结:
深度学习知识点总结
专栏链接:
https://blog.csdn.net/qq_39707285/article/details/124005405
此专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。
2016.12.25 《YOLO9000: Better, Faster, Stronger》
本文不仅仅介绍了 YOLOv2 ,还提出 YOLO9000 ,一种实时的目标检测系统,可以检测 9000 多个目标类别。
与用于分类等其他任务的数据集相比,目标检测的数据集是有限的。而且标记用于检测的图像要比标记用于分类的图像成本要多得多。所以本文提出了一种新的方法来利用已经拥有的大量分类数据,并将其用于扩展当前检测系统的范围。本文的方法使用 目标分类的层次视图 ,它允许将不同的数据集组合在一起。
还提出了一种 联合训练算法 ,它允许在检测和分类数据上训练目标检测器。该方法利用标注过的检测图像来学习精确定位所有标注和未标注的目标,同时使用分类图像来增加其词汇量和鲁棒性。
首先,使用一些新颖的技术方法改进了基本的YOLO检测系统,得到YOLOv2,并使用一种 多尺度训练方法 ,使得同一个YOLOv2模型可以以不同的尺寸运行,在速度和准确性之间有一个很好的折衷。然后,使用提出的数据集组合方法和联合训练算法,训练得到YOLO9000,使得YOLO9000在没有目标标注数据的情况下也能够精准预测目标,可以实时的运行并检测9000多种目标类别。
与最先进的检测系统相比,YOLO存在多种缺点。与Fast R-CNN相比,YOLO产生了大量的 定位错误。此外,与基于区域提案的方法相比, YOLO的召回率相对较低。因此,本文主要关注提高召回率和定位准确率,同时保持分类准确性。
神经网络算法通常趋向于更大、更深的网络,更好的性能通常取决于训练更大的网络或将多个模型集成在一起。然而,使用YOLOv2,需要一个更精确、依然很 快的检测器,所以改进中没有扩大网络,而是简化了网络,然后使得网络更容易学习。本文汇集了以往的多种想法和最新的技术,以提高YOLO的性能,各种技术汇总至表2中。
对于YOLOv2,首先在ImageNet上对分类网络进行10个epoch的微调,使其达到448×448的全分辨率。这使网络有时间调整卷积核权重,以更好地处理更高分辨率的输入。然后,对检测结果的网络进行微调。这种高分辨率分类网络使得mAP增加了近4%。
本文从YOLO中移除全连接层,并使用anchor预测边界框。首先,去除了一个池化层,以使卷积层的输出具有更高的分辨率,还将网络缩小到416x416而不是448×448。这样做是目的是希望在特征图中有奇数个位置,所以只会有一个中心ceil。目标,特别是大型目标,往往占据图像的中心,因此最好在中心有一个位置来预测这些目标,而不是四个顶点附近的位置。YOLO的卷积层将图像的采样率降低了32倍,因此,通过使用416的输入图像,可以得到13×13的输出特征图。
当转向anchor框时,还将类预测机制与空间位置解耦,取而代之的是预测每个anchor的class和objectness,objectness预测仍然指的是GT和候选框的IOU,并且class预测指的是给定目标的class的条件概率。
使用anchor框,YOLO的精度会略有下降。不使用anchor,YOLO每张图片仅预测98个框;但使用anchor,预测框超过1000个。如果没有anchor,模型得到69.5的mAP,召回率为81%。使用anchor,模型得到69.2 mAP,召回率为88%。尽管mAP降低了,但召回率的增加意味着模型还有更多的可改进空间。
本文中没有选择手动设置先验值,而是在训练集边界框上运行 k-means聚类,自动的寻找合适的先验框。若果使用欧氏距离的标准k-means,较大的框比较小的框产生更多的错误。然而,我们真正想要的是能够获得良好依据分数的先验框,这与box的大小无关。因此,对于距离度量,本文使用:
本文使用多种k值运行k-means,并绘制最接近质心的平均IOU,结果见图2。
最终选择 k=5作为模型复杂性和高召回率之间的一个很好的折衷。簇质心与手工设置的anchor有显著不同。短而宽的box更少,而高而薄的box更多。
将平均IoU与我们聚类策略相近的先验值以及手工挑选的anchor进行了比较,结果如表1。
使用聚类得到的5个anchor框,结果是61.0%,与手工挑选的9个anchor框的60.9%结果差不多。如果使用聚类得到的9个anchor框,会得到更好从效果67.2%。这表明使用k-means生成anchor框可以以更好的表示形式运行模型,并使模型更容易学习。
此公式不受约束,因此任何anchor都可以在图像中的任何点结束,而不管预测框的位置是什么。通过随机初始化,该模型需要很长时间才能稳定下来预测合理的偏移量。
本文没有采用预测偏移量,而是采用YOLO方法, 预测相对于网格单元位置的位置坐标。这将GT限制在0到1之间。使用sigmoid将网络的预测值限制在这个范围内。
网络预测输出要素图中每个单元处有5个边界框。网络为每个边界框预测tx、ty、tw、th和to共5个坐标。假定单元格与图像左上角的偏移量为(cx,cy),并且anchor的宽度和高度为pw、ph,则预测结果对应于:
passthrough层通过将相邻特征叠加到不同的通道中( concat)而不是同一位置相加,将高分辨率特征与低分辨率特征连接起来,这与ResNet中的 identity映射类似。这将26×26×512特征图转换为13×13×2048特征图,该特征图可以与原始特征串联。检测器在这个扩展的特征映射之上使用,因此它可以访问更具细粒度的特征。这使性能略微提高了1%。
训练多种尺度的图片,不是固定输入图像的大小,而是每隔几次迭代就改变网络。网络每10个batches随机选择一个新的图像尺寸大小。由于模型下采样最后减少了32倍,所以从以下32倍的图片尺寸中提取:{320,352,…, 608}。因此,最小选项为320×320,最大选项为608×608。将网络调整到该图片尺寸下并继续训练。
这一制度迫使网络学会在各种输入尺寸上进行良好预测。这意味着同一个网络可以以不同的分辨率预测检测。网络在较小的规模下运行速度更快,因此YOLOv2在速度和准确性之间提供了一个简单的折衷方案。
在低分辨率下,YOLOv2是一种廉价、相当精确的探测器。它以288×288的速度以90多FPS的速度运行,mAP几乎与Fast R-CNN一样好。这使得它非常适合较小的GPU、高帧速率视频或多个视频流。
高分辨率YOLOv2也是一款先进的检测器,在VOC 2007上具有78.6 mAP,同时仍以高于实时速度运行。在VOC2007上其他框架的YOLOv2比较见表3和图4。
在提高准确率的同时希望保持快速的特点,大多数检测应用程序,如机器人或自动驾驶汽车,都依赖于低延迟预测。为了最大限度地提高性能,将YOLOv2设计为从头开始就很快。
Darknet-19
新提出了一个分类模型,用作YOLOv2的基础网络,与VGG模型类似,主要使用3×3卷积核,并且在每个池化步骤后通道数增加一倍。继Network in Network(NIN)研究之后,YOLOv2使用全局平均池化进行预测,并使用1×1卷积核压缩3×3卷积之间的特征图。使用BN来稳定训练,加快收敛速度,并正则化模型。命名为Darknet-19,有19个卷积层和5个最大池化层。完整描述参见Table6。Darknet-19只需要55.8亿次操作即可处理图像,在ImageNet上达到72.9%的top-1精度和91.2%的top-5精度。
Training for classification
使用Darknet框架,在ImageNet-1000数据集上,使用随机梯度下降(起始学习速率为0.1)、多项式速率衰减(4次方)、权重衰减(0.0005)和动量为0:9)对网络进行160个epochs的训练。在训练期间,使用标准的数据增强技巧,包括随机裁剪、旋转、色调、饱和度和曝光偏移等。
如上所述,在对224×224的图像进行初步训练后,将网络调整为更大的448。对于这种微调,继续使用上述参数进行训练,但只训练10个epochs,学习率为10e−3.在这种更高的分辨率下,网络达到了76.5%的top-1精度和93.3%的top-5精度。
本文提出了一种 联合训练分类和检测数据的方法。该方法使用标记为检测的图像来学习检测特定信息,如边界框坐标预测和框分数,以及如何对常见目标进行分类。然后使用只有类别标签的图像来扩展它,就可以扩展检测到的类别数量。
在训练期间,混合了检测和分类数据集的图像。当网络看到标记为要检测的图像时,可以基于完整的YOLOv2损失函数反向传播。当它看到分类图像时,只会反向传播架构中分类特定部分的损失。
本文介绍了YOLOv2和YOLO9000实时目标检测系统。YOLOv2在各种检测数据集上比其他检测算法更快。此外,它可以在各种图像大小下运行,以在速度和准确性之间提供最佳的折衷。
YOLO9000通过联合优化检测和分类训练方法,来检测9000多个目标类别。使用WordTree组合来自不同来源的数据,并使用本文的联合优化技术在ImageNet和COCO上同时进行训练。YOLO9000在缩小检测和分类数据集差距方面迈出了有力的一步。
本文ImageNet的WordTree表达方法为图像分类提供了更丰富、更详细的输出空间。使用分层分类的数据集组合在分类和分割领域中很有用。多尺度训练等训练技术可以为各种视觉任务提供益处。
对于未来的工作,希望使用类似的技术进行弱监督图像分割。还计划使用更强大的匹配策略来改进检测结果,以便在训练期间为分类数据分配弱标签。计算机视觉拥有大量的标记数据。将继续寻找将不同数据源和结构结合在一起的方法,以构建更强大的视觉世界模型。