目标检测是机器视觉领域的核心问题之一。7月3日百度AI开发者大会,飞桨核心框架Paddle Fluid v1.5宣布开源了PaddleDetection物体检测统一框架,用户可以非常方便、快速的搭建出各种检测框架,构建强大的各类应用。
PaddleDetection物体检测统一框架,覆盖主流的检测算法,即具备高精度模型、也具备高速推理模型,并提供丰富的预训练模型,具有工业化、模块化、高性能的优势。
•工业化:结合飞桨核心框架的高速推理引擎,训练到部署无缝衔接
•模块化:提供模块化设计,模型网络结构和数据处理均可定制
•高性能:基于高效的核心框架,训练速度和显存占用上有一定的优势,例如,YOLO v3训练速度相比同类框架快1.6倍。
支持的模型与主干网络体系
• 模型
* Faster-RCNN (支持FPN):创造性地采用卷积网络自行产生建议框,并且和目标检测网络共享卷积网络,建议框数目减少,质量提高。
* Mask-RCNN (支持FPN):经典的两阶段框架,在Faster R-CNN模型基础上添加分割分支,得到掩码结果,实现了掩码和类别预测关系的解藕,可得到像素级别的检测结果。
* Cascade-RCNN:在训练过程中选取不同的IoU阈值,训练多个级联的检测器。在具有挑战性的COCO数据集上,作为单模型对象检测器表现优异。
* RetinaNet:经典的一阶段框架,由ResNet主干网络、FPN结构、和两个分别用于回归物体位置和预测物体类别的子网络组成。在训练过程中使用Focal Loss,解决了传统一阶段检测器存在前景背景类别不平衡的问题,进一步提高了一阶段检测器的精度。
* YOLO v3:速度和精度均衡的目标检测网络,相比于原作者DarkNet中的YOLO v3实现,飞桨的实现参考了论文「Bag of Tricks for Image Classification with Convolutional Neural Networks 」增加了mixup,label_smooth等处理,精度(mAP(0.5:0.95))相比于原作者提高了4.7个绝对百分点,在此基础上加入synchronize batch normalization, 最终精度相比原作者提高5.9个绝对百分点。
* SSD:很好的继承了MobileNet预测速度快,易于部署的特点,能够很好的在多种设备上完成图像目标检测任务
• 主干网络
ResNet、ResNet-VD、ResNeXt, ResNeXt-VD,SENet、MobileNet、DarkNet
预训练模型效果
本次PaddleDetection总共开源20+个预训练模型,不仅开源常用主干网络的基线模型,并且基于ResNet改进版的模型,几乎在不增加计算量的情况下,在COCO数据集上,相比基线模型精度提升1%左右,如下表所示。Yolo v3也持续发布更轻量的主干网络模型。
安装好飞桨环境后,可以下载预训练模型快速验证推理效果。 同时,PaddleDetection也提供了Jupyter Notebook的推理示例程序,参考:
python tools/infer.py -c configs/mask_rcnn_r50_1x.yml \
-o weights=https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_1x.tar \
--infer_img=demo/000000570688.jpg
自动生成配置文件
PaddleDetection从自动化和静态分析的原则出发,采用了一种用户友好、 易于维护和扩展的配置设计,避免对配置的检查并不严格造成的拼写错误或者遗漏的配置项造成训练过程中的严重错误,将问题提前规避。利用Python的反射机制,PaddleDection的配置系统从Python类的构造函数抽取多种信息, 如参数名、初始值、参数注释、数据类型来作为配置规则,便于设计的模块化,提升可测试性及扩展性。
为了方便用户配置,PaddleDection提供了configure工具,为用户提供以下功能:
• 预定义好各个模块,根据给出的模块列表生成配置文件,默认生成完整配置。如果指定参数,也可以生成最小配置,即省略所有默认配置项。
• 检查配置文件中的缺少或者多余的配置项以及依赖缺失。
• 显示指定模块的帮助信息,如描述,配置项,配置文件模板及命令行示例。
• 列出当前已注册的模块
灵活易用的数据处理
• 支持多种数据源,方便的数据源扩展能力。
• 可定制的、可插拔的图像预处理功能,可快速构建复杂预处理流程。
• 多种数据预处理加速策略 ,具备基于共享内存多进程加速能力。
数据是深度学习中最关键的一步,数据的量级和数据类型直接影响模型的训练结果。如何进行数据预处理也是各位开发者开始训练一个模型的第一步,PaddleDetection的数据处理模块用于加载数据并将其转换成适用于检测模型的训练、验证、测试所需要的格式。
PaddleDetection为用户提供可定制的、可插拔的图像预处理功能,即为用户针对不同的算法提供了缺省的数据预处理操作,也给用户预留了的灵活配置的接口,下面截取部分配置文件代码片段,可自由增添操作。
sample_transforms:
- !DecodeImage
to_rgb: true
with_mixup: false
- !RandomFlipImage
prob: 0.5
- !NormalizeImage
is_channel_first: false
is_scale: true
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
- !ResizeImage
max_size: 1333
target_size: 800
- !Permute
channel_first: true
to_bgr: false
项目地址:
https://github.com/PaddlePaddle/models/tree/v1.5/PaddleCV/PaddleDetection?fr=ai3
下载最新版本的Paddle Fluid v1.5,请查看以下链接:
http://www.paddlepaddle.org.cn?fr=ai3
最后给大家推荐一个GPU福利 - Tesla V100免费算力!配合PaddleHub能让模型原地起飞~欢迎扫码下方二维码申请: