目标检测—RetinaNet理论与实践

举报
ganxu 发表于 2021/06/09 16:27:31 2021/06/09
【摘要】 一、概念介绍    目标检测算法主要可以分为两类:two-stage detector和one-stage detector。    Two-Stage:例如Faster-RCNN算法。第一级专注于proposal的提取,第二级对提取出的proposal进行分类和精确坐标回归。两级结构准确度较高,但因为第二级需要单独对每个proposal进行分类/回归,速度较慢。    One-Stage:...

一、概念介绍

    目标检测算法主要可以分为两类:two-stage detector和one-stage detector

    Two-Stage:例如Faster-RCNN算法。第一级专注于proposal的提取,第二级对提取出的proposal进行分类和精确坐标回归。两级结构准确度较高,但因为第二级需要单独对每个proposal进行分类/回归,速度较慢。

    One-Stage:例如SSD,YOLO算法。此类算法摒弃了提取proposal的过程,只用一级就完成了识别/回归,虽然速度较快但准确率远远比不上两级结构。

    one-stage detector准确率不如two-stage detector的主要原因是正负样本不均衡,one-stage detector在得到特征图后,会产生密集的目标候选区域,而这些大量的候选区域中只有很少一部分是真正的目标,这样就造成了机器学习中经典的训练样本正负不平衡的问题。论文[1]提出了Focal Loss来对最终的Loss进行校正。


二、网络结构

    下图是RetinaNet的网络结构,整个网络相对Faster-RCNN简单了很多,主要由ResNet+FPN+2xFCN子网络构成。

上面提到的Focal Loss就是应用到类别分类的子网络中class subnets,损失函数可写作:

    [公式] 是不同类别的分类概率,[公式] 是个大于0的值,[公式] 是个[0,1]间的小数,[公式][公式] 都是固定值,不参与训练。

    无论是前景类还是背景类,[公式] 越大,权重 [公式] 就越小。当某样本类别比较明确些,可以通过设置权值使其对整体loss的贡献就比较少;而若某样本类别不易区分,则使其对整体loss的贡献就相对偏大。这样得到的loss最终将集中精力去诱导模型去努力分辨那些难分的目标类别,于是就有效提升了整体的目标检测准度。

    [公式][公式] 的最优值是相互影响的,所以在评估准确度时需要把两者组合起来调节。论文[1]中给出 [公式][公式] 时,ResNet-101+FPN作为backbone的结构有最优的性能


三、Retinanet实践

    可以订阅ModelArts的Retinanet算法来入门和熟悉Retinanet在目标检测中的使用流程。

3.1 准备数据集

    在AI Gallery的数据中搜索“检测”,就能搜索到适合目标检测算法的训练集,可以点击helmet训练集。1.jpg

    点击“下载”进入下一步。

2.jpg

    下载方式可以选择“对象存储服务(OBS)”和“ModelArts数据集”两种方式,都是将训练集下载到OBS桶内,所以目标位置都需要填写到OBS桶内的文件夹。当选择“ModelArts数据集”时可以给数据集命名,后面训练可以通过名称选择数据集。

3.jpg

    下载好的数据集是默认训练验证集切分比例为1.00,要输入到AI Gallery的Yolov5算法中需要进行切分。在“数据管理”的“数据集”中选择对应数据名称的“发布”。

可以选择切分比例为0.8。

3.2 订阅Retinanet算法

    在算法中选择物体检测-RetinaNet_ResNet50,订阅后前往控制台。

    进入控制台后会有不同版本的Retinanet,可以选择当前最新版本并创建训练作业。

3.3 训练Retinanet模型

    创建训练作业后只需要填写数据输入和模型输出train_url,超参数据可以选择默认值,也可以根据实际情况修改,创建完毕后点击“提交”。超参数据修改可参考:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=d965a19d-62e6-4a07-bb02-3db57ccf9c98

训练完毕后可看训练作业的评估结果,以及精度评估和敏感度分析。

3.4 在线推理部署

    点击训练作业中的“创建模型”

    选择“从训练中选择”-“训练作业”后就能根据已经训练好的训练作业来导入模型。

    在“部署上线”的“在线服务”中点击“部署”。

选择刚才导入的模型进行部署。

 

  就能上传本地文件来进行预测。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。