| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021 -> 正文阅读 |
|
[人工智能]Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021 |
Anchor-Free系列之CornerNet: Detecting Objects as Paired Keypoints_程大海的博客-CSDN博客 Anchor-Free系列之CenterNet:Objects as Points_程大海的博客-CSDN博客 Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector_程大海的博客-CSDN博客 Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021_程大海的博客-CSDN博客 参考:如何评价旷视开源的YOLOX,效果超过YOLOv5? - 知乎? 参考:深入浅出Yolo系列之Yolox核心基础完整讲解 - 知乎 参考:深入浅出Yolox之自有数据集训练超详细教程 - 知乎 ????????YoloX是在YoloV3、YoloV5的基础上,配合最近几年目标检测领域比较有效的方法,如Head Decoupled、Data Augmentation、Anchro-Free、Label Assign等。 YoloX技术要点: 1、Head Decoupled(单头 -> 多头) decoupled-head实验结论: 使用decoupled-head可以带来两个方面的好处:
?????????这里插播一下关于目标检测使用单个预测头、多个预测头、预测头使用FC还是使用卷积的相关研究,我主要看了下面这篇论文: ?《Rethinking Classification and Localization for Object Detection》 起因 ????????作者经过深入分析发现,对于目标检测算法通常使用的基于全连接层的预测头fc-head,基于卷积层的预测头conv-head,在处理分类任务和坐标回归任务时,表现的效果相反。Fc-head的预测头更适用于预测输出目标的类别置信度,conv-head的预测头更适用于预测输出目标的bounding box坐标框。 ????????鉴于上述观察结果,作者设计了具有双预测头的目标检测算法Double-Head,其中fc-head主要负责预测目标的类别概率置信度,conv-head主要负责预测目标的bounding box坐标。并在此基础上进一步演化出了Double-Head-Ext算法,让fc-head在主要负责预测输出类别概率的同时,辅助预测目标的bounding box,让conv-head在主要负责预测输出目标bounding box坐标的同时,辅助预测目标的类别置信度。 Backbone: 使用FPN网络作为backbone,上层使用RPN网络生成proposal,在proposal的基础上使用RoIAlign(详见Mask-RCNN),将每个proposal的区域生成7x7x256的feature map,然后分别送入fc-head和conv-head,经过fc-head和conv-head之后,最终输出1024位的特征向量,然后在特征向量上预测输出每个proposal的类别置信度和bounding box fc-head:在proposal经过RoIAlign之后得到的256x7x7的feature map上,使用两个全连接层,输出得到1024维的特征向量 conv-head:在proposal经过RoIAlign之后得到的256x7x7的feature map上,堆叠使用多个residual block残差模块,最后使用avg pooling,输出得到1024维的特征向量 损失函数: Double-Head预测结果融合: ????????基于fc-head和conv-head预测输出的目标类别置信度,综合得到最终的置信度。 效果: 好了, 继续回到YOLOX的技术要点上来。 2、Data Augmentation(数据增强) Mixup:数据增强之MixUp_程大海的博客-CSDN博客_数据增强mixup代码 Mosaic:关于马赛克数据增强方法,可以参考“江大白”的YOLO系列讲解,讲的非常好。 备注:关于Mixup和Mosaic数据增强方法,作者在论文中说要在训练的最后15个epoch关闭Mixup和Mosaic,关于这个问题,在旷视科技官方知乎账号上给出了如下解释: ?????????以上回答意思就是说,当使用了Mixup和Mosaic数据增强方法,会对输入的原始图片进行较大的变化(叠加、裁剪、粘贴等),导致输入到网络模型的图片数据与真实场景的图片数据偏差较大,导致数据的分布不一致,影响模型的泛化性能。关于这个问题,我自己在实际使用Mixup方法,以及使用自有数据集训练YOLOX时也有如下两点发现: ????????1、使用Mixup数据增强训练分类模型时,Loss值和Accuracy震荡很厉害,模型的Loss很快就基本上不下降了 ????????2、在使用YOLOX训练自有数据集时,在最后15个epoch关闭Mixup和Mosaic之后,验证集上的mAP指标直线上升4-5个百分点。如下图所示: ?????????所以在训练的最后阶段,关闭Mixup和Mosaic确实可以提升模型性能。让模型在前期经历各种磨难(Mixup+Mosaic),努力学习去做各种难题、怪题,在后期学有所成之后,开始接触真正的三年模拟,五年真题,在真实战场上一展身手。 ???????? 3、Anchor-Free(无锚框) 关于anchor-based目标检测方法的一些缺点,可以参考Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector_程大海的博客-CSDN博客
????????参考CornerNet、CenterNet等anchor-free方法,YoloX放弃使用anchor,在输出特征图上的每个位置直接预测4个数值结果,用来确定相对于当前位置,目标的top-left和bottom-right corner的偏移量offset 4、Multi positives ????????YoloX放弃使用anchor,然后将目标的中心点位置作为唯一的positive,其余均为negative,这样会导致大量的正负样本不均衡(CornetNet和CenterNet中采用Focal Loss),同时也会忽略那些预测结果稍微不完美(预测的中心点稍微偏离)的结果,参考CornerNet、CenterNet、FCOS等anchor-free的方法,YoloX在目标的中心划定一个范围,范围内的位置均代表目标的中心,都是positive,这样可以将AP从42.9%大幅提升到45% 5、Label Asign(标签分配) YOLOX实验效果: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 7:45:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |