|
|
@@ -7,7 +7,7 @@ comments: true
|
|
|
## 1. 行人属性识别产线介绍
|
|
|
行人属性识别是计算机视觉系统中的关键功能,用于在图像或视频中定位并标记行人的特定特征,如性别、年龄、衣物颜色和款式等。该任务不仅要求准确检测出行人,还需识别每个行人的详细属性信息。行人属性识别产线是定位并识别行人属性的端到端串联系统,广泛应用于智慧城市和安防监控等领域,可显著提升系统的智能化水平和管理效率。
|
|
|
|
|
|
-<img src="https://raw.githubusercontent.com/cuicheng01/PaddleX_doc_images/refs/heads/main/images/pipelines/pedestrian_attribute_recognition/01.jpg">
|
|
|
+<img src="https://raw.githubusercontent.com/cuicheng01/PaddleX_doc_images/refs/heads/main/images/pipelines/pedestrian_attribute_recognition/pedestrian_attribute.png">
|
|
|
|
|
|
<b>行人属性识别产线中包含了行人检测模块和行人属性识别模块</b>,每个模块中包含了若干模型,具体使用哪些模型,您可以根据下边的 benchmark 数据来选择。<b>如您更考虑模型精度,请选择精度较高的模型,如您更考虑模型推理速度,请选择推理速度较快的模型,如您更考虑模型存储大小,请选择存储大小较小的模型</b>。
|
|
|
|
|
|
@@ -69,7 +69,7 @@ comments: true
|
|
|
<p><b>注:以上精度指标为 PaddleX 内部自建数据集 mA。GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz,线程数为 8,精度类型为 FP32。</b></p>
|
|
|
|
|
|
## 2. 快速开始
|
|
|
-PaddleX 所提供的预训练的模型产线均可以快速体验效果,你可以在线体验行人属性识别产线的效果,也可以在本地使用命令行或 Python 体验行人属性识别产线的效果。
|
|
|
+PaddleX 所提供的模型产线可以在本地使用命令行或 Python 体验行人属性识别产线的效果。
|
|
|
|
|
|
### 2.1 在线体验
|
|
|
暂不支持在线体验
|
|
|
@@ -83,30 +83,22 @@ PaddleX 所提供的预训练的模型产线均可以快速体验效果,你可
|
|
|
```bash
|
|
|
paddlex --pipeline pedestrian_attribute_recognition --input pedestrian_attribute_002.jpg --device gpu:0
|
|
|
```
|
|
|
-参数说明:
|
|
|
+相关的参数说明可以参考[2.2.2 Python脚本方式集成](#222-python脚本方式集成)中的参数说明。
|
|
|
|
|
|
-```
|
|
|
---pipeline:产线名称,此处为行人属性识别产线
|
|
|
---input:待处理的输入图片的本地路径或URL
|
|
|
---device 使用的GPU序号(例如gpu:0表示使用第0块GPU,gpu:1,2表示使用第1、2块GPU),也可选择使用CPU(--device cpu)
|
|
|
+运行后,会将结果打印到终端上,结果如下:
|
|
|
+
|
|
|
+```bash
|
|
|
+{'res': {'input_path': 'pedestrian_attribute_002.jpg', 'boxes': [{'labels': ['Trousers(长裤)', 'Age18-60(年龄在18-60岁之间)', 'LongCoat(长外套)', 'Side(侧面)'], 'cls_scores': array([0.99965, 0.99963, 0.98866, 0.9624 ]), 'det_score': 0.9795178771018982, 'coordinate': [87.24581, 322.5872, 546.2697, 1039.9852]}, {'labels': ['Trousers(长裤)', 'LongCoat(长外套)', 'Front(面朝前)', 'Age18-60(年龄在18-60岁之间)'], 'cls_scores': array([0.99996, 0.99872, 0.93379, 0.71614]), 'det_score': 0.967143177986145, 'coordinate': [737.91626, 306.287, 1150.5961, 1034.2979]}, {'labels': ['Trousers(长裤)', 'LongCoat(长外套)', 'Age18-60(年龄在18-60岁之间)', 'Side(侧面)'], 'cls_scores': array([0.99996, 0.99514, 0.98726, 0.96224]), 'det_score': 0.9645745754241943, 'coordinate': [399.45944, 281.9107, 869.5312, 1038.9962]}]}}
|
|
|
```
|
|
|
|
|
|
-在执行上述 Python 脚本时,加载的是默认的行人属性识别产线配置文件,若您需要自定义配置文件,可执行如下命令获取:
|
|
|
+运行结果参数说明可以参考[2.2.2 Python脚本方式集成](#222-python脚本方式集成)中的结果解释。
|
|
|
|
|
|
-<details><summary> 👉点击展开</summary>
|
|
|
+可视化结果保存在`save_path`下,可视化结果如下:
|
|
|
|
|
|
-<pre><code>paddlex --get_pipeline_config pedestrian_attribute_recognition
|
|
|
-</code></pre>
|
|
|
-<p>执行后,行人属性识别产线配置文件将被保存在当前路径。若您希望自定义保存位置,可执行如下命令(假设自定义保存位置为 <code>./my_path</code> ):</p>
|
|
|
-<pre><code>paddlex --get_pipeline_config pedestrian_attribute_recognition --save_path ./my_path
|
|
|
-</code></pre>
|
|
|
-<p>获取产线配置文件后,可将 <code>--pipeline</code> 替换为配置文件保存路径,即可使配置文件生效。例如,若配置文件保存路径为 <code>./pedestrian_attribute_recognition.yaml</code>,只需执行:</p>
|
|
|
-<pre><code class="language-bash">paddlex --pipeline ./pedestrian_attribute_recognition.yaml --input pedestrian_attribute_002.jpg --device gpu:0
|
|
|
-</code></pre>
|
|
|
-<p>其中,<code>--model</code>、<code>--device</code> 等参数无需指定,将使用配置文件中的参数。若依然指定了参数,将以指定的参数为准。</p></details>
|
|
|
+<img src="https://raw.githubusercontent.com/cuicheng01/PaddleX_doc_images/refs/heads/main/images/pipelines/pedestrian_attribute_recognition/01.jpg">
|
|
|
|
|
|
#### 2.2.2 Python脚本方式集成
|
|
|
-几行代码即可完成产线的快速推理,以行人属性识别产线为例:
|
|
|
+* 上述命令行是为了快速体验查看效果,一般来说,在项目中,往往需要通过代码集成,您可以通过几行代码即可完成产线的快速推理,推理代码如下:
|
|
|
|
|
|
```python
|
|
|
from paddlex import create_pipeline
|
|
|
@@ -123,7 +115,7 @@ for res in output:
|
|
|
|
|
|
在上述 Python 脚本中,执行了如下几个步骤:
|
|
|
|
|
|
-(1)实例化 `create_pipeline` 实例化产线对象:具体参数说明如下:
|
|
|
+(1)通过 `create_pipeline()` 实例化行人属性识别产线对象,具体参数说明如下:
|
|
|
|
|
|
<table>
|
|
|
<thead>
|
|
|
@@ -139,13 +131,13 @@ for res in output:
|
|
|
<td><code>pipeline</code></td>
|
|
|
<td>产线名称或是产线配置文件路径。如为产线名称,则必须为 PaddleX 所支持的产线。</td>
|
|
|
<td><code>str</code></td>
|
|
|
-<td>无</td>
|
|
|
+<td>None</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><code>device</code></td>
|
|
|
-<td>产线模型推理设备。支持:“gpu”,“cpu”。</td>
|
|
|
+<td>产线推理设备。支持指定GPU具体卡号,如“gpu:0”,其他硬件具体卡号,如“npu:0”,CPU如“cpu”。</td>
|
|
|
<td><code>str</code></td>
|
|
|
-<td><code>gpu</code></td>
|
|
|
+<td><code>gpu:0</code></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><code>use_hpip</code></td>
|
|
|
@@ -155,86 +147,198 @@ for res in output:
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
-(2)调用行人属性识别产线对象的 `predict` 方法进行推理预测:`predict` 方法参数为`x`,用于输入待预测数据,支持多种输入方式,具体示例如下:
|
|
|
+(2)调用行人属性识别产线对象的 `predict()` 方法进行推理预测。该方法将返回一个 `generator`。以下是 `predict()` 方法的参数及其说明:
|
|
|
+
|
|
|
+<table>
|
|
|
+<thead>
|
|
|
+<tr>
|
|
|
+<th>参数</th>
|
|
|
+<th>参数说明</th>
|
|
|
+<th>参数类型</th>
|
|
|
+<th>可选项</th>
|
|
|
+<th>默认值</th>
|
|
|
+</tr>
|
|
|
+</thead>
|
|
|
+<tr>
|
|
|
+<td><code>input</code></td>
|
|
|
+<td>待预测数据,支持多种输入类型,必填</td>
|
|
|
+<td><code>Python Var|str|list</code></td>
|
|
|
+<td>
|
|
|
+<ul>
|
|
|
+ <li><b>Python Var</b>:如 <code>numpy.ndarray</code> 表示的图像数据</li>
|
|
|
+ <li><b>str</b>:如图像文件的本地路径:<code>/root/data/img.jpg</code>;<b>如URL链接</b>,如图像文件网络URL:<a href = "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pedestrian_attribute_002.jpg">示例</a>;<b>如本地目录</b>,该目录下需包含待预测图像,如本地路径:<code>/root/data/</code></li>
|
|
|
+ <li><b>List</b>:列表元素需为上述类型数据,如<code>[numpy.ndarray, numpy.ndarray]</code>,<code>[\"/root/data/img1.jpg\", \"/root/data/img2.jpg\"]</code>,<code>[\"/root/data1\", \"/root/data2\"]</code></li>
|
|
|
+</ul>
|
|
|
+</td>
|
|
|
+<td><code>None</code></td>
|
|
|
+</tr>
|
|
|
+<tr>
|
|
|
+<td><code>device</code></td>
|
|
|
+<td>产线推理设备</td>
|
|
|
+<td><code>str|None</code></td>
|
|
|
+<td>
|
|
|
+<ul>
|
|
|
+ <li><b>CPU</b>:如 <code>cpu</code> 表示使用 CPU 进行推理;</li>
|
|
|
+ <li><b>GPU</b>:如 <code>gpu:0</code> 表示使用第 1 块 GPU 进行推理;</li>
|
|
|
+ <li><b>NPU</b>:如 <code>npu:0</code> 表示使用第 1 块 NPU 进行推理;</li>
|
|
|
+ <li><b>XPU</b>:如 <code>xpu:0</code> 表示使用第 1 块 XPU 进行推理;</li>
|
|
|
+ <li><b>MLU</b>:如 <code>mlu:0</code> 表示使用第 1 块 MLU 进行推理;</li>
|
|
|
+ <li><b>DCU</b>:如 <code>dcu:0</code> 表示使用第 1 块 DCU 进行推理;</li>
|
|
|
+ <li><b>None</b>:如果设置为 <code>None</code>, 将默认使用产线初始化的该参数值,初始化时,会优先使用本地的 GPU 0号设备,如果没有,则使用 CPU 设备;</li>
|
|
|
+</ul>
|
|
|
+</td>
|
|
|
+<td><code>None</code></td>
|
|
|
+</tr>
|
|
|
+<tr>
|
|
|
+<td><code>det_threshold</code></td>
|
|
|
+<td>行人检测可视化阈值</td>
|
|
|
+<td><code>float | None</code></td>
|
|
|
+<td>
|
|
|
+<ul>
|
|
|
+ <li><b>float</b>:如<code>0.5</code>, 表示过滤掉所有阈值小于<code>0.5</code>的目标框;</li>
|
|
|
+ <li><b>None</b>:如果设置为<code>None</code>, 将默认使用产线初始化的该参数值,初始化为<code>0.5</code>;</li>
|
|
|
+</ul>
|
|
|
+</td>
|
|
|
+<td><code>0.5</code></td>
|
|
|
+</tr>
|
|
|
+<tr>
|
|
|
+<td><code>cls_threshold</code></td>
|
|
|
+<td>行人属性预测阈值</td>
|
|
|
+<td><code>float | dict | list| None</code></td>
|
|
|
+<td>
|
|
|
+<ul>
|
|
|
+ <li><b>float</b>:表示属性识别的统一阈值;</li>
|
|
|
+ <li><b>list</b>:如<code>[0.5, 0.45, 0.48, 0.4]</code>,表示按照<code>label list</code>顺序的不同类别阈值;</code>;</li>
|
|
|
+ <li><b>dict</b>:字典的key 为 <code>default</code> 和 <code>int</code> 类型,val 为 <code>float</code> 类型阈值,如<code>{"default": 0.5, 0: 0.45, 2: 0.48, 7: 0.4}</code>,<code>default</code> 表示多标签分类的统一阈值,其他 <code>int</code> 类型表示对 cls_id 为0的类别应用阈值 0.45、cls_id 为 1 的类别应用阈值 0.48、cls_id 为 7 的类别应用阈值 0.4;</li>
|
|
|
+ <li><b>None</b>:如果设置为<code>None</code>, 将默认使用产线初始化的该参数值,初始化为<code>0.7</code>;</li>
|
|
|
+</ul>
|
|
|
+</td>
|
|
|
+<td><code>0.7</code></td>
|
|
|
+</tr>
|
|
|
+</table>
|
|
|
+3)对预测结果进行处理,每个样本的预测结果均为`dict`类型,且支持打印、保存为图片、保存为`json`文件的操作:
|
|
|
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
+<th>方法</th>
|
|
|
+<th>方法说明</th>
|
|
|
+<th>参数</th>
|
|
|
<th>参数类型</th>
|
|
|
<th>参数说明</th>
|
|
|
+<th>默认值</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
-<tbody>
|
|
|
<tr>
|
|
|
-<td>Python Var</td>
|
|
|
-<td>支持直接传入Python变量,如numpy.ndarray表示的图像数据。</td>
|
|
|
+<td rowspan = "3"><code>print()</code></td>
|
|
|
+<td rowspan = "3">打印结果到终端</td>
|
|
|
+<td><code>format_json</code></td>
|
|
|
+<td><code>bool</code></td>
|
|
|
+<td>是否对输出内容进行使用 <code>JSON</code> 缩进格式化</td>
|
|
|
+<td><code>True</code></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>str</td>
|
|
|
-<td>支持传入待预测数据文件路径,如图像文件的本地路径:<code>/root/data/img.jpg</code>。</td>
|
|
|
+<td><code>indent</code></td>
|
|
|
+<td><code>int</code></td>
|
|
|
+<td>指定缩进级别,以美化输出的 <code>JSON</code> 数据,使其更具可读性,仅当 <code>format_json</code> 为 <code>True</code> 时有效</td>
|
|
|
+<td>4</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>str</td>
|
|
|
-<td>支持传入待预测数据文件URL,如图像文件的网络URL:<a href="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pedestrian_attribute_002.jpg">示例</a>。</td>
|
|
|
+<td><code>ensure_ascii</code></td>
|
|
|
+<td><code>bool</code></td>
|
|
|
+<td>控制是否将非 <code>ASCII</code> 字符转义为 <code>Unicode</code>。设置为 <code>True</code> 时,所有非 <code>ASCII</code> 字符将被转义;<code>False</code> 则保留原始字符,仅当<code>format_json</code>为<code>True</code>时有效</td>
|
|
|
+<td><code>False</code></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>str</td>
|
|
|
-<td>支持传入本地目录,该目录下需包含待预测数据文件,如本地路径:<code>/root/data/</code>。</td>
|
|
|
+<td rowspan = "3"><code>save_to_json()</code></td>
|
|
|
+<td rowspan = "3">将结果保存为json格式的文件</td>
|
|
|
+<td><code>save_path</code></td>
|
|
|
+<td><code>str</code></td>
|
|
|
+<td>保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致</td>
|
|
|
+<td>无</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>dict</td>
|
|
|
-<td>支持传入字典类型,字典的key需与具体任务对应,如行人属性识别任务对应\"img\",字典的val支持上述类型数据,例如:<code>{\"img\": \"/root/data1\"}</code>。</td>
|
|
|
+<td><code>indent</code></td>
|
|
|
+<td><code>int</code></td>
|
|
|
+<td>指定缩进级别,以美化输出的 <code>JSON</code> 数据,使其更具可读性,仅当 <code>format_json</code> 为 <code>True</code> 时有效</td>
|
|
|
+<td>4</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>list</td>
|
|
|
-<td>支持传入列表,列表元素需为上述类型数据,如<code>[numpy.ndarray, numpy.ndarray],[\"/root/data/img1.jpg\", \"/root/data/img2.jpg\"]</code>,<code>[\"/root/data1\", \"/root/data2\"]</code>,<code>[{\"img\": \"/root/data1\"}, {\"img\": \"/root/data2/img.jpg\"}]</code>。</td>
|
|
|
+<td><code>ensure_ascii</code></td>
|
|
|
+<td><code>bool</code></td>
|
|
|
+<td>控制是否将非 <code>ASCII</code> 字符转义为 <code>Unicode</code>。设置为 <code>True</code> 时,所有非 <code>ASCII</code> 字符将被转义;<code>False</code> 则保留原始字符,仅当<code>format_json</code>为<code>True</code>时有效</td>
|
|
|
+<td><code>False</code></td>
|
|
|
+</tr>
|
|
|
+<tr>
|
|
|
+<td><code>save_to_img()</code></td>
|
|
|
+<td>将结果保存为图像格式的文件</td>
|
|
|
+<td><code>save_path</code></td>
|
|
|
+<td><code>str</code></td>
|
|
|
+<td>保存的文件路径,支持目录或文件路径</td>
|
|
|
+<td>无</td>
|
|
|
</tr>
|
|
|
-</tbody>
|
|
|
</table>
|
|
|
-(3)调用`predict`方法获取预测结果:`predict` 方法为`generator`,因此需要通过调用获得预测结果,`predict`方法以batch为单位对数据进行预测,因此预测结果为list形式表示的一组预测结果。
|
|
|
|
|
|
-(4)对预测结果进行处理:每个样本的预测结果均为`dict`类型,且支持打印,或保存为文件,支持保存的类型与具体产线相关,如:
|
|
|
+- 调用`print()` 方法会将结果打印到终端,打印到终端的内容解释如下:
|
|
|
+
|
|
|
+ - `input_path`: `(str)` 待预测图像的输入路径。
|
|
|
+ - `boxes`: `(List[Dict])` 表示预测结果的类别id。
|
|
|
+ - `labels`: `(List[str])` 表示预测结果的类别名称。
|
|
|
+ - `cls_scores`: `(List[numpy.ndarray])` 表示属性预测结果的置信度。
|
|
|
+ - `det_scores`: `(float)` 表示行人检测框的置信度。
|
|
|
+
|
|
|
+- 调用`save_to_json()` 方法会将上述内容保存到指定的`save_path`中,如果指定为目录,则保存的路径为`save_path/{your_img_basename}.json`,如果指定为文件,则直接保存到该文件中。由于json文件不支持保存numpy数组,因此会将其中的`numpy.array`类型转换为列表形式。
|
|
|
+- 调用`save_to_img()` 方法会将可视化结果保存到指定的`save_path`中,如果指定为目录,则保存的路径为`save_path/{your_img_basename}_res.{your_img_extension}`,如果指定为文件,则直接保存到该文件中。(产线通常包含较多结果图片,不建议直接指定为具体的文件路径,否则多张图会被覆盖,仅保留最后一张图)
|
|
|
+
|
|
|
+* 此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
|
|
|
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
-<th>方法</th>
|
|
|
-<th>说明</th>
|
|
|
-<th>方法参数</th>
|
|
|
+<th>属性</th>
|
|
|
+<th>属性说明</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
-<tbody>
|
|
|
-<tr>
|
|
|
-<td>print</td>
|
|
|
-<td>打印结果到终端</td>
|
|
|
-<td><code>- format_json</code>:bool类型,是否对输出内容进行使用json缩进格式化,默认为True;<br/><code>- indent</code>:int类型,json格式化设置,仅当format_json为True时有效,默认为4;<br/><code>- ensure_ascii</code>:bool类型,json格式化设置,仅当format_json为True时有效,默认为False;</td>
|
|
|
-</tr>
|
|
|
<tr>
|
|
|
-<td>save_to_json</td>
|
|
|
-<td>将结果保存为json格式的文件</td>
|
|
|
-<td><code>- save_path</code>:str类型,保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致;<br/><code>- indent</code>:int类型,json格式化设置,默认为4;<br/><code>- ensure_ascii</code>:bool类型,json格式化设置,默认为False;</td>
|
|
|
+<td rowspan = "1"><code>json</code></td>
|
|
|
+<td rowspan = "1">获取预测的 <code>json</code> 格式的结果</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>save_to_img</td>
|
|
|
-<td>将结果保存为图像格式的文件</td>
|
|
|
-<td><code>- save_path</code>:str类型,保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致;</td>
|
|
|
+<td rowspan = "2"><code>img</code></td>
|
|
|
+<td rowspan = "2">获取格式为 <code>dict</code> 的可视化图像</td>
|
|
|
</tr>
|
|
|
-</tbody>
|
|
|
</table>
|
|
|
-若您获取了配置文件,即可对行人属性识别产线各项配置进行自定义,只需要修改 `create_pipeline` 方法中的 `pipeline` 参数值为产线配置文件路径即可。
|
|
|
|
|
|
-例如,若您的配置文件保存在 `./my_path/pedestrian_attribute_recognition*.yaml` ,则只需执行:
|
|
|
+- `json` 属性获取的预测结果为dict类型的数据,相关内容与调用 `save_to_json()` 方法保存的内容一致。
|
|
|
+- `img` 属性返回的预测结果是一个字典类型的数据。其中,键为 `res` 对应的值是`Image.Image` 对象:一个用于显示属性识别结果的可视化图像。
|
|
|
+
|
|
|
+此外,您可以获取行人属性识别产线配置文件,并加载配置文件进行预测。可执行如下命令将结果保存在 `my_path` 中:
|
|
|
+
|
|
|
+```
|
|
|
+paddlex --get_pipeline_config pedestrian_attribute_recognition --save_path ./my_path
|
|
|
+```
|
|
|
+
|
|
|
+若您获取了配置文件,即可对OCR产线各项配置进行自定义,只需要修改 `create_pipeline` 方法中的 `pipeline` 参数值为产线配置文件路径即可。示例如下:
|
|
|
|
|
|
```python
|
|
|
from paddlex import create_pipeline
|
|
|
+
|
|
|
pipeline = create_pipeline(pipeline="./my_path/pedestrian_attribute_recognition.yaml")
|
|
|
-output = pipeline.predict("pedestrian_attribute_002.jpg")
|
|
|
+
|
|
|
+output = pipeline.predict(
|
|
|
+ input="./pedestrian_attribute_002.jpg",
|
|
|
+)
|
|
|
for res in output:
|
|
|
- res.print() ## 打印预测的结构化输出
|
|
|
- res.save_to_img("./output/") ## 保存结果可视化图像
|
|
|
- res.save_to_json("./output/") ## 保存预测的结构化输出
|
|
|
+ res.print()
|
|
|
+ res.save_to_img("./output/")
|
|
|
+ res.save_to_json("./output/")
|
|
|
+
|
|
|
```
|
|
|
+
|
|
|
+<b>注:</b> 配置文件中的参数为产线初始化参数,如果希望更改行人属性识别产线初始化参数,可以直接修改配置文件中的参数,并加载配置文件进行预测。同时,CLI 预测也支持传入配置文件,`--pipeline` 指定配置文件的路径即可。
|
|
|
+
|
|
|
## 3. 开发集成/部署
|
|
|
+
|
|
|
如果产线可以达到您对产线推理速度和精度的要求,您可以直接进行开发集成/部署。
|
|
|
|
|
|
若您需要将产线直接应用在您的Python项目中,可以参考 [2.2.2 Python脚本方式](#222-python脚本方式集成)中的示例代码。
|
|
|
@@ -459,36 +563,62 @@ print(result["pedestrians"])
|
|
|
如果行人属性识别产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用<b>您自己拥有的特定领域或应用场景的数据</b>对现有模型进行进一步的<b>微调</b>,以提升行人属性识别产线的在您的场景中的识别效果。
|
|
|
|
|
|
### 4.1 模型微调
|
|
|
-由于行人属性识别产线包含行人属性识别模块和行人检测模块,如果模型产线的效果不及预期可能来自于其中任何一个模块。
|
|
|
-您可以对识别效果差的图片进行分析,如果在分析过程中发现有较多的主体目标未被检测出来,那么可能是行人检测模型存在不足那么您需要参考[行人检测模块开发教程](../../../module_usage/tutorials/cv_modules/human_detection.md)中的[二次开发](../../../module_usage/tutorials/cv_modules/human_detection.md#四二次开发)章节,使用您的私有数据集对行人检测模型进行微调;如果检测出来的主体属性识别错误,那么您需要参考[行人属性识别模块开发教程](../../../module_usage/tutorials/cv_modules/pedestrian_attribute_recognition.md)中的[二次开发](../../../module_usage/tutorials/cv_modules/pedestrian_attribute_recognition.md#四二次开发)章节,使用您的私有数据集对行人属性识别模型进行微调。
|
|
|
+由于行人属性识别产线包含行人属性识别模块和行人检测模块,如果模型产线的效果不及预期,可能来自于其中任何一个模块。您可以对识别效果差的图片进行分析,进而确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
|
|
|
+
|
|
|
+<table>
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>情形</th>
|
|
|
+ <th>微调模块</th>
|
|
|
+ <th>微调参考链接</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td>行人检测不准</td>
|
|
|
+ <td>行人检测模块</td>
|
|
|
+ <td><a href="../../../module_usage/tutorials/cv_modules/human_detection.md">链接</a></td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>属性识别不准</td>
|
|
|
+ <td>行人属性识别模块</td>
|
|
|
+ <td><a href="../../../module_usage/tutorials/cv_modules/pedestrian_attribute_recognition.md">链接</a></td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+</table>
|
|
|
|
|
|
### 4.2 模型应用
|
|
|
当您使用私有数据集完成微调训练后,可获得本地模型权重文件。
|
|
|
|
|
|
若您需要使用微调后的模型权重,只需对产线配置文件做修改,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可:
|
|
|
|
|
|
-```
|
|
|
-......
|
|
|
-Pipeline:
|
|
|
- det_model: PP-YOLOE-L_human
|
|
|
- cls_model: PP-LCNet_x1_0_pedestrian_attribute #可修改为微调后模型的本地路径
|
|
|
- device: "gpu"
|
|
|
- batch_size: 1
|
|
|
-......
|
|
|
+```yaml
|
|
|
+pipeline_name: pedestrian_attribute_recognition
|
|
|
+
|
|
|
+SubModules:
|
|
|
+ Detection:
|
|
|
+ module_name: object_detection
|
|
|
+ model_name: PP-YOLOE-L_human
|
|
|
+ model_dir: null
|
|
|
+ batch_size: 1
|
|
|
+ threshold: 0.5
|
|
|
+ Classification:
|
|
|
+ module_name: multilabel_classification
|
|
|
+ model_name: PP-LCNet_x1_0_pedestrian_attribute
|
|
|
+ model_dir: null
|
|
|
+ batch_size: 1
|
|
|
+ threshold: 0.7
|
|
|
```
|
|
|
随后, 参考本地体验中的命令行方式或 Python 脚本方式,加载修改后的产线配置文件即可。
|
|
|
|
|
|
## 5. 多硬件支持
|
|
|
-PaddleX 支持英伟达 GPU、昆仑芯 XPU、昇腾 NPU和寒武纪 MLU 等多种主流硬件设备,<b>仅需修改 `--device` 参数</b>即可完成不同硬件之间的无缝切换。
|
|
|
-
|
|
|
-例如,您使用英伟达 GPU 进行行人属性识别产线的推理,使用的命令为:
|
|
|
+PaddleX 支持英伟达 GPU、昆仑芯 XPU、昇腾 NPU和寒武纪 MLU 等多种主流硬件设备,<b>仅需修改 `--device`参数</b>即可完成不同硬件之间的无缝切换。
|
|
|
|
|
|
-```bash
|
|
|
-paddlex --pipeline pedestrian_attribute_recognition --input pedestrian_attribute_002.jpg --device gpu:0
|
|
|
-```
|
|
|
-此时,若您想将硬件切换为昇腾 NPU,仅需将 `--device` 修改为 npu:0 即可:
|
|
|
+例如,您使用昇腾 NPU 进行行人属性识别产线的推理,使用的 Python 命令为:
|
|
|
|
|
|
```bash
|
|
|
-paddlex --pipeline pedestrian_attribute_recognition --input pedestrian_attribute_002.jpg --device npu:0
|
|
|
+paddlex --pipeline pedestrian_attribute_recognition \
|
|
|
+ --input pedestrian_attribute_002.jpg \
|
|
|
+ --device npu:0
|
|
|
```
|
|
|
-若您想在更多种类的硬件上使用行人属性识别产线,请参考[PaddleX多硬件使用指南](../../../other_devices_support/multi_devices_use_guide.md)。
|
|
|
+若您想在更多种类的硬件上使用通用OCR产线,请参考[PaddleX多硬件使用指南](../../../other_devices_support/multi_devices_use_guide.md)。
|