Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
d174b1c2
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
d174b1c2
编写于
7月 12, 2022
作者:
Z
zhiboniu
提交者:
GitHub
7月 12, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update attr docs (#6404)
* update attr docs * update more * update docs
上级
b29aa30f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
108 addition
and
34 deletion
+108
-34
deploy/pipeline/docs/tutorials/attribute.md
deploy/pipeline/docs/tutorials/attribute.md
+7
-1
deploy/pipeline/docs/tutorials/attribute_en.md
deploy/pipeline/docs/tutorials/attribute_en.md
+7
-1
docs/advanced_tutorials/customization/attribute.md
docs/advanced_tutorials/customization/attribute.md
+41
-18
docs/advanced_tutorials/customization/mtmct.md
docs/advanced_tutorials/customization/mtmct.md
+53
-14
未找到文件。
deploy/pipeline/docs/tutorials/attribute.md
浏览文件 @
d174b1c2
...
@@ -28,7 +28,7 @@ ATTR: #模
...
@@ -28,7 +28,7 @@ ATTR: #模
enable: False #功能是否开启
enable: False #功能是否开启
```
```
2.
图片输入时,启动命令如下
2.
图片输入时,启动命令如下
(更多命令参数说明,请参考
[
快速开始-参数说明
](
./QUICK_STARTED.md#41-参数说明
)
)。
```
python
```
python
#单张图片
#单张图片
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
...
@@ -43,9 +43,15 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph
...
@@ -43,9 +43,15 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph
```
```
3.
视频输入时,启动命令如下
3.
视频输入时,启动命令如下
```
python
```
python
#单个视频文件
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
--
video_file
=
test_video
.
mp4
\
--
video_file
=
test_video
.
mp4
\
--
device
=
gpu
\
--
device
=
gpu
\
#视频文件夹
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
--
video_dir
=
test_videos
/
\
--
device
=
gpu
\
```
```
4.
若修改模型路径,有以下两种方式:
4.
若修改模型路径,有以下两种方式:
...
...
deploy/pipeline/docs/tutorials/attribute_en.md
浏览文件 @
d174b1c2
...
@@ -28,7 +28,7 @@ ATTR: #modul
...
@@ -28,7 +28,7 @@ ATTR: #modul
enable: False #whether to enable this model
enable: False #whether to enable this model
```
```
2.
When inputting the image, run the command as follows:
2.
When inputting the image, run the command as follows
(please refer to
[
QUICK_STARTED-Parameters
](
./QUICK_STARTED.md#41-参数说明
)
for more details)
:
```
python
```
python
#single image
#single image
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
...
@@ -43,9 +43,15 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph
...
@@ -43,9 +43,15 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph
```
```
3.
When inputting the video, run the command as follows:
3.
When inputting the video, run the command as follows:
```
python
```
python
#a single video file
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
--
video_file
=
test_video
.
mp4
\
--
video_file
=
test_video
.
mp4
\
--
device
=
gpu
\
--
device
=
gpu
\
#directory of videos
python
deploy
/
pipeline
/
pipeline
.
py
--
config
deploy
/
pipeline
/
config
/
infer_cfg_pphuman
.
yml
\
--
video_dir
=
test_videos
/
\
--
device
=
gpu
\
```
```
4.
If you want to change the model path, there are two methods:
4.
If you want to change the model path, there are two methods:
...
...
docs/advanced_tutorials/customization/attribute.md
浏览文件 @
d174b1c2
...
@@ -10,22 +10,25 @@
...
@@ -10,22 +10,25 @@
| Attribute | index | length |
| Attribute | index | length |
|:----------|:----------|:----------|
|:----------|:----------|:----------|
| 'Female' | [0] | 1 |
| 'Hat','Glasses' | [0, 1] | 2 |
| 'AgeOver60', 'Age18-60', 'AgeLess18' | [1, 2, 3] | 3 |
| 'ShortSleeve','LongSleeve','UpperStride','UpperLogo','UpperPlaid','UpperSplice' | [2, 3, 4, 5, 6, 7] | 6 |
| 'Front','Side','Back' | [4, 5, 6] | 3 |
| 'LowerStripe','LowerPattern','LongCoat','Trousers','Shorts','Skirt&Dress' | [8, 9, 10, 11, 12, 13] | 6 |
| 'Hat','Glasses' | [7, 8] | 2 |
| 'boots' | [14, ] | 1 |
| 'HandBag','ShoulderBag','Backpack','HoldObjectsInFront' | [9,10,11,12] | 4 |
| 'HandBag','ShoulderBag','Backpack','HoldObjectsInFront' | [15, 16, 17, 18] | 4 |
| 'ShortSleeve','LongSleeve','UpperStride','UpperLogo','UpperPlaid','UpperSplice' | [13,14,15,16,17,18] | 6 |
| 'AgeOver60', 'Age18-60', 'AgeLess18' | [19, 20, 21] | 3 |
| 'LowerStripe','LowerPattern','LongCoat','Trousers','Shorts','Skirt&Dress' | [19,20,21,22,23,24] | 6 |
| 'Female' | [22, ] | 1 |
| 'boots' | [25] | 1 |
| 'Front','Side','Back' | [23, 24, 25] | 3 |
举例:
举例:
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]
第一组,位置[0, 1]数值分别是[0, 1],表示'no hat'、'has glasses'。
第
一组,位置[0]数值是0,表示'female'
第
二组,位置[22, ]数值分别是[0, ], 表示gender属性是'male', 否则是'female'。
第
二组,位置[1,2,3]数值分别是 0、1、0, 表示'Age18-60'
第
三组,位置[23, 24, 25]数值分别是[0, 1, 0], 表示方向属性是侧面'side'。
其他组依次类推
其他组依次类推
...
@@ -39,11 +42,12 @@
...
@@ -39,11 +42,12 @@
1) 使用检测框,标注图片中每一个人的位置。
1) 使用检测框,标注图片中每一个人的位置。
2) 每一个检测框(对应每一个人),包含一组26位的属性值数组,数组的每一位以0或1表示。对应上述26个属性。例如,如果图片是'Female',则数组第
一位为0,如果满足'Age18-60',则位置[1,2,3]对应的数值是[0,1,0], 或者满足'AgeOver60',则相应数值为[1,0,
0].
2) 每一个检测框(对应每一个人),包含一组26位的属性值数组,数组的每一位以0或1表示。对应上述26个属性。例如,如果图片是'Female',则数组第
22位为0,如果满足'Age18-60',则位置[19, 20, 21]对应的数值是[0, 1, 0], 或者满足'AgeOver60',则相应数值为[1, 0,
0].
标注完成后利用检测框将每一个人截取成单人图,其图片与26位属性标注建立对应关系。也可先截成单人图再进行标注,效果相同。
标注完成后利用检测框将每一个人截取成单人图,其图片与26位属性标注建立对应关系。也可先截成单人图再进行标注,效果相同。
## 模型优化
## 模型训练
数据标注完成后,就可以拿来做模型的训练,完成自定义模型的优化工作。
数据标注完成后,就可以拿来做模型的训练,完成自定义模型的优化工作。
...
@@ -74,7 +78,7 @@ train.txt文件内为所有训练图片名称(相对于根路径的文件路
...
@@ -74,7 +78,7 @@ train.txt文件内为所有训练图片名称(相对于根路径的文件路
### 修改配置开始训练
### 修改配置开始训练
首先执行以下命令下载训练代码
:
首先执行以下命令下载训练代码
(更多环境问题请参考
[
Install_PaddleClas
](
https://github.com/PaddlePaddle/PaddleClas/blob/release/2.4/docs/en/installation/install_paddleclas_en.md
)
):
```
shell
```
shell
git clone https://github.com/PaddlePaddle/PaddleClas
git clone https://github.com/PaddlePaddle/PaddleClas
...
@@ -127,6 +131,22 @@ python3 tools/train.py \
...
@@ -127,6 +131,22 @@ python3 tools/train.py \
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml
```
```
训练完成后可以执行以下命令进行性能评估:
```
#多卡评估
export CUDA_VISIBLE_DEVICES=0,1,2,3
python3 -m paddle.distributed.launch \
--gpus="0,1,2,3" \
tools/eval.py \
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml \
-o Global.pretrained_model=./output/PPLCNet_x1_0/best_model
#单卡评估
python3 tools/eval.py \
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml \
-o Global.pretrained_model=./output/PPLCNet_x1_0/best_model
```
### 模型导出
### 模型导出
使用下述命令将训练好的模型导出为预测部署模型。
使用下述命令将训练好的模型导出为预测部署模型。
...
@@ -138,9 +158,9 @@ python3 tools/export_model.py \
...
@@ -138,9 +158,9 @@ python3 tools/export_model.py \
-o Global.save_inference_dir=deploy/models/PPLCNet_x1_0_person_attribute_infer
-o Global.save_inference_dir=deploy/models/PPLCNet_x1_0_person_attribute_infer
```
```
导出模型后,
将PP-Human中提供的部署模型
[
PPLCNet_x1_0
](
https://bj.bcebos.com/v1/paddledet/models/pipeline/PPLCNet_x1_0_person_attribute_945_infer.tar
)
中的
`infer_cfg.yml`
文件拷贝
到导出的模型文件夹
`PPLCNet_x1_0_person_attribute_infer`
中。
导出模型后,
需要下载
[
infer_cfg.yml
](
https://bj.bcebos.com/v1/paddledet/models/pipeline/infer_cfg.yml
)
文件,并放置
到导出的模型文件夹
`PPLCNet_x1_0_person_attribute_infer`
中。
使用时在PP-Human中的配置文件
`./deploy/pipeline/config/infer_cfg_pphuman.yml`
中修改新的模型路径
使用时在PP-Human中的配置文件
`./deploy/pipeline/config/infer_cfg_pphuman.yml`
中修改新的模型路径
`model_dir`
项,并开启功能
`enable: True`
。
```
```
ATTR:
ATTR:
model_dir: [YOUR_DEPLOY_MODEL_DIR]/PPLCNet_x1_0_person_attribute_infer/ #新导出的模型路径位置
model_dir: [YOUR_DEPLOY_MODEL_DIR]/PPLCNet_x1_0_person_attribute_infer/ #新导出的模型路径位置
...
@@ -153,19 +173,22 @@ ATTR:
...
@@ -153,19 +173,22 @@ ATTR:
上述是以26个属性为例的标注、训练过程。
上述是以26个属性为例的标注、训练过程。
如果需要增加、减少属性数量,则需要:
如果需要增加、减少属性数量,则需要:
1)标注时需增加新属性类别信息或删减属性类别信息;
1)标注时需增加新属性类别信息或删减属性类别信息;
2)对应修改训练中train.txt所使用的属性数量和名称;
2)对应修改训练中train.txt所使用的属性数量和名称;
3)修改训练配置,例如
``PaddleClas/blob/develop/ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml``
文件中的属性数量,详细见上述
`修改配置开始训练`
部分。
3)修改训练配置,例如
``PaddleClas/blob/develop/ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml``
文件中的属性数量,详细见上述
`修改配置开始训练`
部分。
增加属性示例:
增加属性示例:
1.
在标注数据时在26位后继续增加新的属性标注数值;
1.
在标注数据时在26位后继续增加新的属性标注数值;
2.
在train.txt文件的标注数值中也增加新的属性数值。
2.
在train.txt文件的标注数值中也增加新的属性数值。
3.
注意属性类型在train.txt中属性数值列表中的位置的对应关系需要时固定的,例如第
1-3位表示年龄,所有图片都要使用1-3
位置表示年龄,不再赘述。
3.
注意属性类型在train.txt中属性数值列表中的位置的对应关系需要时固定的,例如第
[19, 20, 21]位表示年龄,所有图片都要使用[19, 20, 21]
位置表示年龄,不再赘述。
<div
width=
"500"
align=
"center"
>
<div
width=
"500"
align=
"center"
>
<img
src=
"../../images/add_attribute.png"
/>
<img
src=
"../../images/add_attribute.png"
/>
</div>
</div>
删减属性同理。
删减属性同理。
例如,如果不需要年龄属性,则位置[1
,2,3]的数值可以去掉。只需在train.txt中标注的26个数字中全部删除第1-3
位数值即可,同时标注数据时也不再需要标注这3位属性值。
例如,如果不需要年龄属性,则位置[1
9, 20, 21]的数值可以去掉。只需在train.txt中标注的26个数字中全部删除第19-21
位数值即可,同时标注数据时也不再需要标注这3位属性值。
docs/advanced_tutorials/customization/mtmct.md
浏览文件 @
d174b1c2
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
### 数据标注
### 数据标注
理解了上面
`
属性
标注`
格式的含义后,就可以进行数据标注的工作。其本质是:每张单人图建立一个标注项,对应该行人分配的id。
理解了上面
`标注`
格式的含义后,就可以进行数据标注的工作。其本质是:每张单人图建立一个标注项,对应该行人分配的id。
举例:
举例:
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
标注完成后利用检测框将每一个人截取成单人图,其图片与id属性标注建立对应关系。也可先截成单人图再进行标注,效果相同。
标注完成后利用检测框将每一个人截取成单人图,其图片与id属性标注建立对应关系。也可先截成单人图再进行标注,效果相同。
## 模型
优化
## 模型
训练
数据标注完成后,就可以拿来做模型的训练,完成自定义模型的优化工作。
数据标注完成后,就可以拿来做模型的训练,完成自定义模型的优化工作。
...
@@ -69,31 +69,70 @@ bounding_box_train.txt文件内为所有训练图片名称(相对于根路径
...
@@ -69,31 +69,70 @@ bounding_box_train.txt文件内为所有训练图片名称(相对于根路径
### 修改配置开始训练
### 修改配置开始训练
该任务的训练功能集成在
[
PaddleClas
](
https://github.com/PaddlePaddle/PaddleClas
)
套件中。
首先执行以下命令下载训练代码(更多环境问题请参考
[
Install_PaddleClas
](
https://github.com/PaddlePaddle/PaddleClas/blob/release/2.4/docs/en/installation/install_paddleclas_en.md
)
):
```
shell
git clone https://github.com/PaddlePaddle/PaddleClas
```
需要在配置文件
[
softmax_triplet_with_center.yaml
](
https://github.com/PaddlePaddle/PaddleClas/blob/develop/ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml
)
中,修改的配置项如下:
需要在配置文件
[
softmax_triplet_with_center.yaml
](
https://github.com/PaddlePaddle/PaddleClas/blob/develop/ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml
)
中,修改的配置项如下:
```
```
image_root: "./dataset/" 训练图片根路径
Head:
cls_label_path: "bounding_box_train" 训练文件列表
name: "FC"
```
embedding_size: *feat_dim
```
class_num: &class_num 751 #行人id总数量
class_num: &class_num 751 #行人id总数量
DataLoader:
Train:
dataset:
name: "Market1501"
image_root: "./dataset/" #训练图片根路径
cls_label_path: "bounding_box_train" #训练文件列表
Eval:
Query:
dataset:
name: "Market1501"
image_root: "./dataset/" #评估图片根路径
cls_label_path: "query" #评估文件列表
```
```
注意:
注意:
1.
这里image_root路径+bounding_box_train.txt中图片相对路径,对应图片存放的完整路径。
1.
这里image_root路径+bounding_box_train.txt中图片相对路径,对应图片存放的完整路径。
然后运行以下命令开始训练。
然后运行以下命令开始训练。
```
```
#多卡训练
export CUDA_VISIBLE_DEVICES=0,1,2,3
export CUDA_VISIBLE_DEVICES=0,1,2,3
python3 -m paddle.distributed.launch \
python3 -m paddle.distributed.launch \
--gpus="0,1,2,3" \
--gpus="0,1,2,3" \
tools/train.py \
tools/train.py \
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml
#单卡训练
python3 tools/train.py \
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml
```
训练完成后可以执行以下命令进行性能评估:
```
#多卡评估
export CUDA_VISIBLE_DEVICES=0,1,2,3
python3 -m paddle.distributed.launch \
--gpus="0,1,2,3" \
tools/eval.py \
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml \
-o Global.pretrained_model=./output/strong_baseline/best_model
#单卡评估
python3 tools/eval.py \
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml \
-o Global.pretrained_model=./output/strong_baseline/best_model
```
```
### 模型导出
### 模型导出
...
@@ -103,16 +142,16 @@ python3 -m paddle.distributed.launch \
...
@@ -103,16 +142,16 @@ python3 -m paddle.distributed.launch \
```
```
python3 tools/export_model.py \
python3 tools/export_model.py \
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml \
-c ./ppcls/configs/reid/strong_baseline/softmax_triplet_with_center.yaml \
-o Global.pretrained_model=output/strong_baseline/best_model \
-o Global.pretrained_model=
./
output/strong_baseline/best_model \
-o Global.save_inference_dir=deploy/models/strong_baseline_inference
-o Global.save_inference_dir=deploy/models/strong_baseline_inference
```
```
导出模型后,
然后将PP-Human中提供的部署模型
[
REID模型
](
https://bj.bcebos.com/v1/paddledet/models/pipeline/reid_model.zip
)
中的infer_cfg.yml文件拷贝
到新导出的模型文件夹'strong_baseline_inference'中。
导出模型后,
下载
[
infer_cfg.yml
](
https://bj.bcebos.com/v1/paddledet/models/pipeline/REID/infer_cfg.yml
)
文件
到新导出的模型文件夹'strong_baseline_inference'中。
使用时在PP-Human中的配置文件infer_cfg_pphuman.yml中修改
使用时在PP-Human中的配置文件infer_cfg_pphuman.yml中修改
模型路径
`model_dir`
并开启功能
`enable`
。
```
```
REID:
REID:
model_dir: [YOUR_DEPLOY_MODEL_DIR]/strong_baseline_inference/
model_dir: [YOUR_DEPLOY_MODEL_DIR]/strong_baseline_inference/
enable: True
enable: True
```
```
然后可以使用。
然后可以使用。
至此完成模型开发。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录