前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度飞桨开源Open Images Dataset V5目标检测比赛最好单模型MSF-DET

百度飞桨开源Open Images Dataset V5目标检测比赛最好单模型MSF-DET

作者头像
CV君
发布2019-12-27 15:51:50
1.3K0
发布2019-12-27 15:51:50
举报
文章被收录于专栏:我爱计算机视觉

目标检测是计算机视觉领域中的核心任务。Open Images Dataset V5(OIDV5)是目前规模最大的目标检测公开数据集[1]。基于飞桨(PaddlePaddle)的PaddleDetection目标检测模型库[2],百度研发了大规模图像目标检测模型MSF-DET (Multi-Strategy Fused Detection framework),是Google举办的Open Images Dataset V5 (OIDV5) 2019目标检测比赛中的最好单模型,并且在计算机视觉领域的顶级学术会议ICCV 2019上进行技术分享。

近日,飞桨开源了比赛中使用的MSF-DET,助力大规模图像目标检测算法的研究探索和落地应用。

Google AI Open Images 2019比赛地址:

https://www.kaggle.com/c/open-images-2019-object-detection/

GitHub地址:

https://github.com/PaddlePaddle/PaddleDetection/blob/master/docs/OIDV5_BASELINE_MODEL.md

技术报告论文地址:

https://arxiv.org/pdf/1911.07171.pdf

01

比赛介绍

Google AI Open Images 2019是Google在2019年举办的大规模目标检测比赛,数据集为Open Images Dataset V5数据集(OIDV5)。OIDV5训练集包含170万张图像,覆盖500个类别,有超过1400万个标注的检测框,是目前已知的最大的目标检测开源数据集,检测图像和标注边框示例图如下图所示。

OIDV5的类别不均衡的现象比较严重[3],有些类别,如Clothing, Flower等,包含上百万个标注边框,而像Hair Dryer等类别仅包含上百个标注边框。不同类别的标注框数量如下图所示,这也造成了模型训练难以收敛的问题。

02

MSF-DET模型结构

该模型融合了当前较优的目标检测方法,包括Cascade RCNN[4], Feature Pyramid Networks[5], Deformable ConvNets V2[6],Non-local Networks[7],以ResNet200-vd[8]作为骨干网络, 模型结构如下。

ResNet由于其结构简洁、性能很好而被广泛应用于许多深度学习任务中;同时它也有很多变体,下图展示了ResNet的vb、vc和vd结构[9],其中,vd结构在分类和检测等任务上具有更优的性能,在比赛中,团队使用ResNet200-vd作为模型的骨干网络。

Cascade RCNN可以帮助检测器获得更加精确的检测结果。其结构如下所示[4],通过逐渐提升预测框和标注边框的匹配交并比,并不断修正检测框的位置和得分。标准的Cascade RCNN结构只预测前景框和背景框的偏移量,团队在比赛中做了修改,对每个类别都单独预测了一个偏移量。

Feature Pyramid Network解决了目标检测中的多尺度问题,通过将不同等级的特征图进行融合,大大提升了小物体检测的性能,主要结构图如下所示[5]。

Deformable ConvNets V2解决了卷积神经网络在几何变换建模能力有限的缺点。在Deformable ConvNets V1中,卷积核的采样位置不是固定的,而是通过网络学习空间采样的位置,卷积示意图如下;在V2中,除了加了更多的可变形卷积外,还增加了每个采样点的权重的学习,这使得网络在卷积采样时,有更大的自由度[6]。

Non-local Networks引入non-local block,结构如下[7],它基于自注意力机制,使得网络可以获得全局特征图信息,大大提升了网络的全局表征能力,在分类、检测、分割和姿态估计上面都有更优的性能。

此外,在模型训练过程中,团队引入了多尺度训练、动态采样等训练技巧;在计算预测边框的损失函数时,使用Libra loss[10]替代传统的Smooth L1 loss,用于平衡不同难度的预测框之间的损失函数;由于OIDV5和Objects365数据集[11]大约有189个公共类,因此使用Object365数据集对OIDV5数据集进行扩充;在预测时,使用SoftNMS进行后处理[12],保证更多的检测框可以被召回。基于飞桨,该模型在8卡V100(32G)机器上训练之后,最终该单模型(多尺度预测)的得分为0.6492/0.6182。模型的检测效果如下。

为验证模型的泛化性能,基于完全相同的模型结构,DSF-NET在COCO2017[13]和Objects365数据集上也做了实验,最终在各自的验证集上的单模型单尺度mAP如下表。

以上三个数据集的模型均已开源,模型和对应的性能指标可以从这里下载与查看:

https://github.com/PaddlePaddle/PaddleDetection/blob/master/docs/OIDV5_BASELINE_MODEL.md

03

飞桨目标检测库介绍

飞桨目标检测库(PaddleDetection)的目的是为工业界和学术界提供丰富、易用的目标检测模型。不仅性能优越、易于部署,而且能够灵活的满足算法研究的需求。主要特性如下:

1. 易部署:

PaddleDetection的模型中使用的核心算子均通过C++或CUDA实现,同时基于PaddlePaddle的高性能推理引擎可以方便地部署在多种硬件平台上。

2. 高灵活度:

PaddleDetection通过模块化设计来解耦各个组件,基于配置文件可以轻松地搭建各种检测模型。

3. 高性能:

基于飞桨框架的高性能内核,在模型训练速度、显存占用上有一定的优势。例如,YOLOv3的训练速度快于其他框架,在Tesla V100 16GB环境下,Mask-RCNN(ResNet50)可以单卡Batch Size可以达到4 (甚至到5)。

飞桨目标检测库github链接如下:

https://github.com/PaddlePaddle/PaddleDetection

04

快速上手

COCO数据集

Objects365数据集和COCO数据集格式相同,在这里主要使用COCO数据集进行介绍

克隆项目

克隆项目并进入项目文件夹。

代码语言:javascript
复制
git clone https://github.com/PaddlePaddle/PaddleDetection.git
cd PaddleDetection
下载数据

运行下载数据的脚本。

代码语言:javascript
复制
python dataset/coco/download_coco.py

下载并解压完成之后,数据目录结构如下:

dataset/coco/

├── annotations

│ ├── instances_train2014.json

│ ├── instances_train2017.json

│ ├── instances_val2014.json

│ ├── instances_val2017.json

| ...

├── train2017

│ ├── 000000000009.jpg

│ ├── 000000580008.jpg

| ...

├── val2017

│ ├── 000000000139.jpg

│ ├── 000000000285.jpg

| ...

模型训练
代码语言:javascript
复制
python -u tools/train.py -c configs/dcn/cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.yml -d ./dataset/coco/

注意:该基线模型需要很大的GPU显存,因此在训练时需要保证GPU显存足够(建议显存至少为22G),如果显存大小不够,建议调整训练的最大尺度(默认配置中为1800)。

单张图片预测

首先需要下载COCO的预训练模型并解压。

代码语言:javascript
复制
wget https://paddlemodels.bj.bcebos.com/object_detection/cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.tar
tar -xf cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.tar

加载模型和配置文件,指定待检测的图像,进行预测。

代码语言:javascript
复制
python -u tools/infer.py -c configs/dcn/cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.yml -o weights=./cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms/--infer_img=./demo/000000570688.jpg

可以在output文件夹中查看检测结果。

模型评估
代码语言:javascript
复制
python -u tools/eval.py -c configs/dcn/cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.yml -o weights=./cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms/-d ./dataset/coco/

OIDV5数据集

OIDV5数据集与COCO格式不同,目前仅支持单张图片预测。

单张图片预测

首先需要下载OIDV5的预训练模型。

代码语言:javascript
复制
wget https://paddlemodels.bj.bcebos.com/object_detection/oidv5_cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.tar
tar -xf oidv5_cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.tar

加载模型和配置文件,对单张图片进行预测。

代码语言:javascript
复制
python -u tools/infer.py -cconfigs/oidv5/cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms.yml -o weights=./oidv5_cascade_rcnn_cls_aware_r200_vd_fpn_dcnv2_nonlocal_softnms/ --infer_img=./demo/000000570688.jpg

检测结果可以在output文件夹中查看。

想与更多的深度学习开发者交流,请加入飞桨官方QQ群:796771754。

如果您想详细了解更多飞桨PaddlePaddle的相关内容,请参阅以下文档。

官网地址:

https://www.paddlepaddle.org.cn/

项目地址:

PaddleDetection:https://github.com/PaddlePaddle/PaddleDetection

参考文献及项目地址:

[1] https://www.kaggle.com/c/open-images-2019-object-detection/

[2] https://github.com/PaddlePaddle/PaddleDetection

[3] https://storage.googleapis.com/openimages/web/factsfigures.html

[4] Zhaowei Cai and Nuno Vasconcelos.CascadeR-CNN: Delving into High Quality Object Detection. arXiv:1712.00726[cs], Dec. 2017. arXiv: 1712.00726.

[5] Tsung-Yi Lin, Piotr Dolla ́r, Ross B.Girshick, Kaiming He, Bharath Hariharan, and Serge J. Belongie. Feature pyramidnetworks for object detection. CoRR, abs/1612.03144, 2016.

[6] Xizhou Zhu, Han Hu, Stephen Lin, andJifeng Dai. Deformable convnets v2: More deformable, better results. CoRR,abs/1811.11168, 2018.

[7] Xiaolong Wang, Ross B. Girshick,Abhinav Gupta, and Kaiming He. Non-local neural networks. CoRR, abs/1711.07971,2017.

[8] Kaiming He, Xiangyu Zhang, ShaoqingRen, and Jian Sun. Deep residual learning for image recognition. CoRR,abs/1512.03385, 2015.

[9] Tong He, Zhi Zhang, Hang Zhang,Zhongyue Zhang, Junyuan Xie, and Mu Li. Bag of tricks for image classificationwith convolutional neural networks. CoRR, abs/1812.01187, 2018.

[10] Jiangmiao Pang, Kai Chen, JianpingShi, Huajun Feng, Wanli Ouyang, and Dahua Lin. Libra R-CNN: towards balancedlearning for object detection. CoRR, abs/1904.02701, 2019.

[11] Objects365 Dataset.https://www.objects365.org/overview.html.

[12] Navaneeth Bodla, Bharat Singh, RamaChellappa, and Larry S. Davis. Improving object detection with one line ofcode. CoRR, abs/1704.04503, 2017.

[13] COCO - Common Objects in Context.http:// cocodataset.org/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标检测是计算机视觉领域中的核心任务。Open Images Dataset V5(OIDV5)是目前规模最大的目标检测公开数据集[1]。基于飞桨(PaddlePaddle)的PaddleDetection目标检测模型库[2],百度研发了大规模图像目标检测模型MSF-DET (Multi-Strategy Fused Detection framework),是Google举办的Open Images Dataset V5 (OIDV5) 2019目标检测比赛中的最好单模型,并且在计算机视觉领域的顶级学术会议ICCV 2019上进行技术分享。
    • 比赛介绍
      • MSF-DET模型结构
        • 飞桨目标检测库介绍
          • 快速上手
            • COCO数据集
            • OIDV5数据集
        相关产品与服务
        GPU 云服务器
        GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档