乐虎游戏|乐虎国际登录|欢迎你

Yolo系列其三:Yolo_v3

日期:2020-01-23编辑作者:计算机资讯

相信SSD的横空出世委实给了Yolo许多压力。在目标检测准确性上Yolo本来就弱于Faster-RCNN,它的提出之初就主打其能保持一定检测准确性的同时实现更快乃至实时的速度。可同一年SSD的出现表明端到端的单阶段目标检测模型如果善加调理(更激进的data augmentation, multi scales feature maps,更多的default boxes数目,直接使用conv filter来从feature maps中得到位置、类别等信息)在拥有较快速度的同时,一样可以达到与像Faster-RCNN等双阶段目标检测模型类似的准确度。

如果你已读过之前Yolo v1与Yolo v2系列的文章,另外对FPN/RetinaNet等模型也有所了解,那么等你看Yolo v3时就会发现它真的没有啥新货。

SSD模型2015年出来后,端到端的目标检测模型发展盛行一时。随后的Yolo v2更是将它在工业界里视觉领域的应用提高到了一个新的程度。

经过一年的蛰伏之后,Yolo卷土重来,于2016年推出了改进后的Yolo v2。它有效地借鉴了Faster-RCNN/SSD中使用的思想,成功地使Yolo v2模型成为了新的state-of-art端到端目标检测网络。

简单说Yolo v3是在之前Yolo v2的基础上引入了一些小的改进像positive bounding box的选取,darknet-53中对residual learning思想的引用,类似于FPN的multi-scales feature maps使用等等。但这些小的改动引入之后,新的Yolo v3确实使得最终的mAP值达到了与SSD近似的程度,同时其速度更是要快上3倍。虽然其最优的mAP值与当下火热的RetinaNet网络还有不小差距,但与RetinaNet相比,它在能达到同等程度的mAP值时却能保证有更快的速度。

当下在视觉目标检测领域俨然已是山头林立。Facebook与微软的一众大佬还在沿着当初的R-CNN系列模型一直发展,并进化到了当下性能及速率均较突出的R-FCN及RetinaNet模型(当然相对速度,他们最重视的还是性能)。而Redmon孤军奋战却也不甘示弱,他所领军的Yolo系列模型已经进化到了先进的Yolo v3(这一派相对而言更重视速率而非性能)。SSD的发起者Liu, Wei则坚定地发展着SSD,并一直试图走中间路线,在目标检测的性能与速率之间寻一平衡。对致力于计算机视觉目标检测任务的很多公司、研究者而言,走中间路线的SSD系列模型或者是比较不错的选择。

计算机 1Yolo_v2

计算机 2Yolo_v3与其它模型检测方法在COCO数据集上的性能比较

DSSD模型是SSD模型的继续发展。它也来自于Amazon实习生的一个项目。如今大的深度学习方面的创新已经越来越多地在青年学者手中产生,真是丈夫未可欺年少啊!

不多废话,直接说下Yolo v2相对于之前的Yolo v1所多的改进吧。

看明白了吧。Yolo v3延续了Yolo系列模型一贯的特点,那就是mAP值比不过你就跟你较量速度,虽然你丫预测得准,但俺脚步更快。在这么个一切求快的时代,显然速度上佳,甚至能保证实时响应是一个听上去相当有诱惑力也挺唬人的一个东东。

计算机,DSSD相当原来的SSD模型主要作了两大更新。一是替换掉VGG,而改用了Resnet-101作为特征提取网络并在对不同尺度feature maps特征进行default boxes检测时使用了更新的检测单元;二则在网络的后端使用了多个deconvolution layers以有效地扩展低维度信息的contextual information,从而有效地提高了小尺度目标的检测(在我看来2018年提出的FPN的真正思想正是源自于此)。

BN自提出以来已经在多个视觉领域得到了较好的证明。Yolo v2通过在之前Yolo中用到的所有conv层加入bn,整个模型的检测mAP有效提升了近2%。此外BN的引入也让作者放弃了在新的模型中使用之前用于防止模型过拟合的dropout层。

以下为Yolo v3中所采用的bounding box坐标的预测,显然其与Yolo v2中采用的并无二致。

下图为DSSD模型与SSD模型的整体网络结构对比。

当初Yolo模型在训练时先使用224x224的图片输入来预训练自己的特征提取网络;然后再将输入的图片尺度增大到448x448,进面继续使用检测数据集对其进行finetune。这意味着上述finetune中网络需要重新学习识别大尺度的图片以及学习进行其上的目标检测工作。

bx = σ + cxby = σ + cybw = pwet~w~bh = phet~h~

计算机 3DSSD与SSD网络结构对比

在Yolo v2中,在拿到224x224的分类数据集train过的模型后先使用448x448的分类数据集finetune上10个epochs,然后再使用448x448的目标检测数据集进行接下来的目标检测工作的finetune。。

下图为上述公式的详细解释,同样是原来Yolo v2就已经有过的内容。

DSSD网络是基于原来的SSD网络作的拓展模型,因此我们想了解它可重点关注它相当于SSD模型不同的地方。

实现表明finetune时高精度分类器的预先finetune操作可带来最终目标检测模型近4%的map提升。

计算机 4Yolo_v3中bounding_box的预测

为了改进目标检测模型,进一步提升其检测精度,作者首先考虑使用更强大的Resnet-101来代替之前在SSD中使用的VGG作为模型的特征提取网络。同样在经典的Resnet-101模型后端添加了一些Residual模块以来加强原来模型的特征表达(这已经是当下使用CNN网络来获取有表达力特征组合的一个经典手段了)。作者从conv5_x的后端开始添加多余的Residual模块,然后使用conv3_x/conv5_x及后添加的一些模块输出的feature maps来预测boxes的scores及box offsets等。

Yolo v1模型当初直接在特征提取主干网络最后端生成的feature maps上后接FC,然后生成得到预测的目标框的类别、位置等信息。

不过它在判断anchor box的正负时,每个ground truth box只会选用一个与它有最大IOU的anchor box作为正的anchor box,而不再使用一个threshold,然后将超过此threshold值的anchor box也视为正样本框。这一点是它与SSD或Faster-RCNN系列模型不同的地方。

计算机 5VGG和Resnet中选取的特征层

而在Yolo v2中,像Faster-RCNN的RPN网络或者SSD等一样,开始直接使用conv filters来提取生成prior boxes(又叫Anchor boxes)的位置偏移及类别等信息。与其它网络略不同的是Yolo v2特意选了416x416的image size作为输入,这样经过前端的数个特征提取卷积层与pool层后(stride为32),最终的feature map大小为13x13,恰是个奇数。这样它就可以有效地预测最中心grid位置的目标(这一trick来自于一个数据集常识即一般我们training用的数据集上,目标往往是在图片的中央区域)。

Yolo v3使用多目标的方式进行分类,而不再使用softmax,隐含地视所有的bounding boxes只可能属于一类物体。它在最终的loss层中简单地使用逻辑回归来得到每个bounding所属的类别分布,然后再使用cross-entropy来计算training loss。

经过以上这些简单的替换,最终Resnet-101 based的SSD模型在VOC2007上的mAP达到了76.4%,尚不及原来VGG based的SSD模型的mAP值。

相对于Yolo v1中直接使用FC来预测目标框的类别与位置,使用卷积生成anchor boxes位置与类别的方法会带来mAP约0.3的下降,但会导致较大的召回率(Recall ratio)提升,约7%。这使得这一模型可进一步改良、提升的空间加大。

类似于FPN网络,Yolo v3中采用了相似的思想使用后面三个Conv层的特征来进行预测。在这些层之间也像FPN那样有up-to-down和down-to-up的数据通路。此外它anchor box dimensions的选取同Yolo v2一样也是通过对训练数据集做k-means聚类得到的。它会将选择出的9个anchor box平均地分布到三个scales的feature maps当中。

后来作者改进了基于feature maps组合值来预测box 类别分布及位置偏离信息的模块,从而使得mAP值获得了较大的提升。具体内容可见下面章节。

作者直接在目标检测训练数据集上对所有的目标框进行k-means聚类最终得到了Avg IOU与模型复杂度均不错的anchor boxes组合。如下为所使用的k-means中的距离衡量公式:

在COCO数据集中,聚类得到的9个anchor box scales分别为:; ; ; ; ; ; ; (156 × 198); (373 × 326)。

在原来SSD模型中,采用了直接使用3x3的conv来在feature maps组合上进行预测的办法。而MS—CNN一文中作者有证据表明若改进具体的子网络会有效提高整体的模型检测精度,因此作者沿用此一方法,试着对每个需要预测的feature maps先使用residual模块进行处理,然后再基于此进行box分值预测。

本文由乐虎游戏发布于计算机资讯,转载请注明出处:Yolo系列其三:Yolo_v3

关键词:

应用预先练习互联网和脾气抽出大力进步图像识别率

大家在前几节介绍过卷积网络的运算原理,以致通过代码实施,体验到了卷积网络对图纸信息抽出的灵光。以往三个...

详细>>

Java开发小技巧(五):HttpClient工具类

【声明】   大许多Java应用程序都会通过HTTP公约来调用接口访谈种种互连网资源,JDK也提供了相应的HTTP工具包,不过...

详细>>

Fountain 丨 PDF转Word 用谷歌文档进行在线OCR识别

PDF转word是一个永恒的话题, 原因有二 对于不少文字工作者来说,多文件格式的转换可谓是“家常便饭”,而最让人头...

详细>>

程序员的迷茫:前端能做什么?还是后端?全栈?

在我的职业生涯过程中,发现很多人会跑来问我这样的问题,前端能做什么?这条路怎么走。然后他们会分开来问一...

详细>>