PointRend

  • 参考实现:
url=https://github.com/facebookresearch/detectron2
branch=master 
commit_id=f5e4c452bba854b8ed14a7240f51720ca7857e91

PointRend Detail

  • 增加了混合精度训练
  • 增加了多卡分布式训练
  • 优化了loss在NPU上的计算效率

Requirements

  • CANN 5.0.2及对应版本的PyTorch
  • pip3.7 install -r requirements.txt

安装完其他依赖后,请使用代码仓中的源码编译安装detectron2:

source test/env_npu.sh
python3 -m pip install -e .

准备数据集

创建一个存放数据集的文件夹(如/root/datasets/cityscapes),再从cityscapes官网获取gtFine_trainvaltest.zip和leftImg8bit_trainvaltest.zip,将这两个压缩包解压到创建的文件夹中,随后参考detectron2官网的方法创建labelTrainIds.png :

python3 createTrainLabelIds.py /root/datasets/cityscapes

准备预训练权重

wget https://ascend-pytorch-model-file.obs.cn-north-4.myhuaweicloud.com/%E9%AA%8C%E6%94%B6-%E8%AE%AD%E7%BB%83/cv/semantic_segmentation/PointRend/R-101.pkl

脚本默认权重文件位于工程根目录下,如果放在其他路径请在之后运行脚本时指定权重路径。

Training

source test/env_npu.sh
# 1p train perf
bash test/train_performance_1p.sh --data_path=数据集路径(如/root/datasets) --pth_path=权重路径(非必需) --output_path=输出文件路径(非必需,默认为./output)

# 8p train perf
bash test/train_performance_8p.sh --data_path=数据集路径(如/root/datasets) --pth_path=权重路径(非必需) --output_path=输出文件路径(非必需,默认为./output)

# 1p train full
bash test/train_full_1p.sh --data_path=数据集路径(如/root/datasets) --pth_path=权重路径(非必需) --output_path=输出文件路径(非必需,默认为./output)

# 8p train full
bash test/train_full_8p.sh --data_path=数据集路径(如/root/datasets) --pth_path=权重路径(非必需) --output_path=输出文件路径(非必需,默认为./output)

# eval
bash test/train_eval_8p.sh --data_path=数据集路径(如/root/datasets) --pth_path=权重路径(非必需) --output_path=输出文件路径(非必需,默认为./output)

# finetuning
bash test/train_finetune_1p.sh --data_path=数据集路径(如/root/datasets) --pth_path=权重路径(非必需) --output_path=输出文件路径(非必需,默认为./output)



## PointRend training result

|IOU       | FPS       | Npu_nums | Steps    | AMP_Type |
| :------: | :------:  | :------: | :------: | :------: |
| 78.08    | 8.47      | 1        | 65000    | O1       |
| 77.58    | 29.01     | 8        | 65000    | O1       |

公网地址说明

代码涉及公网地址参考 public_address_statement.md