| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> YOLO2论文的理解(完整篇) -> 正文阅读 |
|
[人工智能]YOLO2论文的理解(完整篇) |
本人CV算法新人一枚,文章主要是记录并分享自己的论文阅读体会,由于本人才学疏浅,如有不对或改善的地方,烦请指出,欢迎交流。 概述YOLO致力于实时、快速、高精度的端到端模型,YOLO1的速度很快,但是相对于Faster RCNN而言,准确率较低,在错误分析中发现,YOLO1的召回率和localization的错误占比更高。 论文从better、faster、stronger三方面阐述YOLO2相对于YOLO1的进步。 Better
1、Batch Normalization: 2、High Resolution Classifier: 3、Convolutional With Anchor Boxes: 作者去掉了YOLO中的全连接层,使用anchor boxes来预测bboxes。首先,为了得到更高的分辨率,作者删掉了一个池化层。削减网络以处理416* 416的图片输入,这是为了得到一个locations为奇数的feature map,从而让feature map只有一个center cell,最后YOLO的卷积层通过因子32对输入图像进行下采样,最后得到13*13的feature map。 切换为anchor boxes时,YOLO继续将类别预测机制和空间定位分离,而不是预测每一个anchor box的类别和检测。对每一个proposed box预测其与ground truth的IOU,一个location预测一个类别的条件概率(含有object时的class概率)。 之前的YOLO会预测98个boxes,但使用了anchor boxes后需要预测13* 13* 9=1521个,所以最终的召回率得到了较大提高:mAP从69.5降到69.2,而召回率从81%提高到了88%,这说明YOLO还有很大的改进空间。 4、Dimension Clusters: 作者使用K-means训练训练集bboxes来得到更好的先验框。如果使用传统的K-means计算距离的算法,大的boxes会比小的产生更多的错误,然而我们希望通过priors可以获得更好的IOU分数,所以作者使用了如下的公式计算距离:
5、Direct location prediction: 作者的做法是延续YOLO的方法,直接预测相对于网格(grid cell)的位置坐标,将groundtruth限制在0~1之间,然后用逻辑回归激活将模型的预测值控制在这个范围内。 模型对每一个cell预测5个bboxes,每一个box预测5个坐标值,tx,ty,tw,th,to(如下图)。如果cell相对于图像左上角的偏移是(cx,cy),Bbox prior的宽和高是pw,ph,则预测框的值根据以下公式计算: 6、Fine-Grained Features(细粒度特性): 7、Multi-Scale Training: 8、Further Experiment: 作者对YOLO2在VOC2012上进行训练,上图展示了其与其他模型的性能比较,YOLO2的mAP达到了73.4,然而速度更快。作者也在COCO数据集上进行了训练,并且和其他方法进行了比较,如下图,在IOU=0.5时,mAP为44.0,仅次于SSD512。 Faster作者想要的结果是模型的检测能力又快又准。很多检测模型都依赖于VGG-16作为特征提取器,VGG-16是一个强健、精确的分类网络,但是它比较复杂。VGG-16的卷积层跑一次224* 224的图片需要306.9亿次浮点数运算。目前YOLO使用的是基于Googlenet结构的定制网络,这比VGG-16快,并且是需要85.2亿次运算。然而它的准确度较低于VGG-16。在ImageNet上测试224* 224的图片,top-5的准确率是88.0%,VGG-16有90.0%的准确率。 1、Darknet-19: 最终的模型叫Darknet-19,有19个卷积层和5个最大池化层,见下图。此模型只需要55.8亿次运算,并在ImageNet上得到了72.9%的top-1准确率和91.2%的top-5准确率。 使用以上方法在224* 224的数据集进行训练后,又在448* 448的数据集上进行fine tune。finetune时的epoch为10,初试学习率为0.01。最终,top-1准确度为76.5%,top-5准确度为93.3%。 3、Training for detection: 模型训练用了160epochs,初试学习率为0.01,在60和90epoch时,用之前的学习率除以10。weight decay为0.0005,momentum为0.9。数据增强和YOLO、SSD类似,训练策略类似于COCO和VOC。 Stronger作者提出了一种用分类数据集和监测数据集联合训练的机制。使用检测数据集去学习检测相关的信息,比如Bbox的坐标和分类,用分类数据集去扩充监测模型可检测的物体类别。在训练阶段混合两种数据集,如果模型接收到的是有检测标注的图片,就会通过YOLO2的损失函数进行反响传递。如果接收到的是只有分类标签的图片,就只计算分类损失。 这种方法遇到了一些挑战。监测数据及只包含一些笼统的分类标签,比如猫、狗。而分类数据集包含的类别则非常宽广,ImageNet就有包含一百多种狗的分支类别。大部分分类用的是softmax函数,然后softmax要求类别之间是互斥的,这对于混合数据集来说就不适用了。作者使用multi-label模型来混合数据集,这个没有互斥的假设。 1、Hierachical classification(类别分层): ImageNet的labels来自于WordNet(一个将概念和它们之间的关系结构化的语言数据集)。对于合并的数据集,也正好需要这样的结构,所以作者将ImageNet中的概念建了一颗分层树(建树方法不再赘述),并将树称为WordTree。如果想计算某个节点的概率,就可以顺着通往根节点的路径,将所有的条件概率相乘。比如计算一张图片里是不是Norfolk terrier,可以通过以下公式得到: 2、Dataset conbination with WordTree: 最后用这个庞大的数据集训练YOLO9000模型,但是priors从5个降为3个,以此来限制输出大小。 训练后在ImageNet上进行评估:COCO和ImageNet数据集只有44个相同的物体类别,这意味着模型只看到了大量的分类数据,而不是检测数据。最终总体的mAP为19.7,没有检测标注的156个类别数据的mAP为16.0,这个结果已经比DPM高,但YOLO9000只在部分监督的情况下进行训练的。除此之外,模型能够实时地同时检测其他9000个类别。 当分析YOLO9000在ImageNet上的性能时发现,它能很好地学习新的动物种类,但是像衣服、工具这样的类别识别的不好。新的动物种类容易学习是因为模型将COCO数据集里的动物概括的很好,而COCO数据集没有衣服等种类的Bbox标注。 总结与比其他基于各种检测数据集的检测系统相比,YOLO2当时更先进且更快。除此之外,YOLO2可以操作一系列不同尺寸的图像,并且在速度和准确度直接可以平稳地tradeoff。YOLO9000是一个可以检测9000+物体类别的实时模型。在消除分类数据集和检测数据集大小的差距中,YOLO9000迈出了重要的一步。 本论文的许多技术都适用于物体检测之外的领域。WordTree表示让图像分类更加丰富和详细。用分层分类的数据集合并在分类和分割领域也是有用的。multi-scale训练技术可以在各种视觉任务中发挥作用。 在未来,作者希望将类似的技术用在弱监督的图像分割中,并计划使用更强大的匹配策略为分类数据分配若标签,来提高检测结果。他们也会继续探索,带来不同的资源和不同结构的数据整合方法,以此来让视觉领域的模型更强健。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 21:00:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |