diff --git a/README.md b/README.md index 322909ea6f0b36a17a3c5d65ab2d42e30cd13782..105d0c6b256089dd44ff49457d3d63ebf5b80761 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ 特性: +- 模型丰富: + + PaddleDetection提供了丰富的模型,包含目标检测、实例分割、人脸检测等100+个预训练模型,涵盖多种数据集竞赛冠军方案、适合云端/边缘端设备部署的检测方案。 + - 易部署: PaddleDetection的模型中使用的核心算子均通过C++或CUDA实现,同时基于PaddlePaddle的高性能推理引擎可以方便地部署在多种硬件平台上。 @@ -27,6 +31,7 @@ 基于PaddlePaddle框架的高性能内核,在模型训练速度、显存占用上有一定的优势。例如,YOLOv3的训练速度快于其他框架,在Tesla V100 16GB环境下,Mask-RCNN(ResNet50)可以单卡Batch Size可以达到4 (甚至到5)。 + 支持的模型结构: | | ResNet | ResNet-vd [1](#vd) | ResNeXt-vd | SENet | MobileNet | HRNet | Res2Net | @@ -98,8 +103,8 @@ - [数据预处理及自定义数据集](docs/advanced_tutorials/READER.md) - [搭建模型步骤](docs/advanced_tutorials/MODEL_TECHNICAL.md) - [配置模块设计和介绍](docs/advanced_tutorials/CONFIG_cn.md) -- [IPython Notebook demo](demo/mask_rcnn_demo.ipynb) - [迁移学习教程](docs/advanced_tutorials/TRANSFER_LEARNING_cn.md) +- [IPython Notebook demo](demo/mask_rcnn_demo.ipynb) - [模型压缩](slim) - [压缩benchmark](slim) - [量化](slim/quantization) @@ -130,8 +135,7 @@ 本项目的发布受[Apache 2.0 license](LICENSE)许可认证。 ## 版本更新 -v0.3.0版本已经在`05/2020`发布,增加anchor-free、EfficientDet和YOLOv4等多个模型,推出移动端、服务器端实用高效多个模型,重构预测部署功能,提升易用性,修复已知诸多bug等, -详细内容请参考[版本更新文档](docs/CHANGELOG.md)。 +v0.3.0版本已经在`05/2020`发布,增加Anchor-free、EfficientDet和YOLOv4等多个模型,推出移动端、服务器端实用高效多个模型,例如移动端将YOLOv3-MobileNetv3加速3.5倍,服务器端优化两阶段模型,速度和精度具备较高性价比。重构预测部署功能,提升易用性,修复已知诸多bug等,详细内容请参考[版本更新文档](docs/CHANGELOG.md)。 ## 如何贡献代码 diff --git a/README_en.md b/README_en.md index dfc351deb89b26b571280fb440f3f038c2597f99..8b7bdb692df838ca73e030888a4bbd68f2c6b68d 100644 --- a/README_en.md +++ b/README_en.md @@ -21,6 +21,12 @@ and multi-platform deployment. Features: +- Rich models: + + PaddleDetection provides rich of models, including 100+ pre-trained models +such as object detection, instance segmentation, face detection etc. It covers +the champion models, the practical detection models for cloud and edge device. + - Production Ready: Key operations are implemented in C++ and CUDA, together with PaddlePaddle's @@ -111,8 +117,8 @@ The following is the relationship between COCO mAP and FPS on Tesla V100 of repr - [Guide to preprocess pipeline and custom dataset](docs/advanced_tutorials/READER.md) - [Models technical](docs/advanced_tutorials/MODEL_TECHNICAL.md) - [Introduction to the configuration workflow](docs/advanced_tutorials/CONFIG.md) -- [IPython Notebook demo](demo/mask_rcnn_demo.ipynb) - [Transfer learning document](docs/advanced_tutorials/TRANSFER_LEARNING.md) +- [IPython Notebook demo](demo/mask_rcnn_demo.ipynb) - [Model compression](slim) - [Model compression benchmark](slim) - [Quantization](slim/quantization) diff --git a/deploy/README.md b/deploy/README.md index da01063edd69cc624562da65a854eeb9ad394155..cdf95c42da37b209381470525e11ac0cab7e82f6 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -3,7 +3,7 @@ `PaddleDetection`目前支持使用`Python`和`C++`部署在`Windows` 和`Linux` 上运行。 ## 模型导出 -训练得到一个满足要求的模型后,如果想要将该模型接入到C++预测库,需要通过`tools/export_model.py`导出该模型。 +训练得到一个满足要求的模型后,如果想要将该模型接入到C++服务器端预测库或移动端预测库,需要通过`tools/export_model.py`导出该模型。 - [导出教程](../docs/advanced_tutorials/deploy/EXPORT_MODEL.md) @@ -20,3 +20,4 @@ yolov3_darknet # 模型目录 ## 预测部署 - [1. Python预测(支持 Linux 和 Windows)](./python/) - [2. C++预测(支持 Linux 和 Windows)](./cpp/) +- [3. 移动端部署参考Paddle-Lite文档](https://paddle-lite.readthedocs.io/zh/latest/) diff --git a/deploy/python/README.md b/deploy/python/README.md index 5961ad4975abb7530775dec1328b24d6d9a72392..a69b32fe50ed63375c021a738a433260efdb9a05 100644 --- a/deploy/python/README.md +++ b/deploy/python/README.md @@ -1,4 +1,8 @@ # Python端预测部署 + +Python预测可以使用`tools/infer.py`,此种方式依赖PaddleDetection源码;也可以使用本篇教程预测方式,先将模型导出,使用一个独立的文件进行预测。 + + 本篇教程使用AnalysisPredictor对[导出模型](../../docs/advanced_tutorials/deploy/EXPORT_MODEL.md)进行高性能预测。 在PaddlePaddle中预测引擎和训练引擎底层有着不同的优化方法, 下面列出了两种不同的预测方式。Executor同时支持训练和预测,AnalysisPredictor则专门针对推理进行了优化,是基于[C++预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/native_infer.html)的Python接口,该引擎可以对模型进行多项图优化,减少不必要的内存拷贝。如果用户在部署已训练模型的过程中对性能有较高的要求,我们提供了独立于PaddleDetection的预测脚本,方便用户直接集成部署。 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f8f2c2455276f9212249014775a0a935fc821717..f3d10e7d2d114d118e2286d92d7d82df20a5cff8 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -5,16 +5,16 @@ ### v0.3.0(05/2020) - 模型丰富度提升: - 添加Efficientdet-D0模型,速度与精度优于竞品。 - - 添加anchor-free模型FCOS,精度优于竞品。 - - 新增yolov4预测模型,精度对齐竞品;新增yolov4在pascal voc数据集上finetune模型,精度达到85.5%。 + - 新增YOLOv4预测模型,精度对齐竞品;新增YOLOv4在Pascal VOC数据集上微调训练,精度达到85.5%。 - YOLOv3新增MobileNetV3骨干网络,COCO数据集精度达到31.6%。 - - 添加anchor-free模型CornernetSqueeze,精度优于竞品, 优化模型的COCO数据集精度38.2%, +3.7%,速度较yolo_v3 darknet快5%。 - - 添加服务器端实用目标检测模型cascade_rcnn_resnet50_vd_fpn_dcn,速度与精度优于竞品EfficientDet。 + - 添加Anchor-free模型FCOS,精度优于竞品。 + - 添加Anchor-free模型CornernetSqueeze,精度优于竞品,优化模型的COCO数据集精度38.2%, +3.7%,速度较YOLOv3-Darknet53快5%。 + - 添加服务器端实用目标检测模型CascadeRCNN-ResNet50vd模型,速度与精度优于竞品EfficientDet。 - 移动端推出3种模型: - - SSDLite系列模型:ssdlite-mobilenet_v3 large模型与ssdlite-mobilenet_v3 small模型,精度优于竞品。ssdlite-mobilenet_v1模型,精度优于竞品。 - - yolo v3:yolov3_mobilenet_v3裁剪模型,速度和精度均领先于竞品的SSDLite模型。 - - Faster RCNN:cascade_rcnn_mobilenet_v3 large_fpn推出输入图像分别为320x320和640x640的模型,速度与精度具有较高性价比。 + - SSDLite系列模型:SSDLite-Mobilenetv3 small/large模型,精度优于竞品。 + - YOLOv3移动端方案: YOLOv3-MobileNetv3模型压缩后加速3.5倍,速度和精度均领先于竞品的SSDLite模型。 + - RCNN移动端方案:CascadeRCNN-MobileNetv3经过系列优化, 推出输入图像分别为320x320和640x640的模型,速度与精度具有较高性价比。 - 预测部署重构: - 新增Python预测部署流程,支持RCNN,YOLO,SSD,RetinaNet,人脸系列模型,支持视频预测。 diff --git a/docs/advanced_tutorials/TRANSFER_LEARNING_cn.md b/docs/advanced_tutorials/TRANSFER_LEARNING_cn.md index dd5e525f1095211d00e83f03c418e3f27ca66037..9664f5d35093afdce09d3986945ae40809e6228c 100644 --- a/docs/advanced_tutorials/TRANSFER_LEARNING_cn.md +++ b/docs/advanced_tutorials/TRANSFER_LEARNING_cn.md @@ -2,7 +2,11 @@ 迁移学习为利用已有知识,对新知识进行学习。例如利用ImageNet分类预训练模型做初始化来训练检测模型,利用在COCO数据集上的检测模型做初始化来训练基于PascalVOC数据集的检测模型。 -在进行迁移学习时,由于会使用不同的数据集,数据类别数与COCO/VOC数据类别不同,导致在加载开源模型(如COCO预训练模型)时,与类别数相关的权重(例如分类模块的fc层)会出现维度不匹配的问题;另外,如果需要结构更加复杂的模型,需要对已有开源模型结构进行调整,对应权重也需要选择性加载。因此,需要检测库能够指定参数字段,在加载模型时不加载匹配的权重。 + +### 选择数据 + + +在进行迁移学习时,由于会使用不同的数据集,数据类别数与COCO/VOC数据类别不同,导致在加载开源模型(如COCO预训练模型)时,与类别数相关的权重(例如分类模块的fc层)会出现维度不匹配的问题;另外,如果需要结构更加复杂的模型,需要对已有开源模型结构进行调整,对应权重也需要选择性加载。因此,需要在加载模型时不加载不能匹配的权重。 在迁移学习中,对预训练模型进行选择性加载,支持如下两种迁移学习方式: diff --git a/docs/tutorials/GETTING_STARTED_cn.md b/docs/tutorials/GETTING_STARTED_cn.md index 47751bb49571084febe74cc31153a93155ee94b9..ea63d2567c43043b11a6d150edd3606d3d21e900 100644 --- a/docs/tutorials/GETTING_STARTED_cn.md +++ b/docs/tutorials/GETTING_STARTED_cn.md @@ -3,9 +3,9 @@ 关于配置运行环境,请参考[安装指南](INSTALL_cn.md) -## 训练/评估/推断 +## 训练/评估/预测 -PaddleDetection提供了训练/评估/推断三个功能的使用脚本,支持通过不同可选参数实现特定功能 +PaddleDetection提供了训练/评估/预测,支持通过不同可选参数实现特定功能 ```bash # 设置PYTHONPATH路径 @@ -16,7 +16,7 @@ python tools/train.py -c configs/faster_rcnn_r50_1x.yml # GPU评估 export CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c configs/faster_rcnn_r50_1x.yml -# 推断 +# 预测 python tools/infer.py -c configs/faster_rcnn_r50_1x.yml --infer_img=demo/000000570688.jpg ``` @@ -34,10 +34,10 @@ python tools/infer.py -c configs/faster_rcnn_r50_1x.yml --infer_img=demo/0000005 | --fp16 | train | 是否使用混合精度训练模式 | False | 需使用GPU训练 | | --loss_scale | train | 设置混合精度训练模式中损失值的缩放比例 | 8.0 | 需先开启`--fp16`后使用 | | --json_eval | eval | 是否通过已存在的bbox.json或者mask.json进行评估 | False | json文件路径在`--output_eval`中设置 | -| --output_dir | infer | 输出推断后可视化文件 | `./output` | `--output_dir output` | +| --output_dir | infer | 输出预测后可视化文件 | `./output` | `--output_dir output` | | --draw_threshold | infer | 可视化时分数阈值 | 0.5 | `--draw_threshold 0.7` | -| --infer_dir | infer | 用于推断的图片文件夹路径 | None | | -| --infer_img | infer | 用于推断的图片路径 | None | 相较于`--infer_dir`具有更高优先级 | +| --infer_dir | infer | 用于预测的图片文件夹路径 | None | | +| --infer_img | infer | 用于预测的图片路径 | None | 相较于`--infer_dir`具有更高优先级 | | --use_tb | train/infer | 是否使用[tb-paddle](https://github.com/linshuliang/tb-paddle)记录数据,进而在TensorBoard中显示 | False | | | --tb\_log_dir | train/infer | 指定 tb-paddle 记录数据的存储路径 | train:`tb_log_dir/scalar` infer: `tb_log_dir/image` | | @@ -145,9 +145,9 @@ python -m paddle.distributed.launch --selected_gpus 0,1,2,3,4,5,6,7 tools/train. - R-CNN和SSD模型目前暂不支持多GPU评估,将在后续版本支持 -### 模型推断 +### 模型预测 -- 设置输出路径 && 设置推断阈值 +- 设置输出路径 && 设置预测阈值 ```bash export CUDA_VISIBLE_DEVICES=0 @@ -160,4 +160,6 @@ python -m paddle.distributed.launch --selected_gpus 0,1,2,3,4,5,6,7 tools/train. `--draw_threshold` 是个可选参数. 根据 [NMS](https://ieeexplore.ieee.org/document/1699659) 的计算, - 不同阈值会产生不同的结果。如果用户需要对自定义路径的模型进行推断,可以设置`-o weights`指定模型路径。 + 不同阈值会产生不同的结果。如果用户需要对自定义路径的模型进行预测,可以设置`-o weights`指定模型路径。 + + 此预测过程依赖PaddleDetection源码,如果您想使用C++进行服务器端预测、或在移动端预测、或使用PaddleServing部署、或独立于PaddleDetection源码使用Python预测可以参考[模型导出教程](../advanced_tutorials/deploy/EXPORT_MODEL.md)和推理部署。