未验证 提交 099d1276 编写于 作者: C cnn 提交者: GitHub

[cherry-pick] update document and config (#3880)

* updata document, test=document_fix
上级 6b54ae80
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
## 简介 ## 简介
[S2ANet](https://arxiv.org/pdf/2008.09397.pdf)是用于检测旋转框的模型,要求使用PaddlePaddle 2.0.1(可使用pip安装)及以上版本 [S2ANet](https://arxiv.org/pdf/2008.09397.pdf)是用于检测旋转框的模型,要求使用PaddlePaddle 2.1.1(可使用pip安装) 或适当的[develop版本](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/install/Tables.html#whl-release)
## 准备数据 ## 准备数据
...@@ -53,11 +53,11 @@ DOTA数据集中总共有2806张图像,其中1411张图像作为训练集,45 ...@@ -53,11 +53,11 @@ DOTA数据集中总共有2806张图像,其中1411张图像作为训练集,45
- PaddlePaddle >= 2.1.1 - PaddlePaddle >= 2.1.1
- GCC == 8.2 - GCC == 8.2
推荐使用docker镜像[paddle:2.0.1-gpu-cuda10.1-cudnn7](registry.baidubce.com/paddlepaddle/paddle:2.1.1-gpu-cuda10.2-cudnn7) 推荐使用docker镜像[paddle:2.1.1-gpu-cuda10.1-cudnn7](registry.baidubce.com/paddlepaddle/paddle:2.1.1-gpu-cuda10.1-cudnn7)
执行如下命令下载镜像并启动容器: 执行如下命令下载镜像并启动容器:
``` ```
sudo nvidia-docker run -it --name paddle_s2anet -v $PWD:/paddle --network=host registry.baidubce.com/paddlepaddle/paddle:2.1.1-gpu-cuda10.2-cudnn7 /bin/bash sudo nvidia-docker run -it --name paddle_s2anet -v $PWD:/paddle --network=host registry.baidubce.com/paddlepaddle/paddle:2.1.1-gpu-cuda10.1-cudnn7 /bin/bash
``` ```
镜像中paddle已安装好,进入python3.7,执行如下代码检查paddle安装是否正常: 镜像中paddle已安装好,进入python3.7,执行如下代码检查paddle安装是否正常:
...@@ -90,15 +90,7 @@ python3.7 test.py ...@@ -90,15 +90,7 @@ python3.7 test.py
### 2. 训练 ### 2. 训练
**注意:** **注意:**
配置文件中学习率是按照4卡GPU训练设置的,如果使用单卡GPU训练,请将学习率设置为原来的1/4。 配置文件中学习率是按照8卡GPU训练设置的,如果使用单卡GPU训练,请将学习率设置为原来的1/8。
准备数据
```bash
cd dataset/spine_coco
wget https://paddledet.bj.bcebos.com/data/spine_coco.tar
tar -xvf spine_coco.tar
cd ../../
```
GPU单卡训练 GPU单卡训练
```bash ```bash
...@@ -108,25 +100,26 @@ python3.7 tools/train.py -c configs/dota/s2anet_1x_spine.yml ...@@ -108,25 +100,26 @@ python3.7 tools/train.py -c configs/dota/s2anet_1x_spine.yml
GPU多卡训练 GPU多卡训练
```bash ```bash
export CUDA_VISIBLE_DEVICES=0,1,2,3 export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python3.7 -m paddle.distributed.launch --gpus 0,1,2,3 tools/train.py -c configs/dota/s2anet_1x_spine.yml python3.7 -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/dota/s2anet_1x_spine.yml
``` ```
可以通过`--eval`开启边训练边测试。 可以通过`--eval`开启边训练边测试。
### 2. 评估 ### 3. 评估
```bash ```bash
python3.7 tools/eval.py -c configs/dota/s2anet_1x_spine.yml -o weights=output/s2anet_1x_spine/model_final.pdparams python3.7 tools/eval.py -c configs/dota/s2anet_1x_spine.yml -o weights=output/s2anet_1x_spine/model_final.pdparams
``` ```
** 注意:** dota数据集中是train和val数据作为训练集一起训练的,对dota数据集进行评估时需要自定义设置评估数据集配置。
### 3. 预测 ### 4. 预测
执行如下命令,会将图像预测结果保存到`output_dir`文件夹下。 执行如下命令,会将图像预测结果保存到`output`文件夹下。
```bash ```bash
python3.7 tools/infer.py -c configs/dota/s2anet_1x_spine.yml -o weights=output/s2anet_1x_spine/model_final.pdparams --infer_img=demo/39006.jpg python3.7 tools/infer.py -c configs/dota/s2anet_1x_spine.yml -o weights=output/s2anet_1x_spine/model_final.pdparams --infer_img=demo/39006.jpg
``` ```
### 4. DOTA数据评估 ### 5. DOTA数据评估
执行如下命令,会在`output_dir`文件夹下将每个图像预测结果保存到同文件夹名的txt文本中。 执行如下命令,会在`output`文件夹下将每个图像预测结果保存到同文件夹名的txt文本中。
``` ```
python3.7 tools/infer.py -c configs/dota/s2anet_1x_dota.yml -o weights=./weights/s2anet_1x_dota.pdparams --infer_dir=dota_test_images --draw_threshold=0.05 --save_txt=True --output_dir=output python3.7 tools/infer.py -c configs/dota/s2anet_1x_dota.yml -o weights=./weights/s2anet_1x_dota.pdparams --infer_dir=dota_test_images --draw_threshold=0.05 --save_txt=True --output_dir=output
``` ```
......
epoch: 12 epoch: 12
LearningRate: LearningRate:
base_lr: 0.005 base_lr: 0.01
schedulers: schedulers:
- !PiecewiseDecay - !PiecewiseDecay
gamma: 0.1 gamma: 0.1
......
epoch: 24 epoch: 24
LearningRate: LearningRate:
base_lr: 0.005 base_lr: 0.01
schedulers: schedulers:
- !PiecewiseDecay - !PiecewiseDecay
gamma: 0.1 gamma: 0.1
......
...@@ -8,9 +8,9 @@ _BASE_: [ ...@@ -8,9 +8,9 @@ _BASE_: [
weights: output/s2anet_1x_spine/model_final weights: output/s2anet_1x_spine/model_final
# for 4 card # for 8 card
LearningRate: LearningRate:
base_lr: 0.005 base_lr: 0.01
S2ANetHead: S2ANetHead:
anchor_strides: [8, 16, 32, 64, 128] anchor_strides: [8, 16, 32, 64, 128]
......
_BASE_: [ _BASE_: [
'../datasets/dota.yml', '../datasets/dota.yml',
'../runtime.yml', '../runtime.yml',
'_base_/s2anet_optimizer_1x.yml', '_base_/s2anet_optimizer_2x.yml',
'_base_/s2anet.yml', '_base_/s2anet.yml',
'_base_/s2anet_reader.yml', '_base_/s2anet_reader.yml',
] ]
weights: output/s2anet_1x_dota/model_final weights: output/s2anet_conv_1x_dota/model_final
ResNet:
depth: 50
variant: b
norm_type: bn
return_idx: [1,2,3]
num_stages: 4
S2ANetHead: S2ANetHead:
anchor_strides: [8, 16, 32, 64, 128] anchor_strides: [8, 16, 32, 64, 128]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册