|
|
@@ -19,7 +19,7 @@ comments: true
|
|
|
<th>介绍</th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
-<td>PP-YOLOE-R_L</td><td><a href="https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-YOLOE-R_L_infer.tar">推理模型</a>/<a href="https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_l_3x_dota.pdparams">训练模型</a></td>
|
|
|
+<td>PP-YOLOE-R-L</td><td><a href="https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-YOLOE-R-L_infer.tar">推理模型</a>/<a href="https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_l_3x_dota.pdparams">训练模型</a></td>
|
|
|
<td>78.14</td>
|
|
|
<td>20.7039</td>
|
|
|
<td>157.942</td>
|
|
|
@@ -35,12 +35,10 @@ comments: true
|
|
|
> ❗ 在快速集成前,请先安装 PaddleX 的 wheel 包,详细请参考 [PaddleX本地安装教程](../../../installation/installation.md)
|
|
|
|
|
|
完成 wheel 包的安装后,几行代码即可完成旋转目标检测模块的推理,可以任意切换该模块下的模型,您也可以将旋转目标检测的模块中的模型推理集成到您的项目中。运行以下代码前,请您下载[示例图片](https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/rotated_object_detection_001.png)到本地。
|
|
|
-
|
|
|
```python
|
|
|
from paddlex import create_model
|
|
|
-model_name = "PP-YOLOE-R_L"
|
|
|
-model = create_model(model_name, img_size = 1024)
|
|
|
-output = model.predict("rotated_object_detection_001.png", batch_size=1, threshold=0.5)
|
|
|
+model = create_model(model_name="PP-YOLOE-R-L")
|
|
|
+output = model.predict(input="rotated_object_detection_001.png", batch_size=1)
|
|
|
for res in output:
|
|
|
res.print()
|
|
|
res.save_to_img("./output/")
|
|
|
@@ -61,12 +59,12 @@ for res in output:
|
|
|
|
|
|
可视化图片如下:
|
|
|
|
|
|
-<img src="https://raw.githubusercontent.com/BluebirdStory/PaddleX_doc_images/main/images/modules/robj_det/rotated_object_detection_001_res.png">
|
|
|
+<img src="https://raw.githubusercontent.com/cuicheng01/PaddleX_doc_images/refs/heads/main/images/modules/rotated_object_detection/rotated_object_detection_001_res.png">
|
|
|
|
|
|
|
|
|
相关方法、参数等说明如下:
|
|
|
|
|
|
-* `create_model`实例化旋转目标检测模型(此处以`PP-YOLOE-R_L`为例),具体说明如下:
|
|
|
+* `create_model`实例化旋转目标检测模型(此处以`PP-YOLOE-R-L`为例),具体说明如下:
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
@@ -94,7 +92,7 @@ for res in output:
|
|
|
<tr>
|
|
|
<td><code>threshold</code></td>
|
|
|
<td>低分object过滤阈值</td>
|
|
|
-<td><code>float/None/dict</code></td>
|
|
|
+<td><code>float/None/dict[int, float]</code></td>
|
|
|
<td>无</td>
|
|
|
<td>None</td>
|
|
|
</tr>
|
|
|
@@ -111,7 +109,7 @@ for res in output:
|
|
|
|
|
|
* `threshold`为低分object过滤阈值,默认为None,表示使用上一层设置,参数设置的优先级从高到低为:`predict参数传入 > create_model初始化传入 > yaml配置文件设置`。目前支持float和dict两种阈值设置方式:
|
|
|
* `float`, 对于所有的类别使用同一个阈值。
|
|
|
- * `dict`, key为类别ID,value为阈值,对于不同的类别使用不同的阈值。
|
|
|
+ * `dict[int, float]`, key为类别ID,value为阈值,对于不同的类别使用不同的阈值。
|
|
|
|
|
|
* `img_size`为模型实际预测使用的分辨率,默认为None,表示使用上一层设置,参数设置的优先级从高到低为:`create_model初始化 > yaml配置文件设置`。
|
|
|
|
|
|
@@ -152,12 +150,12 @@ for res in output:
|
|
|
<tr>
|
|
|
<td><code>threshold</code></td>
|
|
|
<td>低分object过滤阈值</td>
|
|
|
-<td><code>float</code>/<code>dict</code>/<code>None</code></td>
|
|
|
+<td><code>float</code>/<code>dict[int, float]</code>/<code>None</code></td>
|
|
|
<td>
|
|
|
<ul>
|
|
|
<li><b>None</b>,表示沿用上一层设置, 参数设置优先级从高到低为: <code>predict参数传入 > create_model初始化传入 > yaml配置文件设置</code></li>
|
|
|
- <li><b>float</b>,如0.5,表示推理时使用<code>0.5</code>作为所有类别的低分object过滤阈值</li>
|
|
|
- <li><b>dict</b>,如<code>{0: 0.5, 1: 0.35}</code>,表示推理时对类别0使用0.5低分过滤阈值,对类别1使用0.35低分过滤阈值。</li>
|
|
|
+ <li><b>float</b>,对于所有的类别使用同一个阈值。如0.5,表示推理时使用0.5作为所有类别的低分object过滤阈值</li>
|
|
|
+ <li><b>dict[int, float]</b>,如<code>{0: 0.5, 1: 0.35}</code>,表示推理时对类别0使用0.5低分过滤阈值,对类别1使用0.35低分过滤阈值。</li>
|
|
|
</ul>
|
|
|
</td>
|
|
|
<td>None</td>
|
|
|
@@ -278,7 +276,7 @@ tar -xf ./dataset/rdet_dota_examples.tar -C ./dataset/
|
|
|
一行命令即可完成数据校验:
|
|
|
|
|
|
```bash
|
|
|
-python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
+python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R-L.yaml \
|
|
|
-o Global.mode=check_dataset \
|
|
|
-o Global.dataset_dir=./dataset/DOTA-sampled200_crop1024_data
|
|
|
```
|
|
|
@@ -336,7 +334,7 @@ python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
<li><code>attributes.val_sample_paths</code>:该数据集验证集样本可视化图片相对路径列表;</li>
|
|
|
</ul>
|
|
|
<p>另外,数据集校验还对数据集中所有类别的样本数量分布情况进行了分析,并绘制了分布直方图(histogram.png):</p>
|
|
|
-<p><img src="https://raw.githubusercontent.com/BluebirdStory/PaddleX_doc_images/main/images/modules/robj_det/01.png"></p></details>
|
|
|
+<p><img src="https://raw.githubusercontent.com/cuicheng01/PaddleX_doc_images/refs/heads/main/images/modules/rotated_object_detection/01.png"></p></details>
|
|
|
|
|
|
#### 4.1.3 数据集格式转换/数据集划分(可选)
|
|
|
在您完成数据校验之后,可以通过<b>修改配置文件</b>或是<b>追加超参数</b>的方式对数据集的格式进行转换,也可以对数据集的训练/验证比例进行重新划分。
|
|
|
@@ -367,13 +365,13 @@ CheckDataset:
|
|
|
......
|
|
|
</code></pre>
|
|
|
<p>随后执行命令:</p>
|
|
|
-<pre><code class="language-bash">python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
+<pre><code class="language-bash">python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R-L.yaml \
|
|
|
-o Global.mode=check_dataset \
|
|
|
-o Global.dataset_dir=./dataset/DOTA-sampled200_crop1024_data
|
|
|
</code></pre>
|
|
|
<p>数据划分执行之后,原有标注文件会被在原路径下重命名为 <code>xxx.bak</code>。</p>
|
|
|
<p>以上参数同样支持通过追加命令行参数的方式进行设置:</p>
|
|
|
-<pre><code class="language-bash">python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
+<pre><code class="language-bash">python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R-L.yaml \
|
|
|
-o Global.mode=check_dataset \
|
|
|
-o Global.dataset_dir=./dataset/DOTA-sampled200_crop1024_data \
|
|
|
-o CheckDataset.split.enable=True \
|
|
|
@@ -382,16 +380,16 @@ CheckDataset:
|
|
|
</code></pre></details>
|
|
|
|
|
|
### 4.2 模型训练
|
|
|
-一条命令即可完成模型的训练,以此处旋转目标检测模型 `PP-YOLOE-R_L` 的训练为例:
|
|
|
+一条命令即可完成模型的训练,以此处旋转目标检测模型 `PP-YOLOE-R-L` 的训练为例:
|
|
|
|
|
|
```bash
|
|
|
-python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
+python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R-L.yaml \
|
|
|
-o Global.mode=train \
|
|
|
-o Global.dataset_dir=./dataset/DOTA-sampled200_crop1024_data
|
|
|
```
|
|
|
需要如下几步:
|
|
|
|
|
|
-* 指定模型的`.yaml` 配置文件路径(此处为`PP-YOLOE-R_L.yaml`,训练其他模型时,需要的指定相应的配置文件,模型和配置的文件的对应关系,可以查阅[PaddleX模型列表(CPU/GPU)](../../../support_list/models_list.md))
|
|
|
+* 指定模型的`.yaml` 配置文件路径(此处为`PP-YOLOE-R-L.yaml`,训练其他模型时,需要的指定相应的配置文件,模型和配置的文件的对应关系,可以查阅[PaddleX模型列表(CPU/GPU)](../../../support_list/models_list.md))
|
|
|
* 指定模式为模型训练:`-o Global.mode=train`
|
|
|
* 指定训练数据集路径:`-o Global.dataset_dir`
|
|
|
其他相关参数均可通过修改`.yaml`配置文件中的`Global`和`Train`下的字段来进行设置,也可以通过在命令行中追加参数来进行调整。如指定前 2 卡 gpu 训练:`-o Global.device=gpu:0,1`;设置训练轮次数为 10:`-o Train.epochs_iters=10`。更多可修改的参数及其详细解释,可以查阅模型对应任务模块的配置文件说明[PaddleX通用模型配置文件参数说明](../../instructions/config_parameters_common.md)。
|
|
|
@@ -416,13 +414,13 @@ python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
在完成模型训练后,可以对指定的模型权重文件在验证集上进行评估,验证模型精度。使用 PaddleX 进行模型评估,一条命令即可完成模型的评估:
|
|
|
|
|
|
```bash
|
|
|
-python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
+python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R-L.yaml \
|
|
|
-o Global.mode=evaluate \
|
|
|
-o Global.dataset_dir=./dataset/DOTA-sampled200_crop1024_data
|
|
|
```
|
|
|
与模型训练类似,需要如下几步:
|
|
|
|
|
|
-* 指定模型的`.yaml` 配置文件路径(此处为`PP-YOLOE-R_L.yaml`)
|
|
|
+* 指定模型的`.yaml` 配置文件路径(此处为`PP-YOLOE-R-L.yaml`)
|
|
|
* 指定模式为模型评估:`-o Global.mode=evaluate`
|
|
|
* 指定验证数据集路径:`-o Global.dataset_dir`
|
|
|
其他相关参数均可通过修改`.yaml`配置文件中的`Global`和`Evaluate`下的字段来进行设置,详细请参考[PaddleX通用模型配置文件参数说明](../../instructions/config_parameters_common.md)。
|
|
|
@@ -439,14 +437,14 @@ python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
|
|
|
* 通过命令行的方式进行推理预测,只需如下一条命令。运行以下代码前,请您下载[示例图片](https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/rotated_object_detection_001.png)到本地。
|
|
|
```bash
|
|
|
-python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R_L.yaml \
|
|
|
+python main.py -c paddlex/configs/rotated_object_detection/PP-YOLOE-R-L.yaml \
|
|
|
-o Global.mode=predict \
|
|
|
-o Predict.model_dir="./output/best_model/inference" \
|
|
|
-o Predict.input="rotated_object_detection_001.png"
|
|
|
```
|
|
|
与模型训练和评估类似,需要如下几步:
|
|
|
|
|
|
-* 指定模型的`.yaml` 配置文件路径(此处为`PP-YOLOE-R_L.yaml`)
|
|
|
+* 指定模型的`.yaml` 配置文件路径(此处为`PP-YOLOE-R-L.yaml`)
|
|
|
* 指定模式为模型推理预测:`-o Global.mode=predict`
|
|
|
* 指定模型权重路径:`-o Predict.model_dir="./output/best_model/inference"`
|
|
|
* 指定输入数据路径:`-o Predict.input="..."`
|