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

语言: CN / TW / HK

目标检测是计算机视觉领域中的核心任务。 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数据集进行介绍

克隆项目

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

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

cd PaddleDetection

下载数据

运行下载数据的脚本。

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

|  ...

模型训练

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的预训练模型并解压。

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

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

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文件夹中查看检测结果。

模型评估

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的预训练模型。

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

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

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/Paddle Detection

[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/

分享到: