精华内容
下载资源
问答
  • YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection 【YOLOv2原文+翻译】YOLO9000: Better, Faster, Stronger V3V4正在出稿ing 首先上传原文:百度云盘 提取码: r4pi 因为大多数博主所给...

    最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门:
    【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
    【YOLOv2原文+翻译】YOLO9000: Better, Faster, Stronger
    【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement
    【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection

    首先上传原文:百度云盘
    提取码:
    r4pi
    因为大多数博主所给的都是外链,对于没有梯子的同学来说打开非常痛苦,我直接上传PDF啦

    正文开始

    Abstract(摘要)

    我们为YOLO提供了一系列更新!它包含一堆小设计,可以使系统的性能得到更新;也包含一个新训练的、非常棒的神经网络,虽然比上一版更大一些,但精度也提高了。不用担心,虽然体量大了点,它的速度还是有保障的。在输入320×320的图片后,YOLOv3能在22毫秒内完成处理,并取得28.2mAP的成绩。它的精度和SSD相当,但速度要快上3倍。和旧版数据相比,v3版进步明显。在Titan X环境下,YOLOv3的检测精度为57.9AP5057.9AP50,用时51ms;而RetinaNet的精度只有57.5AP5057.5AP50,但却需要198ms,相当于YOLOv3的3.8倍。

    1. Introduction(介绍)

    你知道有时候你会花一年的时间只是打打电话吗?今年我没有做很多研究。我在Twitter上花了很多时间。也玩了一下GAN。去年我留下了一点点的动力;我设法对YOLO进行了一些改进。但是诚然,没有什么能像这个超级有趣了,只是一小堆(bunch)改变使它变得更好。我也帮助其他人做了一些研究。

    其实,这就是今天带给我们的。我们有一个最终稿截止日期(camera-ready deadline),我们需要引用一些我对YOLO做的随机更新,但我们没有来源。所以开始为技术报告做准备!

    关于技术报告的好处是他们不需要介绍,你们都知道我们为什么来到这里。因此,这篇介绍性文章的结尾将为本文的其余部分提供signpost。首先我们会告诉你YOLOv3的详细内容。然后我们会告诉你我们是怎么做的。我们还会告诉你我们尝试过的一些没有奏效的事情。最后,我们来思考这一切意味着什么。

    2. The Deal

    谈到YOLOv3的更新情况,其实大多数时候我们就是直接把别人的好点子拿来用了。我们还训练了一个全新的、比其他网络更好的分类网络。为了方便你理解,让我们从头开始慢慢介绍。
    在这里插入图片描述

    图1.我们采用了焦距损失论文的这一数字。YOLOv3的运行速度明显快于其他性能相当的检测方法。无论是M40还是Titan X,它们基本上是同一个GPU。

    2.1 Bounding Box Prediction(边界框预测)

    在YOLO9000后,我们的系统开始用维度集群(dimension clusters)固定锚定框(anchor box)来选定边界框。神经网络会为每个边界框预测4个坐标:tx、ty、tw、th。如果目标cell距离图像左上角的边距是(cx, cy),且它对应边界框的宽和高为pw、ph,那么网络的预测值会是:

    在这里插入图片描述
    在训练期间,我们会计算平方误差损失。如果预测坐标的ground truth是tˆ*,那相应的梯度就是ground truth值和预测值的差:tˆ*-t*。通过对上面的公式变形,可以很容易地计算这个ground truth。

    YOLOv3使用逻辑回归预测每个边界框(bounding box)的对象分数。 如果先前的边界框比之前的任何其他边界框重叠ground truth对象,则该值应该为1。如果以前的边界框不是最好的,但是确实将ground truth对象重叠了一定的阈值以上,我们会忽略这个预测,按照[17]进行。我们使用阈值0.5。与[17]不同,我们的系统只为每个ground truth对象分配一个边界框。如果先前的边界框未分配给grounding box对象,则不会对坐标或类别预测造成损失。
    在这里插入图片描述

    图2.带有维度先验和位置预测的边界框。我们预测框的宽度和高度是由集群重心的偏移量决定的。我们使用sigmoid函数来预测框的中心坐标相对于滤波器的位置。这一数字公然自我抄袭自[15]。

    2.2 Class Prediction(类预测)

    每个框使用多标签分类来预测边界框可能包含的类。我们不使用softmax,因为我们发现它对于高性能是非必要的,相反,我们只是使用独立的逻辑分类器。 在训练过程中,我们使用二元交叉熵损失来进行类别预测。

    这个公式有助于我们转向更复杂的领域,如Open Image Dataset。在这个数据集中有许多重叠的标签(如女性和人物)。使用softmax会强加了一个假设,即每个框中只有一个类别,但通常情况并非如此。多标签方法更好地模拟数据。

    2.3 Prediction Across Scales(跨尺度预测)

    YOLOv3预测3种不同尺度的框(boxes)。我们的系统使用类似的概念来提取这些尺度的特征,以形成金字塔网络[6]。从我们的基本特征提取器中,我们添加了几个卷积层。最后一种方法预测了一个三维张量编码的边界框、对象性和类预测。在我们的COCO实验中,我们在每个尺度上预测了3个框,因此张量是N×N×[3*(4 + 1 + 80)],用于4个边界盒偏移量、1个客观预测和80个类预测。

    接下来,我们从之前的两层中取得特征图(feature map),并将其上采样2倍。我们还从网络中的较早版本获取特征图,并使用连接将其与我们的上采样特征合并。这种方法使我们能够从早期特征映射中的上采样特征和更细粒度的信息中获得更有意义的语义信息。然后,我们再添加几个卷积层来处理这个组合的特征图,并最终预测出一个相似的张量,尽管现在它的大小是原来两倍。

    我们再次执行相同的设计来预测最终尺度的方框。因此,我们对第三种尺度的预测将从所有先前的计算中获益,并从早期的网络中获得细粒度的特征。

    我们仍然使用k-means聚类来确定我们的边界框的先验。我们只是选择了9个聚类(clusters)和3个尺度(scales),然后在整个尺度上均匀分割聚类。在COCO数据集上,9个聚类是:(10×13);(16×30);(33×23);(30×61);(62×45); (59×119); (116×90); (156×198); (373×326)。

    2.4 Feature Extractor(特征提取器)

    我们使用新的网络来实现特征提取。我们的新网络是基于YOLOv2,Darknet-19中的网络和那些新颖的残差网络的混合方法。我们的网络使用连续的3×3和1×1卷积层,但现在也有一些shotcut连接,该网络明显更大。它有53个卷积层,所以我们称之为… Darknet-53!
    在这里插入图片描述

    表1. Darknet-53网络结构

    在这里插入图片描述

    YOLOV3网络结构。
    DBL:代码中的Darknetconv2d_BN_Leaky,是yolo_v3的基本组件。就是卷积+BN+Leaky relu。
    resn:n代表数字,有res1,res2, … ,res8等等,表示这个res_block里含有多少个res_unit。
    concat:张量拼接。将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。

    这个新型网络在性能上远超Darknet-19,在效率上同样优于ResNet-101和ResNet-152。下表是在ImageNet上的实验结果:
    在这里插入图片描述

    表2.主干网比较。准确度,数十亿次运算,每秒数十亿次浮点运算,以及各种网络的FPS

    每个网络都使用相同的设置进行训练,输入256×256的图片,并进行单精度测试。运行环境为Titan X。我们得出的结论是Darknet-53在精度上可以与最先进的分类器相媲美,同时它的浮点运算更少,速度也更快。和ResNet-101相比,Darknet-53的速度是前者的1.5倍;而ResNet-152和它性能相似,但用时却是它的2倍以上。

    Darknet-53也可以实现每秒最高的测量浮点运算。这意味着网络结构可以更好地利用GPU,使其预测效率更高,速度更快。这主要是因为ResNets的层数太多,效率不高。

    2.5 Training(训练)

    我们只是输入完整的图像,并没有做其他处理。实验过程中涉及的多尺寸训练、大量数据增强和批量归一化batch normalization等操作均符合标准。模型训练和测试的框架是Darknet神经网络。

    3. How We Do(我们怎么做)

    YOLOv3的表现非常好!请参见表3,就COCO数据集的平均mAP成绩而言,它与SSD变体相当,但速度提高了3倍。尽管如此,它仍然比像RetinaNet这样的模型要差一点。
    在这里插入图片描述

    表3.我真的只是从[9]偷了这些表,他们花了太长时间从头开始做。YOLOv3做得很好。 记住,RetinaNet处理图像的时间大约是3.8倍。YOLOv3比SSD变种要好得多,在AP50指标上可与最先进的型号相媲美。

    如果仔细看这个表,我们可以发现在IOU=.5(即表中的AP50)时,YOLOv3非常强大。它几乎与RetinaNet相当,并且远高于SSD变体。这就证明了它其实是一款非常灵活的检测器,擅长为检测对象生成合适的边界框。然而,随着IOU阈值增加,YOLOv3的性能开始同步下降,这时它预测的边界框就不能做到完美对齐了。

    在过去,YOLO一直致力于对小型对象进行检测。但现在我们可以预见其中的演变趋势,随着新的多尺寸预测功能上线,YOLOv3将具备更高的APS性能。但是它目前在中等尺寸或大尺寸物体上的表现还相对较差,仍需进一步的完善。

    当我们基于AP50指标绘制精度和速度时(参照图5),我们发现YOLOv3与其他检测系统相比具有显著优势。也就是说,它的速度正在越来越快。

    4. Things We Tried That Didn’t Work(我们尝试过却没有成功的工作)

    我们在研究YOLOv3时尝试了很多东西,以下是我们还记得的一些失败案例。

    Anchor box(锚定框)坐标的偏移预测。我们尝试了常规的Anchor box预测方法,比如利用线性激活将坐标x、y的偏移程度预测为边界框宽度或高度的倍数。但我们发现这种做法降低了模型的稳定性,且效果不佳。

    用线性方法预测x,y,而不是使用逻辑方法。我们尝试使用线性激活来直接预测x,y的offset,而不是逻辑激活。这降低了mAP成绩。

    focal loss(焦点损失)。我们尝试使用focal loss,但它使我们的mAP降低了2点。 对于focal loss函数试图解决的问题,YOLOv3从理论上来说已经很强大了,因为它具有单独的对象预测和条件类别预测。因此,对于大多数例子来说,类别预测没有损失?或者其他的东西?我们并不完全确定。

    双IOU阈值和真值分配。在训练期间,Faster RCNN用了两个IOU阈值,如果预测的边框与0.7的ground truth重合,那它是个正面的结果;如果在[0.3—0.7]之间,则忽略;如果和0.3的ground truth重合,那它就是个负面的结果。我们尝试了这种思路,但效果并不好。我们对现在的更新状况很满意,它看起来已经是最佳状态。有些技术可能会产生更好的结果,但我们还需要对它们做一些调整来稳定训练。
    在这里插入图片描述

    图3.再次改编自[9],这一次显示速度/精度权衡在地图上0.5 IOU的度量。你可以说YOLOv3很好,因为它很高而且在左边很远。哦,我忘了,我们还修复了YOLOv2中的一个数据加载错误,它是通过类似于2 mAP的方式来帮助修复的。偷偷把这个弄进来,免得破坏布局。

    5. What This All Means(这一切意味着什么)

    YOLOv3是一个很好的检测器,它速度快,精度又高。虽然基于0.3和0.95的新指标,它在COCO上的成绩不如人意,但对于旧的检测指标0.5 IOU,它还是非常不错的。

    为什么我们要改变指标呢?最初的COCO论文里只有这样一句含糊其词的话:一旦评估完成,就会生成评估指标结果。Russakovsky等人曾经有一份报告,说人类很难区分0.3与0.5的IOU:“训练人们用肉眼区别IOU值为0.3的边界框和0.5的边界框是一件非常困难的事”。如果人类都难以区分这种差异,那这个指标有多重要?

    但也许更好的一个问题是:现在我们有了这些检测器,我们能用它们来干嘛?很多从事这方面研究的人都受雇于Google和Facebook,我想至少我们知道如果这项技术发展得完善,那他们绝对不会把它用来收集你的个人信息然后卖给……等等,你把事实说出来了?噢!

    那么其他巨资资助计算机视觉研究的人还有军方,他们从来没有做过任何可怕的事情,比如用新技术杀死很多人……呸呸呸

    我有很多希望!我希望大多数人会把计算机视觉技术用于快乐的、幸福的事情上,比如计算国家公园里斑马的数量,或者追踪小区附近到底有多少猫。但是计算机视觉技术的应用已经步入歧途了,作为研究人员,我们有责任思考自己的工作可能带给社会的危害,并考虑怎么减轻这种危害。我们非常珍惜这个世界。

    最后,不要在Twitter上@我。(我已经不玩Twitter了)

    在这里插入图片描述

    图4.零轴图表可能在智力上更诚实……我们仍然可以通过改变变量来解决问题

    在这里插入图片描述

    图5.根据这两幅图像的映射,这两个假设的探测器是完美的。他们都是完美的。完全平等。

    展开全文
  • YOLOv3原文翻译

    2020-02-14 17:41:30
    YOLOv3: An Incremental Improvement 作者:约瑟夫 雷蒙,阿里 法尔哈迪 单位:华盛顿大学 摘要 我们提供了一些针对YOLov3的改进!我们做了一些小的设计上的改变来使它更好。我们还培训了这个非常棒的新网络。它比...

    YOLOv3: An Incremental Improvement

    作者:约瑟夫 雷蒙,阿里 法尔哈迪
    单位:华盛顿大学

    摘要

    我们提供了一些针对YOLov3的改进!我们做了一些小的设计上的改变来使它更好。我们还培训了这个非常棒的新网络。它比上次大了一点,但更准确。不过还是很快的,别担心。在320×320 YOLOv3运行在22毫秒在28.2地图,准确的SSD,但三倍的速度。当我们看旧的。5 IOU地图的时候,检测指标YOLOv3是相当不错的。它在Titan X上实现57.9 AP50in 51 ms,而在RetinaNet上实现57.5 AP50in 198 ms,性能类似,但快3.8倍。 一如既往,所有的代码公布在https://pjreddie.com/yolo/上。

    展开全文
  • 最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门: 【YOLOv1原文+翻译】You ...【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement 【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detec

    最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门:
    【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
    【YOLOv2原文+翻译】YOLO9000: Better, Faster, Stronger
    【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement
    【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection

    首先上传原文:百度云盘
    提取码:
    id14
    因为大多数博主所给的都是外链,对于没有梯子的同学来说打开非常痛苦,我直接上传PDF啦

    正文开始

    Abstract(摘要)

    目前有很多可以提高CNN准确性的算法。这些算法的组合在庞大数据集上进行测试、对实验结果进行理论验证都是非常必要的。有些算法只在特定的模型上有效果,并且只对特定的问题有效,或者只对小规模的数据集有效;然而有些算法,比如batch-normalization和residual-connections,对大多数的模型、任务和数据集都适用。我们认为这样通用的算法包括:Weighted-Residual-Connections(加权残差连接、WRC), Cross-Stage-Partial-connections(跨阶段部分连接、CSP), Cross mini-Batch Normalization(跨小批量归一化、CmBN), Self-adversarial-training(自我对抗训练、SAT)以及Mish-activation(误激活)。我们使用了新的算法:WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, Dropblock regularization 和CIoU loss以及它们的组合,获得了最优的效果:在MS COCO数据集上的AP值为43.5%(65.7% AP50),在Tesla V100上的实时推理速度为65FPS。源代码位于:https://github.com/AlexeyAB/darknet

    1. Introduction(介绍)

    大部分基于CNN的目标检测器主要只适用于推荐系统。举例来说,通过城市相机寻找免费停车位置的系统使用着慢速但是高精度的模型,然而汽车碰撞警告却使用着快速但是低精度的模型。提高实时目标检测器的精度不仅能够应用在推荐系统上,而且还能用于独立的流程管理以及降低人员数量上。传统图形处理单元 (GPU) 上的实时目标检测器操作允许以实惠的价格大规模使用。但目前大部分高精度的神经网络不仅不能实时运行,并且需要较大的mini-batch-size在多个GPUs上进行训练。我们构建了仅在一块GPU上就可以实时运行的CNN解决了这个问题,并且它只需要在一块GPU上进行训练。

    在这里插入图片描述

    图1:对拟建的YOLOv4和其他最先进的目标检测器进行比较。YOLOv4 的速度比EfficientDet快两倍,却具有同等的性能。YOLOv3 的 AP 和 FPS 分别提高了 10% 和 12%。

    我们工作的主要目标就是设计一个仅在单个计算系统(比如单个GPU)上就可以快速运行的目标检测器并且对并行计算进行优化,并非减低计算量理论指标(BFLOP)。我们希望这个检测器能够轻松的训练和使用。具体来说就是任何一个人仅仅使用一个GPU进行训练和测试就可以得到实时的,高精度的以及令人信服的目标检测结果,正如在图1中所示的YOLOv4的结果。我们的贡献总结如下:
    (1)我们提出了一个高效且强大的目标检测模型。任何人可以使用一个1080Ti或者2080Ti的GPU就可以训练出一个快速且高精度的目标检测器。

    (2)我们在检测器训练的过程中,测试验证了目标检测中最高水准的Bag-of-Freebies(免费包)和Bat-of-Specials(特殊包)检测方法。

    (3)我们改进了最高水准的算法,使得它们更加高效并且适合于在单个GPU上进行训练,比如CBN, PAN, SAM等。
    在这里插入图片描述

    图2:目标检测器

    2. Related work( 相关工作)

    2.1. Object detection model (目标检测模型)

    检测器通常由两部分组成:backbone和head。前者是在ImageNet上进行预训练的骨干网,后者是用来预测类别信息和目标物体的边界框的头部。对于在GPU平台上运行的检测器,它们的backbone可能是VGG, ResNet, ResNetXt,或者是DenseNet。在CPU平台上运行的检测器,它们的backbone可能是SqueezeNet,MobileNet或者是ShuffleNet。对于head部分,通常分为两类:one-stage和two-stage的目标检测器。Two-stage的目标检测器的代表是R-CNN系列,包括:fast R-CNN, faster R-CNN,R-FCN和Libra R-CNN。还有基于anchor-free的Two-stage的目标检测器,比如RepPoints。One-stage目标检测器的代表模型是YOLO, SSD和RetinaNet。在最近几年,出现了基于anchor-free的one-stage的算法,比如CenterNet, CornerNet, FCOS等等。在最近几年,目标检测器在backbone和head之间会插入一些网络层,这些网络层通常用来收集不同的特征图。我们将其称之为目标检测器的neck。通常,一个neck由多个bottom-up路径和top-down路径组成。使用这种机制的网络包括Feature Pyramid Network(特征金字塔网络、FPN),Path Aggregation Network(路径聚合网络、PAN),BiFPN和NAS-FPN。
    在这里插入图片描述

    除了上述模型外,一些研究人员还强调直接构建一个新的主干(DetNet [43],DetNAS [7])或新的完整模型(SpineNet [12],HitDetector [20])用于物体检测。

    综上所述,一个普通的目标检测器由下面四个部分组成:
    在这里插入图片描述

    2.2. Bag of freebies(免费包)

    通常来讲,传统的目标检测器都是进行离线训练的(训练的时候对GPU数量和规格不限制)。因此,研究者总是喜欢扬长避短,开发最好的训练手段,因此可以在不增加推理成本的情况下,获得最好的检测精度。我们将只改变训练策略或者只增加训练成本的方法称之为“bag of freebies"。在目标检测中经常使用并且满足bag of freebies的定义的算法称是①数据增广(data augmentation)。数据增广的目的是增加输入图片的可变性,因此目标检测模型对从不同场景下获取的图片有着更高的鲁棒性。例如,光度失真(photometric distoitions)和几何失真(geometric distortions)是用来数据增强方法的两个常用的手段,它们肯定有利于目标检测任务。在处理photometric distortion中,我们会调整图像的亮度,对比度,色调,饱和度以及噪声。对于geometric distortion,我们会随机增加尺度变化,裁剪,翻转以及旋转。

    上面提及的数据增广的手段都是像素级别的调整,它保留了调整区域的所有原始像素信息。此外,一些研究者将数据增广的重点放在了模拟目标物体遮挡问题上。他们在图像分类和目标检测上已经取得了不错的结果。具体来说,随机擦除(random erase)和CutOut可以随机选择图像上的矩形区域,然后进行随机融合或者使用零像素值来进行融合。对于hide-and-seek(隐藏和查找)和grid mask(网络掩码),他们随机地或者均匀地在一幅图像中选择多个矩形区域,并且使用零来代替矩形区域中的像素值。如果将相似的概念用来特征图中,出现了DropOut, DropConnect和DropBlock方法。此外,一些研究者提出一起使用多张图像进行数据增强的方法。举例来说,MixUp使用两张图片进行相乘并且使用不同的系数比进行叠加,然后使用它们的叠加比来调整标签。对于CutMix,它将裁剪的图片覆盖到其他图片的矩形区域,然后根据混合区域的大小调整标签。除了上面提及的方法,style transfer GAN也用来数据增广,这样可以有效减少CNN学习到的纹理偏差。

    一些和上面所提及的不同的方法用来解决数据集中的语义分布可能存在偏差的问题。处理语义分布偏差的问题时,一个非常重要的问题就是在不同类别之间存在②数据不平衡,这个问题在two-stage目标检测器中,通常使用hard negative example mining(硬负例挖掘)或者online hard example mining(联机硬例挖掘)来解决。但是example mining 方法并不适用于one-stage的目标检测器,因为这种类型的检测器属于dense prediction(密集预测)架构。因此focal loss算法用来解决不同类别之间数据不均衡的问题。③另外一个非常重要的问题就是使用one-hot很难描述不同类别之间关联度的关系。Label smothing(标签平滑)提出在训练的时候,将hard label转换成soft label,这个方法可以使得模型更加的鲁棒性。为了得到一个最好的soft label, Islam等人引入了知识蒸馏的概念来设计标签细化网络。

    最后一个bag of freebies是④设计边界框回归的目标函数。传统的目标检测器通常使用均方根误差(MSE)在Bbox(边界框)的中心坐标以及宽高上进行直接的回归预测,即,在这里插入图片描述
    或者左上角和右下角的两个点,即在这里插入图片描述。对于anchor-based(基于锚点的)方法,要去预测相应的offset,比如在这里插入图片描述在这里插入图片描述。但是,直接预测Bbox每个点的坐标值是将这些点作为独立的变量,但是实际上并没有将目标物体当成一个整体进行预测。为了更好的解决这个问题,一些研究者最近提出了IoU损失函数,它能够将Bbox区域和ground truth的BBox区域的作为整体进行考虑。IoU损失函数需要计算BBox四个坐标点以及ground truth的IoU。因为IoU具有尺度不变性,它可以解决传统算法比如l1,l2损失{x,y,w,h}计算存在的问题,这个损失函数会随着尺度的变化而发生变化。最近,一些研究者继续提高IoU损失函数的性能。举例来说,除了覆盖范围,GIoU还包括目标物体的形状和方向。他们建议找到最小区域BBox,可以同时覆盖预测的BBox和ground truth的BBox,然后使用这个BBox作为分母去代替原来Iou损失函数中的分母。至于DIoU损失函数额外考虑了目标物体的中心距离,CIoU另一方面同时将覆盖区域,中心点之间的距离,纵横比考虑在内。CIoU在BBox回归问题上可以获得最好的收敛速度和准确率。
    在这里插入图片描述

    2.3. Bag of specials(特殊包)

    对于那些插件模块和后处理方法,它们仅仅稍微的增加了推理成本,但是可以极大地提高目标检测的准确度,我们将其称之为“bag of specials”。一般来说,这些插件模块用来提高一个模型中特定的属性,比如增加感受野,引入注意力机制或者提高特征整合的能力等等;后处理方法是用来抑制模型预测结果的一种方法。

    可以用来提升感受野的常规的方法是SPP, ASPP和RFB。SPP模型来源于空间金字塔匹配(SPM),而且SPMs原始的方法将特征图划分成很多d* d个相等的块,其中d可以是{1,2,3,…},因此可以形成空间金字塔,然后提取bag-of-word(词袋)的特征。SPP将SPM应用在CNN中,然后使用max-pooling代替bag-of-word运算。因为SPP输出的是一维的特征向量,因此它不能应用在全卷积网络(FCN)中。在YOLOv3中,Redmon和Farhadi改进了SPP模块,将max-pooling输出和内核尺寸k* k连接起来,其中k={1,5,8,13},stride=1。基于这个设计,一个相对较大的k* k的max-pooling有效地提高了backbone特征的感受野。在添加了改进后的SPP模型之后,YOLO-v3-608在COCO数据集上,虽然增加了0.5%的额外计算量,但是提高了2.7%的AP50。ASPP模块和改进的SPP模块的区别主要在:原始的k* k过滤器尺寸,从stride=1到3* 3内核尺寸的max-pooling,在stride=1的碰撞卷积运算中膨胀比为k。RFB模块使用一些k *k的内核,膨胀比为k,步长为1的碰撞卷积,它比ASPP获得了更全面的空间覆盖率。RFB在MS COCO数据集上仅仅增加了7%的额外推理时间,但是得到了5.7%的AP50提升。

    目标检测上经常使用的注意力模块主要分成channel-wise注意力模块和point-wise注意力模块,这两个注意力模块主要的代表分别是Squeeze-and-Excitation(SE)和Spatial Attention Module(SAM)。尽管SE模块在ImageNet图像分类工作上仅仅增加了2%的计算量而提高了1%的top-1准确率,但是在GPU上提高了10%的推理时间,因此SE模块更适合在移动设备上使用。但是对于SAM模块来说,在ImageNet图像分类任务中,它仅仅需要0.1%的额外计算量却能够提升ResNet-SE 0.5%的top-1准确率。最重要的是,它根本不影响在GPU上的推理速度。

    关于特征融合,早期的是使用skip connection或者是hyper-column将低级物理特征集成到高级的语义特征。因为多尺度预测方法比如FPN逐渐受到追捧,因此提出了很多将不同特征金字塔融合的轻量级模型。这类别的模型包括SFAM, ASFF和BiFPN。SFAM的主要思想是在多尺度连接特征图上使用channel-wise级别的调整。对于ASFF,它使用softmax作为point-wise级别的调整,然后将不同尺度的特征图加在一起。在BiFPN中,提出使用多输入权重残差连接去执行scale-wise级别的调整,然后将不同尺度的特征图加在一起。

    在深度学习的研究中,一些人重点关心去寻找一个优秀的激活函数。一个优秀的激活函数可以让梯度更有效的进行传播,与此同时它不会增加额外的计算量。在2010年,Nair和Hinton提出了ReLU激活函数充分地解决了梯度消失的问题,这个问题在传统的tanh和sigmoid激活函数中会经常遇到。随后,LReLU,PReLU,ReLU6,Scaled Exponential Linear Unit(SELU),Swish,hard-Swish和Mish等等相继提出,它们也用来解决梯度消失的问题。LReLU和PReLU主要用来解决当输出小于零的时候,ReLU的梯度为零的问题。ReLU6和hard-Swish主要为量化网络而设计。对于神经网络的自归一化,提出SELU激活函数去实现这个目的。需要注意的是Swish和Mish都是连续可导的激活函数。

    在基于深度学习的目标检测中使用的后处理方法是NMS,它可以用来过滤那些预测统一物体、但是效果不好的BBoxes,然后仅仅保留较好的BBoxes。优化NMS和优化目标方程的方法异曲同工。NMS提出的最初的方法并没有将上下文信息考虑在内,因此Girshick在R-CNN中添加了分类置信度作为参考,然后根据置信度得分的顺序,由高到低执行greedy NMS(贪婪非极大抑制)。对于soft NMS来说,它考虑了这样一个问题:在greedy NMS使用IoU的时候,目标遮挡可能会造成置信度得分的退化。在soft NMS基础上,DIoU NMS将重心坐标的距离信息添加到Bbox的筛选处理中了。值得一提的是,上面提到的后处理方法中都不直接引用捕获的图像特征,后续的anchor-free方法开发中不再需要后处理。

    在这里插入图片描述

    3. Methodology(方法)

    我们工作基本的目标是在生产系统和优化并行预算中加快神经网络的速度,而非降低计算量理论指标(BFLOP)。我们提供了两个实时神经网络的选择:

    (1)对于GPU, 我们在卷积层中使用少量的组(1-8): CSPResNeXt50 / CSPDarknet53

    (2)对于VPU, 我们使用分组卷积,但是我们不使用Squeeze-and-excitement(SE)模块,具体包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3

    3.1. Selection of architecture(网络结构的选择)

    我们的目标是寻找输入网络的分辨率、卷积层的个数、参数的数量(滤波器大小2 + 滤波器 + 通道/组)以及输出层(filters)的个数之间的最优的平衡。举例来说,大量的研究表明:在ILSVRC2012(ImageNet)的目标检测上,CSPResNext50比CSPDarket53的效果更好,但是在MS COCO的目标检测中,两个的效果恰好相反。

    下一个目标就是选择额外的模块去增加感受野以及为不同检测器不同的backbone选择参数聚合的最佳方法。比如:FPN, PAN, ASFF, BiFPN。

    在分类任务上最优的模型在检测上未必就是最优的。和分类任务相比,检测器需要以下要求:

    (1)更高的输入尺寸(分辨率)- 为了检测多个小物体

    (2)更多网络层 - 为了获得更大的感受野去覆盖不断增大的输入尺寸

    (3)更多的参数 - 提高模型的能力从而能够在一张图片上检测到不同尺寸的多个物体。
    在这里插入图片描述

    表1:用于图像分类的神经网络参数。

    假设说,我们可以认为具有更大感受野(有大量的3* 3的卷积层)和具有大量参数的模型应当作为检测器的backbone。表1展示了CSPResNetXt50, CSPDarkent53以及EfficientNet B3的相关信息。CSPResNetXt50仅仅只有16个3* 3的卷积层,一个425* 425的感受野和20.6M参数,然而CSPDarknet53有29个3* 3的卷积层,725* 725的感受野和27.6M参数。从理论证明和大量的实验表明在这两个模型中,CSPDarknet53是作为检测器的backbone最优的选择

    不同尺寸的感受野的影响总结如下:

    (1)等于目标物体的大小时:能够看到整个物体

    (2)等于网络的尺寸:能够看到目标物体周围的上下文信息

    (3)大于网络的尺寸:增加图像点和最终激活之间连接的数量

    我们将SPP模块添加到CSPDarknet53中,因为它极大提高了感受野,能够分离出最重要的上下文特征而且没有降低网络运行的速度。我们使用PANet作为不同检测器不同backbone训练阶段聚集参数的方法,而非YOLOv3的FPN模块。

    最后,我们选择CSPDarknet53作为backbone, SPP作为附加模块,PANet 作为neck,使用YOLOv3(基于锚的)head作为YOLOv4架构的结构

    未来,我们计划扩展检测器的Bag of freebies(BoF),它们在理论上可以解决某些问题并且能够提高检测器的精度,后续会以实验的形式探究每个算法对检测器的影响。

    我们没有使用跨 GPU 批量归一化(Cross-GPU Batch Normalization)(CGBN 或者 SyncBN) 或者昂贵的定制设备。这能够使得任何人在一个GPU上就可以重现我们最先进的结果,比如在GTX 1080Ti或者RTX 2080Ti。

    3.2. Selection of BoF and BoS(BoF 和 BoS的选择)

    为了改进目标检测的训练,CNN通常使用以下技巧:
    Activations激活: ReLU, leaky-ReLU, parametric-ReLU,ReLU6, SELU, Swish, or Mish

    Bounding box regression loss边界框回归损失: MSE, IoU, GIoU,CIoU, DIoU

    Data augmentation数据增广: CutOut, MixUp, CutMix

    Regularization method正则化方法: DropOut, DropPath [36],Spatial DropOut [79], or DropBlock

    Normalization of the network activations by their mean and variance通过均值和方差对网络激活进行归一化: Batch Normalization (BN) [32], Cross-GPU Batch Normalization (CGBN or SyncBN) [93], Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN) [89]

    Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)
    跳过连接:剩余连接、加权剩余连接、多输入加权剩余连接或交叉阶段部分连接 (CSP)

    对于训练激活函数,因为PReLU和SELU难以训练,并且ReLU6是专门为量化网络设计的,我们因此不考虑这这三个激活函数。在正则化方法中,提出DropBlok的学者将其算法和其他算法进行了比较,然后DropBolck效果更好。因此我们毫不犹豫的选择DropBlock作为我们的正则化方法。在归一化方法的选择中,因为我们关注在一块GPU上的训练策略,因此我们不考虑syncBN。

    3.3. Additional improvements( 额外的改进)

    为了让检测器更适合在单个GPU上进行训练,我们做了以下额外的设计和改进:

    (1)我们提出了数据增广的新方法:Mosaic和Self-Adversarial Training(SAT,自对抗训练)

    (2)在应用遗传算法时选择最优的超参数

    (3)我们改进了一些现有的算法,让我们的设计更适合高效的训练和检测 - 改进SAM, 改进PAN以及Cross mini-Batch Normalization(CmBN)
    在这里插入图片描述

    图3:Mosaic表示一种新的数据增广方法。

    Mosaic是一种新型的数据增广的方法,它混合了四张训练图片。因此有四种不同的上下文进行融合,然而CutMix仅仅将两张图片进行融合。此外,batch normalization在每个网络层中计算四张不同图片的激活统计。这极大减少了一个大的mini-batch尺寸的需求。

    自适应对抗训练(SAT)也表示了一个新的数据增广的技巧,它在前后两阶段上进行操作。在第一阶段,神经网络代替原始的图片而非网络的权重。用这种方式,神经网络自己进行对抗训练,代替原始的图片去创建图片中此处没有期望物体的描述。在第二阶段,神经网络使用常规的方法进行训练,在修改之后的图片上进检测物体。
    在这里插入图片描述

    图4:Cross mini-Batch Normalization.(跨小批量归一化)

    正如图4中显示,CmBN(Cross mini-Batch Normalization)代表CBN改进的版本。它只收集了一个批次中的mini-batches之间的统计数据。

    我们将SAM的spatial-wise注意力变成了point-wise注意力机制,然后将PAN中的shortcut连接变成了concatenation连接,如图5和图6。
    在这里插入图片描述

    图5:修改的SAM

    在这里插入图片描述

    图6:修改后的PAN。

    3.4. YOLOv4

    在这个部分,我们会详细介绍YOLOv4的细节:

    YOLOv4 consists of:
    • Backbone: CSPDarknet53 [81]
    • Neck: SPP [25], PAN [49]
    • Head: YOLOv3 [63]

    YOLO v4 uses:
    • Bag of Freebies (BoF) for backbone: CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing
    • Bag of Specials (BoS) for backbone: Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)
    • Bag of Freebies (BoF) for detector: CIoU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler [52], Optimal hyperparameters, Random training shapes
    • Bag of Specials (BoS) for detector: Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS
    在这里插入图片描述

    4. Experiments(实验)

    我们测试了不同训练提升技巧在ImageNet(ILSVRC2012 val)数据集上的分类器准确性的影响,然后又验证了在MS COCO(test-dev 2017)数据集上的检测器的准确性。

    4.1. Experimental setup(实验参数配置)

    在ImageNet图像分类实验中,默认的超参数如下:训练步长为8,000,000;batch size和mini-batch size分别为128和32;polynominal decay learning rate scheduling strategy(多标称衰减学习速率调度策略)初始的学习率为0.1;warm-up步长为1000;momentum和weight decay分别设置为0.9和0.005。所有的BoS实验使用相同的、默认的超参数,在BoF实验中,我们增加了一半的训练步长。在BoF实验中,我们验证了MixUp, CutMix, Mosaic, Bluring数据增广和标签平滑正则化(label smoothing regularization,LSR)方法。在BoS实验中,我们比较了LReLU,Swish和Mish激活函数的影响。所有的实验都在1080Ti或者2080Ti GPU上进行训练。

    在MS COCO目标检测实验中,默认的超参数如下:训练步长为500,500;采用步长衰减学习速率调度策略( step decay learning rate scheduling strategy),初始学习速率为0.01,在400000步和450000步分别乘以因子0.1;动量momentum和权重weight衰减 decay分别设置为0.9和0.0005。所有的架构在一块GPU进行多尺度训练,它的batch size为64,然而它的mini-batch为8还是4取决于网络架构和GPU的内存限制。除了对寻找最优的超参数使用遗传算法之外,其他所有的实验都使用默认的设置。遗传算法利用YOLOV3-SPP进行带GIoU损失的训练,搜索300个epochs的min-val 5k 集(sets)。我们采用搜索的学习率为0.00261,momentum为0.949,IoU阈值指定ground truth 0.213,损失标归一化为0.07进行遗传算法实验。

    我们还验证了大量的BoF算法,包括网格敏感度消除(grid sensitivity elimination),mosaic数据增强,IoU阈值化,遗传算法,类标签平滑(class label smoothing), 跨小批量归一化(cross mini-batch normalization),自对抗训练(self-adversarial training),余弦退火调度(cosine anneling scheduler), 动态小批量尺寸(dynamic mini-batch size), DropBlock, 优化锚(Optimized Anchors), 不同的IoU损失函数。我们也在不同BoS算法上进行了实验,包括Mish,SPP,SAM,RFB,BiFBN以及Gaussiian YOLO。所有的实验我们仅仅使用一个GPU进行训练,所以不使用syncBN等优化多个GPU的技术用。

    4.2. Influence of different features on Classifier training(不同算法在分类器训练上的影响)

    首先,我们研究了不同算法在分类器训练上的影响;具体来说,类标签平滑(Class label smoothing)的影响,不同数据增广技巧,双边模糊(bilateral blurring),混合(MixUp),切割混合( CutMix)和Mosaic的影响在图7中显示,以及不同激活函数的影响,比如Leaky-ReLU(默认的),Swish和Mish。
    在这里插入图片描述

    图7:各种数据增强方法

    在我们的实验中(如同表2中所示),通过引入一些算法,分类器的准确率得到了提升,这些算法包括:CutMix和Mosaic数据增广,Class label smoothing和Mish激活函数。结果是,我们的用于分类器训练的BoF-backbone(Bag of Freebies)包括:Cutmix 和Mosaic数据增广算法以及Class labelsmoothing。正如表2和表3所示,我们将Mish激活函数作为补充的选项。
    在这里插入图片描述

    表2:BoF和Mish对CSPResNeXt-50分类器精度的影响

    在这里插入图片描述

    表3:BoF和Mish对CSPDarknet-53分类器精度的影响

    4.3. Influence of different features on Detector training(不同算法在检测器训练上的影响)

    进一步的研究关注不同Bag-of-Freebies(BoF-detector)在检测器训练准确度的影响,如表4所示。通过研究能够提高检测器准确度的算法,我们极大地扩展了BoF的算法选项,而且并没有影响FPS:
    在这里插入图片描述

    表4:BoF消融研究。(512 x512 CSPResNeXt50-PANet-SPP)

    • S:消除网络的敏感度 方程bx = σ(tx)+cx; by = σ(ty)+cy,自重cx和cy通常是整数,在YOLOv3中用于评估目标物体的坐标,因此,当bx的值非常接近cx或者cx+1的时候,tx的绝对值会非常大。我们通过给sigmoid函数乘以一个大于1.0的因子来解决这个问题,因此,这样就消除了网络对不可检测物体的影响。
    • M:Mosaic数据增广 - 在训练过程中,使用四张图片而非一张进行增广处理
    • IT:IoU阈值 - 对一个ground truth的IoU使用多个anchors,(truth, anchor) > IoU 阈值
    • GA:遗传算法 - 在前10%的训练时间内使用遗传算法选择最优的超参数
    • LS:Class label smoothing - 使用类标签平滑进行sigmoid激活
    • CBN:CmBN - 在整个批次中通过使用Cross mini-Batch Normalization收集统计数据,而非在单独的mini-batch中收集统计数据。
    • CA:Cosine annealing scheduler(余弦退火调度器) - 在sinusoid(正弦)训练中改变学习率
    • DM:动态小批量尺寸 - 使用随机训练形状,在低分辨率训练期间自动增加小批量
    • OA: 优化Anchors - 使用用于512x512网络分辨率训练的anchors优化传感器
    • GIoU, CIoU, DIoU, MSE - 为边界框回归使用不同的损失函数。

    下一步的研究将关心在检测器训练准确度上,不同Bag-of-Specials(BoS-detector)的影响,包括PAN, RFB, SAM, Gaussian YOLO(G),以及ASFF,如表5所示。在我们的实验中,当使用SPP, PAN和SAM的时候,检测器得到了最好的性能。
    在这里插入图片描述

    表5:BoS消融研究(512X512)

    4.4. Influence of different backbones and pretrained weightings on Detector training(不同backbones和预训练权重在检测器训练中的影响)

    下一步我们研究不同backbones模型在检测器准确率上的影响,如表6所示。我们注意到拥有最佳分类准确率的模型,检测准确率未必是最佳的。

    首先,尽管使用不同算法训练得到的CSPResNeXt-50模型的分类精度比CSPDarknet53模型的要高,但是CSPDarknet53模型的检测精度更高。

    其次,CSPResNeXt-50分类器训练使用BoF和Mish提高了它的分类准确率,但进一步应用这些预训练的权重进行检测训练会降低检测精度。然而,使用分类器预训练权重进行训练的CSPDarknet53分类器,使用BoF和Mish提高了分类器和检测器的准确率。这表示CSPDarknet53比CSPResNeXt-50更适合作为检测器。

    我们观察到,通过各种改进,CSPDarknet53模型显示出了更大的能力来提高检测器的精度。
    在这里插入图片描述

    表6:使用不同的分类器预训练权重进行检测器训练(模型的其他所有训练参数都是类似的)。

    4.5. Influence of different mini-batch size on Detector training(不同的小批量尺寸对检测器训练的影响)

    最后,我们分析了不同mini-batch尺寸的训练的模型的结果,并且结果在表7中显示出来。从表7中我们发现在添加了BoF和BoS训练策略之后,mini-batch尺寸几乎对检测的性能没有影响。结果表明,引入了BoF和BoS之后,就不需要使用昂贵的GPU进行训练。换句话说,任何人只要有一个GPU就可以训练一个优秀的检测器。
    在这里插入图片描述

    表7:使用不同的mini-batch尺寸进行检测器训练

    5. Results(结果)

    图8显示了与其他最先进的目标检测的比较结果。本文的YOLOv4坐落在帕累托最优曲线上,在速度和精度方面都优于目前最快和最精确的检测器。

    在这里插入图片描述

    图8:不同目标检测器速度和精度的比较。(一些文章指出他们的检测器的FPS只适用于单GPU: Maxwell/Pascal/Volta)

    由于不同的方法使用不同体系结构的GPU进行推理时间验证,本文在Maxwell、Pascal和Volta体系结构的常用GPU上操作YOLOv4,并将它们与其他最新方法进行比较。

    表8列出了使用Maxwell GPU的帧速率比较结果,它可以是GTXTitanX(Maxwell)或Tesla M40 GPU。
    在这里插入图片描述

    表8:在MS COCO数据集(testdev 2017)上不同的目标检测器的速度和准确性的比较。(此处突出显示FPS 30或更高的实时检测器。我们将结果与未使用tensorRT的batch=1进行了比较。)

    表9列出了使用Pascal GPU的帧速率比较结果,可以是Titan X(Pascal)、Titan Xp、GTX 1080 Ti或Tesla P100 GPU。
    在这里插入图片描述

    表9:MS COCO数据集(test-dev 2017)上不同的目标检测器的速度和准确性比较。(此处突出显示FPS 30或更高的实时检测器。我们将结果与未使用tensorRT的batch=1进行了比较。)

    至于表10,它列出了使用Volta GPU的帧速率比较结果,可以是Titan Volta或Tesla V100 GPU。
    在这里插入图片描述

    表10:MS COCO数据集(test-dev 2017)上不同的目标检测器的速度和准确性比较。(此处突出显示FPS 30或更高的实时检测器。我们将结果与未使用tensorRT的batch=1进行了比较。)

    6. Conclusions(结论)

    我们提出了一个最先进的目标检测器,它比所有现存可选择的检测器都要快而且更准确。这个检测器可以仅在一块8-16GB的GPU上进行训练,这使得它的广泛应用成为可能。One-stage的anchor-based的检测器的最初概念证明了它的可行性。我们已经验证了大量的特征,并选择使用这些特征来提高分类和检测的精度。这些算法可以作为未来研究和开发的最佳实践。

    7. Acknowledgements(致谢)

    作者非常感谢Glenn Jocher提出的 Mosaic数据增广、利用遗传算法选择超参数以及解决网格敏感性问题的思路:https://github.com/ultralytics /yolov3。

    展开全文
  • 最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门: 【YOLOv1原文+翻译】You ...【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement 【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Dete

    最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门:
    【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
    【YOLOv2原文+翻译】YOLO9000: Better, Faster, Stronger
    【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement
    【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection

    首先上传原文:百度云盘
    提取码:
    i9b2
    因为大多数博主所给的都是外链,对于没有梯子的同学来说打开非常痛苦,我直接上传PDF啦

    正文开始

    Abstract(摘要)

    我们将介绍一个先进的,实时目标检测的网络YOLO9000,它可以检测超过9000个类别的物体。首先,我们针对YOLO检测网络提出了许多从以前的工作中得出的,新颖的改进。改进后的网络称为YOLOv2,在标准的检测任务中,比如PASCAL VOC和COCO,它也是一个先进的目标检测网络。使用新颖的多尺度训练方法,相同的YOLOv2模型可以在不同的图像大小下运行,并在速度和准确度之间提供简单的权衡。在VOC 2007数据集上,67FPS时,YOLOv2实现了76.8 mAP。在40 FPS时,YOLOv2获得78.6 mAP,优于最先进的方法,如使用ResNet和SSD的Faster R-CNN,同时运行速度明显更快。最后,我们提出了一个联合训练目标检测和分类任务的方法。使用这个方法,我们在COCO检测数据集和ImageNet分类数据集上同时训练YOLO9000网络。我们的联合训练使得YOLO9000可以预测没有标签的检测数据的对象类别。我们在ImageNet的检测任务中验证了网络的有效性。YOLO9000在ImageNet检测验证集上获得了19.7 mAP,尽管在200个类中只有44个类具有检测数据。在COCO不包含的156个类别中,YOLO9000获得了16.0 mAP。 但YOLO可以检测到超过200个类别; 它预测了超过9000种不同对象类别的检测。并且它仍然可以实时运行。

    1. Introduction(介绍)

    通用目标检测应该是快速的、准确的并且能够识别各种各样的物体。由于神经网络的发展,检测网络已经变得越来越快速和准确。然而,大多数检测网络仍然受限于很少的物体范围内。

    与用于分类和标记等其他任务的数据集相比,当前目标检测数据集是有限的。最常见的检测数据集包含数千到数十万个具有数十到数百个标签的图像。而分类数据集具有数百万个具有数十或数十万个类别的图像。

    我们希望检测能扩展到物体分类的级别。然而,用于检测的标签图像比用于分类或标记的标签要昂贵得多(标签通常是用户免费提供的)。因此,我们不太可能在不久的将来看到与分类数据集相同规模的检测数据集。

    yolo9000

    图1:YOLO9000。YOLO9000可以实时检测多种对象类

    我们提出了一种新方法来利用我们已有的大量的分类数据,并用它来扩展当前检测系统的范围。我们的方法使用物体分类的分层视图,允许我们将不同的数据集组合在一起。

    我们还提出了一种联合训练算法,该算法允许我们在检测和分类数据上训练目标检测网络。我们的方法利用标记的检测图像来学习精确定位物体,同时使用分类图像来增加其词汇量和鲁棒性。

    使用这种方法,我们训练YOLO9000,一个可以检测超过9000种不同物体类别的实时目标检测网络。首先,我们改进了基础YOLO检测网络,以得到YOLOv2,这是一种先进的实时检测网络。然后我们使用数据集组合方法和联合训练算法来训练来自ImageNet以及COCO检测数据的超过9000个类的模型。

    我们所有的代码和预训练模型可以在网上找到:http://pjreddie.com/yolo9000/

    2. Better(更好)

    与先进的检测系统相比,YOLO存在各种缺点。与Fast R-CNN相比,YOLO的错误分析表明YOLO产生了大量的定位误差。 此外,与基于region proposal的方法相比,YOLO具有相对较低的召回率。 因此,我们主要关注改善召回率和定位,同时保持分类准确性。

    计算机视觉通常趋向于更大,更深的网络。更好的性能通常取决于训练更大的网络或集合多个模型。但是,对于YOLOv2,我们需要更准确的检测,但速度仍然很快。我们没有扩展网络,而是简化网络,然后使特征表示更容易学习。我们将过去工作中的各种想法与我们自己的新思想结合起来,以提高YOLO的性能。结果摘要见表2。
    在这里插入图片描述
    在这里插入图片描述

    表2:从YOLO到YOLOv2的改变。列出的大多数设计决策都会导致mAP的显著增加。有两个例外是切换到带有锚定框的全卷积网络和使用新网络。在使用新的网络切割计算时,切换到锚定框方法在不改变mAP情况下提高了召回率33%

    Batch Normalization. 批量归一化导致收敛的显着改善,同时消除了对其他形式的正则化的需要。通过在YOLO中的所有卷积层上添加批量归一化,我们可以使mAP提高2%以上。批量归一化也有助于模型正则化。通过批量归一化,我们可以从模型中删除dropout而不会过度拟合。

    High Resolution Classifier. (高分辨率分类器)所有最先进的检测方法都使用在ImageNet上预先训练的分类器。从AlexNet开始,大多数分类器在小于256 * 256的输入图像上运行。原始的YOLO训练分类器网络为224 * 224并增加分辨率为448 * 448进行检测。这意味着网络必须同时切换到学习目标检测并调整到新的输入分辨率。

    对于YOLOv2,我们首先在ImageNet上以完整的448 * 448分辨率微调分类网络10个epoch(迭代周期)。这使网络有时间调整其卷积核,以便在更高分辨率的输入上更好地工作。然后我们在检测时对生成的网络进行微调。高分辨率分类网络使我们的mAP增加了近4%。

    Convolutional With Anchor Boxes.(锚框卷积) YOLO直接使用卷积特征提取器顶部的全连接层预测边界框的坐标。而不是直接预测坐标的Faster R-CNN使用手工挑选的先验预测边界框。仅使用卷积层,Faster R-CNN中的区域提议网络(RPN)预测anchor boxes的偏移和置信度。由于预测层是卷积的,因此RPN在特征图中的每个位置预测这些偏移。预测偏移而不是坐标简化了问题,使网络更容易学习。

    我们移除了YOLO网络中的全连接层并使用anchor boxes来预测边界框。首先,我们移除一个pooling层,使网络卷积层的输出分辨率更高。我们还缩小网络用来在416 * 416输入图像而不是448 * 448上操作。我们这样做是因为我们想要在我们的特征图中有奇数个位置,所以只有一个中心单元格。物体,特别是大物体,往往占据图像的中心,因此最好在中心有一个位置来预测这些物体而不是附近的四个位置。YOLO的卷积层将图像缩小了32倍,因此通过使用416 * 416的输入图像,我们得到13 * 13的输出特征图。

    当我们使用anchor boxes时,我们还将类预测机制与空间位置预测分离,而不是预测每个anchor box的类和objectness(指anchor boxes中是否有物体)。同YOLO网络一样,objectness预测仍然预测真实框与预测框之间的IOU(Pr(Object) * IOU),并且类别预测在给定存在对象的情况下预测该类的条件概率(Pr(Class[i] | Object))。

    使用anchor boxes我们的准确性会略有下降。 YOLO仅预测每张图片98个boxes,但是使用anchor boxes我们的模型预测超过1000个boxes。没有anchor boxes,我们的中间模型获得69.5 mAP,召回率为81%。使用anchor boxes,我们的模型获得69.2 mAP,召回率为88%。虽然mAP减少,召回的增加也意味着我们的模型有更大的改进空间。

    Dimension Clusters.(维度群集) 在YOLO网络中使用anchor boxes时,我们遇到了两个问题。首先是box维度是手工挑选的。网络可以学会适当地调整框,如果我们从网络中选择更好的先验,我们可以让网络更容易学习预测好的检测。

    我们不是手动选择先验,而是在训练集边界框上运行k-means聚类,以自动找到好的先验。 如果我们使用具有欧几里德距离的标准k-means,那么较大的框会产生比较小的框更多的误差。然而,我们真正想要的是能够获得良好IOU分数的先验,这与框boxes的大小无关。 因此,对于我们的距离度量,我们使用:
    在这里插入图片描述
    我们为各种k值运行k-means并绘制具有最接近聚类中心的平均IOU,参见图2。我们选择k = 5作为模型复杂度和高召回率之间的良好权衡。聚类中心与手工挑选的anchor boxes明显不同。宽,短的boxes更少,相反高,瘦的boxes更多。
    在这里插入图片描述
    图2:VOC和COCO上的聚类框维度。我们对边界框的维数进行k-means聚类,得到模型的良好先验。左边的图片显示了我们对k的各种选择得到的平均IOU。我们发现k=5给出了一个很好的取舍,即回忆和模型的复杂性。右图显示了VOC和COCO的相对质心。这两组优先级都倾向于更薄、更高的框,而COCO在尺寸上的差异大于VOC。

    我们比较聚类策略和手工挑选anchor boxes的平均IOU,如表1所示。只有5个聚类中心时的性能与9个anchor boxes性能类似,即平均IOU为61.0 VS. 60.9。如果我们使用9个聚类中心,我们会看到更高的平均IOU (67.2)。这表明使用k-means生成我们的边界框会以更好的表示方式启动模型,使任务更容易学习。
    在这里插入图片描述
    表1:VOC 2007上最接近优先级的框的平均IOU。使用不同生成方法之前,VOC 2007上最接近、未修改的对象的平均IOU。聚类结果比使用人工挑选的先验值要好得多。

    Direct Location Prediction.(直接定位预测) 在YOLO网络中使用anchor boxes时,我们遇到了第二个问题:模型不稳定,特别是在早期迭代期间。大多数不稳定性来自于预测box的(x, y)位置。在区域提议网络RPN中,网络预测值 tx 和 ty,并且(x, y)中心坐标计算为:
    在这里插入图片描述
    例如,tx = 1的预测会将框box向右移动anchor box的宽度,tx = -1的预测会将其向左移动相同的量。

    这个公式是不受约束的,因此任何anchor box都可以在图像中的任何位置结束,无论预测box的位置如何。随机初始化,模型需要很长时间才能稳定以预测合理的偏移。

    我们不是预测偏移offset,而是遵循YOLO的方法,预测相对于网格单元的位置坐标。 这将真实框限制在0和1之间。我们使用逻辑激活logistics activation来约束网络预测落在此范围内。

    网络在输出的feature map中预测每个单元格的5个边界框。网络预测每个边界框的 5 个坐标,tx,ty,tw,th和to。如果单元格从图像的左上角偏移(cx, cy)并且前面的边界框具有宽度和高度pw,ph,则预测对应于:
    在这里插入图片描述
    由于我们约束位置进行预测,因此参数化更容易学习,使网络更稳定。使用维度聚类以及直接预测边界框中心位置可使YOLO比使用anchor boxes的版本提高近5%。

    Fine-Grained Features. (细粒度特征)改进后的YOLO在13 *13特征图上预测检测。虽然这对于大型物体来说已足够,但它可能会受益于用于定位较小对象的更细粒度的特征。Faster R-CNN和SSD都在网络中的各种特征图上运行其提议网络RPN,以获得一系列分辨率。我们采用不同的方法,只需添加一个直通层(passthrough layer),以26 * 26的分辨率从较早的层中获取特征。

    直通层通过将相邻特征堆叠到不同的通道而不是空间位置,将较高分辨率的特征与低分辨率特征连接起来,类似于ResNet中的identity mappings。这将 26 * 26 * 512 特征图转换为 13 * 13 * 2048 特征图,可以与原始特征连接。我们的检测器运行在这个扩展的特征图之上,因此它可以访问细粒度的特征。这使得性能提高1%。

    Multi-Scale Training.(多尺度训练) 最初的YOLO使用输入分辨率为448 * 448。通过添加锚定框,我们将分辨率更改为416 * 416。但是,由于我们的模型仅使用卷积和池化层,因此可以动态调整大小。我们希望YOLOv2能够在不同尺寸的图像上鲁棒运行,因此我们将其训练到模型中。

    我们并没有固定输入图像的尺寸,而是每隔几次迭代就改变一次网络。每10批(batch)我们的网络随机选择一个新的图像尺寸大小。由于我们的模型下采样率为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,同时仍然高于实时速度。有关YOLOv2与VOC 2007其他框架的比较,请参阅表3,图4.

    在这里插入图片描述

    表3:PASCAL VOC 2007检测框架。
    YOLOv2比以前的检测方法更快更准确。它还可以以不同的分辨率运行,以便在速度和精度之间进行简单的权衡。每个YOLOv2条目实际上是具有相同权重的相同训练模型,只是在不同的大小下求值。所有的时间信息都在Geforce GTX Titan X上(原始的,不是Pascal模型)。

    在这里插入图片描述

    图4:VOC 2007的准确性和速度

    进一步实验. 我们训练YOLOv2用于检测VOC 2012数据集。表4 展示了YOLOv2与其他最先进的检测系统的性能比较。YOLOv2达到73.4 mAP,同时检测速度比其它方法快得多。我们还在COCO数据集上进行训练并在表5 中的其他方法进行比较。在VOC指标(IOU = 0.5)上,YOLOv2达到44.0 mAP,与SSD和更快的R-CNN相当。
    在这里插入图片描述

    表4:PASCAL VOC12012测试检测结果。YOLOv2的性能与最先进的探测器相当,如带有ResNet和SSD512的Faster R-CNN,速度快2-10倍。

    在这里插入图片描述

    表5:COCO测试结果-dev2015

    3. Faster(更快)

    我们希望检测准确,但我们也希望检测速度快。大多数检测应用程序(如机器人或自动驾驶汽车)都依赖于低延迟预测。为了最大限度地提高性能,我们将YOLOv2设计为从头开始加速。

    大多数检测框架依赖于VGG-16作为基本特征提取器。VGG-16是一个功能强大,准确的分类网络,但它非常复杂。VGG-16的卷积层需要306.9亿浮点运算,在224 * 224分辨率的单个图像上进行单次检测。

    YOLO框架使用基于GoogLenet 架构的自定义网络。该网络比VGG-16更快,在前向计算时仅使用85.2亿次浮点运算。 然而,它的准确性略差于VGG-16 对于224 * 224 single-crop的top-5 accuracy,YOLO定制型在ImageNet上为88.0%,而VGG-16为90.0%。

    Darknet-19. 我们提出了一种新的分类模型作为YOLOv2的基础。我们的模型建立在网络设计的先前工作以及该领域的常识之上。与VGG型号类似,我们大多使用 3 * 3 卷积核,并且在进行池化步骤后将通道数量增加一倍。效仿Network in Network (NIN),我们使用全局平均池化来进行预测以及1*1卷积核来压缩3 * 3卷积之间的特征表示。我们使用批量归一化 (BN) 来稳定训练,加速收敛,并使模型正则化。

    我们的最终模型名为Darknet-19,有19个卷积层和5个最大池化层。有关完整说明,请参阅表6。Darknet-19仅需要55.8亿次浮点运算来处理图像,但在ImageNet上实现了 72.9% 的top-1精度和 91.2% top-5精度。
    在这里插入图片描述

    表6: Darknet-19

    分类培训。我们使用Darknet神经网络框架,在标准ImageNet 1000类分类数据集上训练网络,使用随机梯度下降(起始学习率为0:1)、多项式速率衰减(幂为4)、权重衰减(权重衰减为0.0005)和动量(动量为0.9)对160个时代进行分类。在训练过程中,我们使用标准的数据增强技巧,包括随机作物、旋转、色调、饱和度和曝光偏移。

    如上所述,在224×224的初始图像训练之后,我们将网络微调为更大的448。对于这种微调,我们使用上述参数进行训练,但仅针对10个阶段,并以10-3的学习速率开始。在这种高分辨率下,我们的网络达到了76.5%的前1精度和93.3%的前5精度。

    检测培训。我们通过去掉最后一个卷积层,并在三个3×3卷积层上加上1024个滤波器,每个滤波器后加上最后一个1×1卷积层,再加上需要检测的输出数,来修改该网络进行检测。对于VOC,我们预测5个框,每个框有5个坐标,每个框有20个类,因此125个过滤器。我们还添加了一个从最后的3×3×512层到第二到最后的卷积层的穿过层,这样我们的模型就可以使用细粒度特征。

    我们对网络进行160个阶段的训练,起始学习率为10-3,在60和90个迭代周期将其除以10。我们使用0.0005的重量衰减和0.9的动量。我们使用类似于YOLO和SSD的随机作物、颜色变化等数据增强。我们对COCO和VOC使用相同的训练策略。

    4. Stronger(更强)

    我们提出了一个联合训练分类和检测数据的机制。我们的方法使用标记为检测的图像来学习边界框坐标预测和目标之类的特定检测信息以及如何对常见目标进行分类。它使用仅具有类别标签的图像来扩展可检测类别的数量。

    在训练期间,我们混合来自检测和分类数据集的图像。当我们的网络看到标记为检测的图像时,我们可以基于完整的YOLOv2损失函数进行反向传播。当它看到一个分类图像时,我们只能从该架构的分类特定部分反向传播损失。

    这种方法提出了一些新的挑战。检测数据集只有通用目标和通用标签,如“狗”或“船”。分类数据集具有更广更深的标签范围。ImageNet有超过一百种品种的狗,包括Norfolk terrier,Yorkshire terrier和Bedlington terrier。如果我们想在两个数据集上训练,我们需要一个连贯的方式来合并这些标签。

    大多数分类方法使用跨所有可能类别的softmax层来计算最终的概率分布。使用softmax假定这些类是相互排斥的。这给数据集的组合带来了问题,例如你不想用这个模型来组合ImageNet和COCO,因为类Norfolk terrier和dog不是相互排斥的。

    我们可以改为使用多标签模型来组合不假定互斥的数据集。这种方法忽略了我们已知的关于数据的所有结构,例如,所有的COCO类是互斥的。

    Hierarchical classification(分层分类。)ImageNet标签是从WordNet中提取的,这是一个构建概念及其相互关系的语言数据库。在WordNet中,Norfolk terrier和Yorkshire terrier都是terrier的下义词,terrier是一种hunting dog,hunting dog是dog,dog是canine等。分类的大多数方法为标签假设一个扁平结构,但是对于组合数据集,结构正是我们所需要的。

    WordNet的结构是有向图,而不是树,因为语言是复杂的。例如,dog既是一种canine,也是一种domestic animal,它们都是WordNet中的同义词。我们不是使用完整的图结构,而是通过从ImageNet的概念中构建分层树来简化问题。

    为了构建这棵树,我们检查了ImageNet中的视觉名词,并查看它们通过WordNet图到根节点的路径,在这种情况下是“物理对象”。许多同义词通过图只有一条路径,所以首先我们将所有这些路径添加到我们的树中。然后我们反复检查我们留下的概念,并尽可能少地添加生长树的路径。所以如果一个概念有两条路径到一个根,一条路径会给我们的树增加三条边,另一条只增加一条边,我们选择更短的路径。

    最终的结果是WordTree,一个视觉概念的分层模型。为了使用WordTree进行分类,我们预测每个节点的条件概率,以得到同义词集合中每个同义词下义词的概率。例如,在terrier节点我们预测:
    在这里插入图片描述
    如果我们想要计算一个特定节点的绝对概率,我们只需沿着通过树到达根节点的路径,再乘以条件概率。所以如果我们想知道一张图片是否是Norfolk terrier,我们计算:
    在这里插入图片描述
    为了分类目的,我们假定图像包含一个目标:Pr(physical object)=1Pr(\text{physical object}) = 1

    为了验证这种方法,我们在使用1000类ImageNet构建的WordTree上训练Darknet-19模型。为了构建WordTree1k,我们添加了所有将标签空间从1000扩展到1369的中间节点。在训练过程中,我们将真实标签向树上面传播,以便如果图像被标记为Norfolk terrier,则它也被标记为dog和mammal等。为了计算条件概率,我们的模型预测了具有1369个值的向量,并且我们计算了相同概念的下义词在所有同义词集上的softmax,见图5。
    在这里插入图片描述

    图5:在ImageNet与WordTree上的预测。大多数ImageNet模型使用一个较大的softmax来预测概率分布。使用WordTree,我们可以在共同的下义词上执行多次softmax操作。

    使用与以前相同的训练参数,我们的分级Darknet-19达到71.9%的top-1准确率和90.4%的top-5准确率。尽管增加了369个额外的概念,而且我们的网络预测了一个树状结构,但我们的准确率仅下降了一点点。以这种方式进行分类也有一些好处。在新的或未知的目标类别上性能会优雅地降低。例如,如果网络看到一只狗的照片,但不确定它是什么类型的狗,它仍然会高度自信地预测“狗”,但是在下义位扩展之间有更低的置信度。

    这个构想也适用于检测。现在,我们不是假定每张图像都有一个目标,而是使用YOLOv2的目标预测器给我们Pr(physical object)Pr(\text{physical object})的值。检测器预测边界框和概率树。我们遍历树,在每个分割中采用最高的置信度路径,直到达到某个阈值,然后我们预测目标类。

    数据集与WordTree的组合。我们可以使用WordTree以合理的方式将多个数据集组合在一起。我们只需将数据集中的类别映射到树中的语法集。图6显示了一个使用WordTree合并ImageNet和COCO中的标签的示例。WordNet是非常多样化的,所以我们可以在大多数数据集中使用这种技术。
    在这里插入图片描述

    图6:使用WordTree层次结构组合数据集。使用WordNet概念图,我们构建了一个可视化概念的层次树。然后,我们可以通过将数据集中的类映射到树中的语法集来将数据集合并在一起。这是一个简化的WordTree视图,用于演示。

    联合分类和检测。现在我们可以使用WordTree组合数据集,我们可以在分类和检测上训练联合模型。我们想要训练一个非常大规模的检测器,所以我们使用COCO检测数据集和完整的ImageNet版本中的前9000个类来创建我们的组合数据集。我们还需要评估我们的方法,以便从ImageNet检测挑战中添加任何尚未包含的类。该数据集的相应WordTree有9418个类别。ImageNet是一个更大的数据集,所以我们通过对COCO进行过采样来平衡数据集,使得ImageNet仅仅大于4:1的比例。

    我们用这个数据集训练YOLO9000。使用基本的YOLOv2架构,但只使用3个prior而不是5来限制输出大小。当我们的网络看到检测图像时,我们会像正常情况一样反向传播损耗。对于分类损失,我们只在标签的相应级别或更高级别上反向传播损失。例如,如果标签是“dog”,我们将错误分配给树下更远的预测,“German Shepherd”与“Golden Retriever”,因为我们没有这些信息。

    当它看到分类图像时,我们只反向传播分类损失。我们只需找到预测该类的最高概率的边界框,然后计算其预测树上的损失。我们还假设预测框与ground truth(地面真值)标签重叠至少0.3IOU,并基于此假设反向传播目标损失。

    使用这种联合训练,YOLO9000学习使用COCO中的检测数据来查找图像中的目标,并学习使用来自ImageNet的数据对各种目标进行分类。

    我们在ImageNet检测任务上评估YOLO9000。ImageNet的检测任务与COCO共享44个目标类别,这意味着YOLO9000只能看到大多数测试图像的分类数据,而不是检测数据。YOLO9000在从未见过任何标记的检测数据的情况下,整体上获得了19.7 mAP,在不相交的156个目标类别中获得了16.0 mAP。这个mAP高于DPM的结果,但是YOLO9000在不同的数据集上训练,只有部分监督。它也同时检测9000个其他目标类别,所有的都是实时的。

    当我们分析YOLO9000在ImageNet上的表现时,我们发现它很好地学习了新的动物种类,但是却在像服装和设备这样的学习类别中表现差劲。新动物更容易学习,因为目标预测可以从COCO中的动物泛化的很好。相反,COCO没有任何类型的衣服的边界框标签,只针对人,因此YOLO9000正在努力建模“墨镜”或“泳裤”等类别。
    在这里插入图片描述

    表7:ImageNet上的YOLO9000最佳和最差类。
    156个弱监督类中AP最高和最低的类。YOLO9000学习各种动物的好模型,但却在与服装或设备等新课程作斗争

    5. Conclusion(结论)

    我们介绍实时检测系统YOLOv2和YOLO9000。YOLOv2是先进的检测网络,在各种检测数据集中比其他检测系统更快。此外,它可以在各种图像尺寸下运行,以在速度和精度之间提供平滑的折衷。

    YOLO9000是一个实时框架,通过联合优化检测和分类来检测9000多个物体类别。我们使用WordTree组合来自各种来源的数据,以及我们的联合优化技术以同时在ImageNet和COCO上进行训练。YOLO9000是缩小检测和分类之间数据集大小差距的重要一步。

    我们的许多技术都在目标检测之外进行推广。 ImageNet的WordTree表示为图像分类提供了更丰富,更详细的输出空间。使用分层分类的数据集组合在分类和分割中将是有用的。多尺度训练等训练技术可以为各种视觉任务带来好处。

    对于未来的工作,我们希望使用类似的技术进行弱监督图像分割。我们还计划使用更强大的匹配策略来改进我们的检测结果,以便在训练期间为分类数据分配弱标签。计算机视觉受到大量标记数据带来的好处。我们将继续寻找将不同来源和结构数据结合在一起的方法,以制作更强大的视觉模型。

    展开全文
  • yolo,yolov2和yolov3的论文原文,属于单阶段目标检测的代表性作品,对检测速度有很大提升,可以细细读一读
  • YOLOv3论文解读

    2020-06-07 15:57:18
    YOLOv3论文解读 论文地址: https://arxiv.org/pdf/1804.02767.pdf 代码实现: 作者本人: https://pjreddie.com/darknet/yolo/ github:pytorch 简易版:...一、概述 YOLOv3原文:《YOLOv3: An Increme
  • Gaussian YOLOv3

    千次阅读 2019-11-09 09:09:25
    Gaussian-YOLOv3YOLOv3的改进版,它利用高斯分布的特性(也叫正态分布,详见参考资料),改进YOLOv3,使得网络能够输出每个检测框的不确定性,从而提升了网络的精度。 关于YOLOv3的相关知识,可以参考我之前的两篇...
  • 作者:江大白原文链接:https://zhuanlan.zhihu.com/p/143747206因为工作原因,项目中经常遇到目标检测的任务,因此对目标检测算法会经常使用和关注,比如Yolov3、Yolov4算法。 当然,实际项目中很多的第一步,也都...
  • YOLO系列:YOLOv1,YOLOv2,YOLOv3,YOLOv4,YOLOv5简介YOLO系列是基于深度学习的回归方法。RCNN, Fast-RCNN,Faster-RCNN是基于深度学习的分类方法。YOLO官网:https://github.com/pjreddie/darknet​github.comYOLO v...
  • 英文版论文原文:https://pjreddie.com/media/files/papers/YOLOv3.pdf YOLOv3:一个渐进的改进 YOLOv3: An Incremental Improvement Joseph Redmon& Jinsong Zhao 华盛顿大学 University of Washington ...
  • YOLOv3 浅析

    2020-03-17 16:14:57
    YOLOV3是一种轻量的目标检测网络,他不同于SSD,他是通过对整张图片划分小方块,每个小方块预测一个锚框,最后再和真实框进行一个回归,对锚框微调,得到最后的预测框。 骨干网络 原文作者采用的是DarkNet,这个网络...
  • Yolov3升级版

    千次阅读 2018-08-24 22:09:54
    Yolov3升级版 原文:https://blog.csdn.net/Small_Munich/article/details/79721466 这个c++版,支持vs2015 vs2017. https://github.com/springkim/YOLOv3_SpringEdition 这个55.4,看一看 ...
  • yolov3原理: 一、yolov4性能表现 在论文的第一页就有上面这张图,意思是研究者对比了 YOLOv4 和当前最优目标检测器,发现YoLov4在取得EfficientDet同等性能的情况下,速度是它的两倍。,并且AP与FPS这两项指数相比...
  • TensorRT5 yoloV3加速

    千次阅读 2019-06-20 10:22:16
    TensorRT5中的yoloV3加速 原文:https://blog.csdn.net/qq_22764813/article/details/85626501 有项目地址:https://github.com/lewes6369/TensorRT-Yolov3 之前做过caffe版本的yolov3加速,然后实际运用到项目上...
  • yolov3算法详解

    2020-10-08 20:03:06
    YOLOv3: An Incremental Improvement按照原文的说法,它其实是一篇技术试验的报告。本文通过一些试验来改进yolo方法。 检测框的预测 这部分的预测和yolov2是一样的,详情可以参考yolov2算法详解。 类别预测 文章采用...
  • 原文 :https://blog.csdn.net/qq_40716944/article/details/114822515 ** https://blog.csdn.net/zxyhhjs2017/article/details/83013297 一、前言 YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-...
  • 目标检测: YOLOv3

    2019-03-02 12:51:38
    YOLOv3: An Incremental Improvement》 原文链接: https://arxiv.org/abs/1804.02767 本文可以说写的很随意了 ,下面简单梳理一下 YOLO v3 的内容 1. Bounding box 的预测 这里仍然使用直接预测 bounding box 的...
  • YOLOv3 理解

    2020-01-17 08:29:52
    原文链接:https://www.jianshu.com/p/d13ae1055302 YOLO3主要的改进有:调整了网络结构;利用多尺度特征进行对象检测;对象分类用Logistic取代了softmax。 新的网络结构Darknet-53 在基本的图像特征提取方面,YOLO...
  • Summary:腾讯优图:开源YOLO系列代码(含YOLOv3以及各种backbone)Author:AmusiDate:2019-01-17微信公众号:CVer原文链接:腾讯优图:开源YOLO系列代码(含YOLOv3以及各种backbone)本文原定于上周跟大家见面,但...
  • yolov3算法检测单类物体

    万次阅读 热门讨论 2018-08-29 19:05:18
    yolov3是目前目标检测类检测效果和检测速度最好的算法,原版的yolov3检测的物体种类众多,本文实在原有yolov3上将多累物体检测简化为单类物体检测,本文的原始代码基于github上copy的,源码下载地址为:...
  • Yolov3的损失函数分析

    千次阅读 2020-07-12 19:17:09
    Yolov3的网络架构在网上资源很多,但是关于loss的计算方法,网上的资源相对零散,并且原文作者并没有给出明确的计算公式。因此,本文的目的是梳理一下yolov3损失函数的计算流程。 Yolov3网络结构 Yolov3采用了...
  • 基于keras的Yolov3最全详解

    万次阅读 2020-04-25 21:15:17
    Yolov3论文原文链接一,0二 Yolov3官网 最近在做Yolov3相关项目,看了很多资料。所以写一篇总结体会,以便以后回顾查询。 YOLO,即 You Only Look Once 的缩写,是一个基于卷积神经网络(CNN)的目标检测算法 。 ...
  • Github 项目 - YOLOV3 的 TensorFlow 复现

    千次阅读 热门讨论 2019-01-30 08:49:17
    原文:Github 项目 - YOLOV3 的 TensorFlow 复现 - AIUAI Github 项目 - tensorflow-yolov3 作者:YunYang1994 论文:yolov3 最近 YunYang1994开源的基于 TensorFlow(TF-Slim) 复现的 YOLOv3 复现,并支持自定义...
  • (简洁)Yolov3详解

    2020-07-04 10:38:26
    原文链接:https://blog.csdn.net/weixin_39994739/article/details/106936139?%3E Yolov3详解
  • YOLOv1 1506.02640:You Only Look Once: Unified, Real-Time Object Detection 原文链接: https://arxiv.org/abs/1506.02640 摘要: YOLO模型仅对完成图片进行一次评估,就可以预测物体的边框和类别的概率。模型的...
  • 利用YOLOv3玩CSGO

    千次阅读 2020-05-05 09:34:21
    先放下视频效果吧:bilibili视频效果 pytorch版本 csgo设置: 鼠标设置中:灵敏度调8,关闭原始数据输入 ...代码是在Pytorch版yolov3代码中文注释详解基础上修改的, 完整工程链接: 基本是上文的原文,就自...
  • 目标检测网络之 YOLOv3

    千次阅读 2018-06-11 14:12:52
    原文地址:http://www.cnblogs.com/makefile/p/YOLOv3.html目标检测网络之 YOLOv3yolo-idea本文逐步介绍YOLO v1~v3的设计历程。YOLOv1基本思想YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的...
  • yolov3批量测试代码

    2019-09-17 09:11:05
    yolov3批量测试代码,官网版本的完全按照教程没有问题,借鉴AlexeyAB/darknet版的图片批量测试代码。 原文网址 https://github.com/AlexeyAB/darknet 假设训练按照原版处理完成: 1.请更新最新的代码; 2.请在/root/...
  • 因为工作原因,项目中经常遇到目标检测的任务,因此对目标检测算法会经常使用和关注,比如Yolov3、Yolov4算法。 当然,实际项目中很多的第一步,也都是先进行目标检测任务,比如人脸识别、多目标追踪、REID、客流...
  • 关于YOLOv3的一些细节

    2019-11-03 21:13:08
    本文是我对YOLO算法的细节理解总结,本文的阅读前提是已读过YOLO相关论文,文中不会谈及YOLO的发展过程,不会与其他对象检测算法进行对比,也不会介绍YOLO9000相关的内容,只总结YOLOv3算法的具体流程和实现细节。...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

yolov3原文