Skip to content

Commit b1cbe13

Browse files
authored
Merge pull request #758 from PaddlePaddle/dygraph
merge dygraph to release/2.0-rc
2 parents a5b9876 + 860e93b commit b1cbe13

40 files changed

+709
-306
lines changed

README.md

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,123 @@
1-
# PaddleX
1+
# PaddleX全面升级动态图,2.0.0-rc发布!
22

3-
Dygraph
3+
> 原版本代码分支在[release/1.3](https://github.com/PaddlePaddle/PaddleX/tree/release/1.3),也可以通过pip安装1.3.10版本进行使用。
4+
5+
6+
<p align="center">
7+
<img src="./docs/gui/images/paddlex.png" width="360" height ="55" alt="PaddleX" align="middle" />
8+
</p>
9+
<p align= "center"> PaddleX -- 飞桨全流程开发工具,以低代码的形式支持开发者快速实现产业实际项目落地 </p>
10+
11+
[![License](https://img.shields.io/badge/license-Apache%202-red.svg)](LICENSE) [![Version](https://img.shields.io/github/release/PaddlePaddle/PaddleX.svg)](https://github.com/PaddlePaddle/PaddleX/releases) ![python version](https://img.shields.io/badge/python-3.6+-orange.svg) ![support os](https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-yellow.svg)
12+
![QQGroup](https://img.shields.io/badge/QQ_Group-1045148026-52B6EF?style=social&logo=tencent-qq&logoColor=000&logoWidth=20)
13+
14+
:hugs: PaddleX 集成飞桨智能视觉领域**图像分类****目标检测****语义分割****实例分割**任务能力,将深度学习开发全流程从**数据准备****模型训练与优化****多端部署**端到端打通,并提供**统一任务API接口****图形化开发界面Demo**。开发者无需分别安装不同套件,以**低代码**的形式即可快速完成飞桨全流程开发。
15+
16+
:factory: **PaddleX** 经过**质检****安防****巡检****遥感****零售****医疗**等十多个行业实际应用场景验证,沉淀产业实际经验,**并提供丰富的案例实践教程**,全程助力开发者产业实践落地。
17+
18+
19+
20+
:heart:**您可以前往 [完整PaddleX在线使用文档目录](https://paddlex.readthedocs.io/zh_CN/develop/index.html) 查看完整*Read the Doc* 格式的文档,获得更好的阅读体验**:heart:
21+
22+
23+
24+
![](./docs/gui/images/paddlexoverview.png)
25+
26+
27+
28+
## 安装
29+
30+
**PaddleX提供三种开发模式,满足用户的不同需求:**
31+
32+
1. **Python开发模式:**
33+
34+
通过简洁易懂的Python API,在兼顾功能全面性、开发灵活性、集成方便性的基础上,给开发者最流畅的深度学习开发体验。<br>
35+
36+
**前置依赖**
37+
> - paddlepaddle == 2.1.0
38+
> - python >= 3.6
39+
> - cython
40+
> - pycocotools
41+
42+
```
43+
pip install paddlex==2.0.0rc -i https://mirror.baidu.com/pypi/simple
44+
```
45+
46+
47+
2. **Padlde GUI模式:**
48+
49+
无代码开发的可视化客户端,应用Paddle API实现,使开发者快速进行产业项目验证,并为用户开发自有深度学习软件/应用提供参照。
50+
51+
- 前往[PaddleX官网](https://www.paddlepaddle.org.cn/paddle/paddlex),申请下载PaddleX GUI一键绿色安装包。
52+
53+
- 前往[PaddleX GUI使用教程](./docs/gui/how_to_use.md)了解PaddleX GUI使用详情。
54+
55+
- [PaddleX GUI安装环境说明](./docs/gui/download.md)
56+
57+
3. **PaddleX Restful:**
58+
使用基于RESTful API开发的GUI与Web Demo实现远程的深度学习全流程开发;同时开发者也可以基于RESTful API开发个性化的可视化界面
59+
- 前往[PaddleX RESTful API使用教程](./docs/gui/restful/introduction.md)
60+
61+
62+
## 使用教程
63+
64+
- [模型训练教程](https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/train)
65+
- [模型剪裁教程](https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/slim/prune)
66+
67+
68+
## :question:[FAQ](./docs/gui/faq.md):question:
69+
70+
## 交流与反馈
71+
72+
- 项目官网:https://www.paddlepaddle.org.cn/paddle/paddlex
73+
74+
- PaddleX用户交流群:957286141 (手机QQ扫描如下二维码快速加入)
75+
76+
<p align="center">
77+
<img src="./docs/gui/images/QR2.jpg" width="250" height ="360" alt="QR" align="middle" />
78+
</p>
79+
80+
81+
82+
## 更新日志
83+
84+
- **2021.05.19 v2.0.0-rc**
85+
86+
* 全面支持飞桨2.0动态图,更易用的开发模式
87+
* 目标检测任务新增[PP-YOLOv2](https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/tutorials/train/object_detection/ppyolov2.py), COCO test数据集精度达到49.5%、V100预测速度达到68.9 FPS
88+
* 目标检测任务新增4.2MB的超轻量级模型[PP-YOLO tiny](https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/tutorials/train/object_detection/ppyolotiny.py)
89+
* 语义分割任务新增实时分割模型[BiSeNetV2](https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/tutorials/train/semantic_segmentation/bisenetv2.py)
90+
* C++部署模块全面升级
91+
* PaddleInference部署适配2.0预测库[(使用文档)](https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/deploy/cpp)
92+
* 支持飞桨[PaddleDetection]( https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/deploy/cpp/docs/models/paddledetection.md)[PaddleSeg]( https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/deploy/cpp/docs/models/paddleseg.md)[PaddleClas](https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/deploy/cpp/docs/models/paddleclas.md)以及PaddleX的模型部署
93+
* 新增基于PaddleInference的GPU多卡预测[(使用文档)](https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/deploy/cpp/docs/demo/multi_gpu_model_infer.md)
94+
* GPU部署新增基于ONNX的的TensorRT高性能加速引擎部署方式[(使用文档)]()
95+
* GPU部署新增基于ONNX的Triton服务化部署方式[(使用文档)](https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/deploy/cpp/docs/compile/triton/docker.md)
96+
97+
98+
- **2020.09.07 v1.2.0**
99+
100+
新增产业最实用目标检测模型PP-YOLO,FasterRCNN、MaskRCNN、YOLOv3、DeepLabv3p等模型新增内置COCO数据集预训练模型,适用于小模型精调。新增多种Backbone,优化体积及预测速度。优化OpenVINO、PaddleLite Android、服务端C++预测部署方案,新增树莓派部署方案等。
101+
102+
- **2020.07.12 v1.1.0**
103+
104+
新增人像分割、工业标记读数案例。模型新增HRNet、FastSCNN、FasterRCNN,实例分割MaskRCNN新增Backbone HRNet。集成X2Paddle,PaddleX所有分类模型和语义分割模型支持导出为ONNX协议。新增模型加密Windows平台支持。新增Jetson、Paddle Lite模型部署预测方案。
105+
106+
- **2020.05.20 v1.0.0**
107+
108+
新增C++和Python部署,模型加密部署,分类模型OpenVINO部署。新增模型可解释性接口
109+
110+
- **2020.05.17 v0.1.8**
111+
112+
新增EasyData平台数据标注格式,支持imgaug数据增强库的pixel-level算子
113+
114+
## :hugs: 贡献代码:hugs:
115+
116+
我们非常欢迎您为PaddleX贡献代码或者提供使用建议。如果您可以修复某个issue或者增加一个新功能,欢迎给我们提交Pull Requests。
117+
118+
### 开发者贡献项目
119+
120+
* [工业相机实时目标检测GUI](https://github.com/xmy0916/SoftwareofIndustrialCameraUsePaddle)
121+
(windows系统,基于pyqt5开发)
122+
* [工业相机实时目标检测GUI](https://github.com/LiKangyuLKY/PaddleXCsharp)
123+
(windows系统,基于C#开发)

T

Whitespace-only changes.

paddlex/cls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import sys
1616
message = 'Your running script needs PaddleX<2.0.0, please refer to {} to solve this issue.'.format(
17-
'https://github.com/PaddlePaddle/PaddleX/tree/dygraph/tutorials/train#%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0'
17+
'https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/train#%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7'
1818
)
1919

2020

paddlex/cv/models/base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,10 @@ def analyze_sensitivity(self,
363363
save_dir(str, optional): The directory to save sensitivity file of the model. Defaults to 'output'.
364364
365365
"""
366+
if self.__class__.__name__ in ['FasterRCNN', 'MaskRCNN']:
367+
raise Exception("{} does not support pruning currently!".format(
368+
self.__class__.__name__))
369+
366370
assert criterion in ['l1_norm', 'fpgm'], \
367371
"Pruning criterion {} is not supported. Please choose from ['l1_norm', 'fpgm']"
368372
arrange_transforms(

paddlex/cv/models/detector.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import collections
1818
import copy
19+
import os
1920
import os.path as osp
2021

2122
from paddle.io import DistributedBatchSampler

paddlex/cv/transforms/operators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ class RandomResizeByShort(Transform):
445445
Attention:If interp is 'RANDOM', the interpolation method will be chose randomly.
446446
447447
Args:
448-
short_sizes (int): Target size of the shorter side of the image(s).
448+
short_sizes (List[int]): Target size of the shorter side of the image(s).
449449
max_size (int, optional): The upper bound of longer side of the image(s). If max_size is -1, no upper bound is applied. Defaults to -1.
450450
interp ({'NEAREST', 'LINEAR', 'CUBIC', 'AREA', 'LANCZOS4', 'RANDOM'}, optional): Interpolation method of resize. Defaults to 'LINEAR'.
451451

paddlex/det.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import sys
1616
message = 'Your running script needs PaddleX<2.0.0, please refer to {} to solve this issue.'.format(
17-
'https://github.com/PaddlePaddle/PaddleX/tree/dygraph/tutorials/train#%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0'
17+
'https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/train#%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7'
1818
)
1919

2020

paddlex/seg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import sys
1616
message = 'Your running script needs PaddleX<2.0.0, please refer to {} to solve this issue.'.format(
17-
'https://github.com/PaddlePaddle/PaddleX/tree/dygraph/tutorials/train#%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0'
17+
'https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/train#%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7'
1818
)
1919

2020

tutorials/slim/prune/image_classification/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ python mobilenetv2_prune.py
1818

1919
`mobilenetv2_prune.py`中主要执行了以下API:
2020

21-
step 1: 分析模型各层参数对于不同的模型FLOPs减小比例下的敏感度
21+
step 1: 分析模型各层参数在不同的剪裁比例下的敏感度
2222

2323
主要由两个API完成:
2424

tutorials/slim/prune/image_classification/mobilenetv2_prune.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import paddlex as pdx
2-
from paddlex import transforms
2+
from paddlex import transforms as T
33

4+
# 下载和解压蔬菜分类数据集
45
veg_dataset = 'https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz'
56
pdx.utils.download_and_decompress(veg_dataset, path='./')
67

7-
train_transforms = transforms.Compose([
8-
transforms.RandomCrop(crop_size=224), transforms.RandomHorizontalFlip(),
9-
transforms.Normalize()
10-
])
8+
# 定义训练和验证时的transforms
9+
# API说明https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/paddlex/cv/transforms/operators.py
10+
train_transforms = T.Compose(
11+
[T.RandomCrop(crop_size=224), T.RandomHorizontalFlip(), T.Normalize()])
1112

12-
eval_transforms = transforms.Compose([
13-
transforms.ResizeByShort(short_size=256),
14-
transforms.CenterCrop(crop_size=224), transforms.Normalize()
13+
eval_transforms = T.Compose([
14+
T.ResizeByShort(short_size=256), T.CenterCrop(crop_size=224), T.Normalize()
1515
])
1616

17+
# 定义训练和验证所用的数据集
18+
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/paddlex/cv/datasets/imagenet.py#L21
1719
train_dataset = pdx.datasets.ImageNet(
1820
data_dir='vegetables_cls',
1921
file_list='vegetables_cls/train_list.txt',
@@ -27,16 +29,21 @@
2729
label_list='vegetables_cls/labels.txt',
2830
transforms=eval_transforms)
2931

32+
# 加载模型
3033
model = pdx.load_model('output/mobilenet_v2/best_model')
3134

32-
# Step 1/3: Analyze the sensitivities of parameters
35+
# Step 1/3: 分析模型各层参数在不同的剪裁比例下的敏感度
36+
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/95c53dec89ab0f3769330fa445c6d9213986ca5f/paddlex/cv/models/base.py#L352
3337
model.analyze_sensitivity(
3438
dataset=eval_dataset, save_dir='output/mobilenet_v2/prune')
3539

36-
# Step 2/3: Prune the model by the specified ratio of FLOPs to be pruned
40+
# Step 2/3: 根据选择的FLOPs减小比例对模型进行剪裁
41+
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/95c53dec89ab0f3769330fa445c6d9213986ca5f/paddlex/cv/models/base.py#L394
3742
model.prune(pruned_flops=.2)
3843

39-
# Step 3/3: Retrain the model
44+
# Step 3/3: 对剪裁后的模型重新训练
45+
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/95c53dec89ab0f3769330fa445c6d9213986ca5f/paddlex/cv/models/classifier.py#L153
46+
# 各参数介绍与调整说明:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.html
4047
model.train(
4148
num_epochs=10,
4249
train_dataset=train_dataset,

0 commit comments

Comments
 (0)