diff --git a/model_zoo/research/cv/deeplabv3plus/README_CN.md b/model_zoo/research/cv/deeplabv3plus/README_CN.md
index 886a0abe1d4..fbf74db8d48 100644
--- a/model_zoo/research/cv/deeplabv3plus/README_CN.md
+++ b/model_zoo/research/cv/deeplabv3plus/README_CN.md
@@ -17,10 +17,12 @@
- [训练过程](#训练过程)
- [用法](#用法)
- [Ascend处理器环境运行](#ascend处理器环境运行)
+ - [GPU处理器环境运行](#gpu处理器环境运行)
- [结果](#结果)
- [评估过程](#评估过程)
- [用法](#用法-1)
- [Ascend处理器环境运行](#ascend处理器环境运行-1)
+ - [GPU处理器环境运行](#gpu处理器环境运行-1)
- [结果](#结果-1)
- [训练准确率](#训练准确率)
- [模型描述](#模型描述)
@@ -173,6 +175,66 @@ run_eval_s8_multiscale.sh
run_eval_s8_multiscale_flip.sh
```
+- GPU处理器环境运行
+
+按照以下训练步骤进行8卡训练:
+
+1.使用VOCaug数据集训练s16,微调ResNet-101预训练模型。脚本如下:
+
+```bash
+bash run_distribute_train_s16_r1_gpu.sh /PATH/TO/MINDRECORD_NAME /PATH/TO/PRETRAIN_MODEL
+```
+
+2.使用VOCaug数据集训练s8,微调上一步的模型。脚本如下:
+
+```bash
+bash run_distribute_train_s8_r1_gpu.sh /PATH/TO/MINDRECORD_NAME /PATH/TO/PRETRAIN_MODEL
+```
+
+3.使用VOCtrain数据集训练s8,微调上一步的模型。脚本如下:
+
+```bash
+bash run_distribute_train_s8_r2_gpu.sh /PATH/TO/MINDRECORD_NAME /PATH/TO/PRETRAIN_MODEL
+```
+
+评估步骤如下:
+
+1.使用voc val数据集评估s16。评估脚本如下:
+
+```bash
+bash run_eval_s16_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID
+```
+
+2.使用voc val数据集评估多尺度s16。评估脚本如下:
+
+```bash
+bash run_eval_s16_multiscale_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID
+```
+
+3.使用voc val数据集评估多尺度和翻转s16。评估脚本如下:
+
+```bash
+bash run_eval_s16_multiscale_flip_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID
+```
+
+4.使用voc val数据集评估s8。评估脚本如下:
+
+```bash
+bash run_eval_s8_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID
+```
+
+5.使用voc val数据集评估多尺度s8。评估脚本如下:
+
+```bash
+bash run_eval_s8_multiscale_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID
+```
+
+6.使用voc val数据集评估多尺度和翻转s8。评估脚本如下:
+
+```bash
+bash run_eval_s8_multiscale_flip_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID
+```
+
# 脚本说明
## 脚本及样例代码
@@ -192,6 +254,15 @@ run_eval_s8_multiscale_flip.sh
├── run_eval_s8.sh # 使用s8结构启动Ascend评估
├── run_eval_s8_multiscale.sh # 使用多尺度s8结构启动Ascend评估
├── run_eval_s8_multiscale_filp.sh # 使用多尺度和翻转s8结构启动Ascend评估
+ ├── run_distribute_train_s16_r1_gpu.sh # 使用s16结构的VOCaug数据集启动GPU分布式训练(8卡)
+ ├── run_distribute_train_s8_r1_gpu.sh # 使用s8结构的VOCaug数据集启动GPU分布式训练(8卡)
+ ├── run_distribute_train_s8_r2_gpu.sh # 使用s8结构的VOCtrain数据集启动GPU分布式训练(8卡)
+ ├── run_eval_s16_gpu.sh # 使用s16结构启动GPU评估
+ ├── run_eval_s16_multiscale_gpu.sh # 使用多尺度s16结构启动GPU评估
+ ├── run_eval_s16_multiscale_filp_gpu.sh # 使用多尺度和翻转s16结构启动GPU评估
+ ├── run_eval_s8_gpu.sh # 使用s8结构启动GPU评估
+ ├── run_eval_s8_multiscale_gpu.sh # 使用多尺度s8结构启动GPU评估
+ ├── run_eval_s8_multiscale_filp_gpu.sh # 使用多尺度和翻转s8结构启动GPU评估
├── src
├── tools
├── get_dataset_list.py # 获取数据清单文件
@@ -274,7 +345,7 @@ do
echo 'start rank='$i', device id='$DEVICE_ID'...'
mkdir ${train_path}/device$DEVICE_ID
cd ${train_path}/device$DEVICE_ID
- ython ${train_code_path}/train.py --train_dir=${train_path}/ckpt \
+ python ${train_code_path}/train.py --train_dir=${train_path}/ckpt \
--data_file=/PATH/TO/MINDRECORD_NAME \
--train_epochs=300 \
--batch_size=32 \
@@ -374,6 +445,10 @@ python train.py --train_url=/PATH/TO/OUTPUT_DIR \
--save_steps=410 \
```
+#### GPU处理器环境运行
+
+具体参数配置可参照[快速入门](#快速入门)中8卡训练脚本。
+
### 结果
#### Ascend处理器环境运行
@@ -483,6 +558,10 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
```
+#### GPU处理器环境运行
+
+具体参数配置可参照[快速入门](#快速入门)中评估测试脚本。
+
### 结果
运行适用的训练脚本获取结果。要获得相同的结果,请按照快速入门中的步骤操作。
@@ -506,21 +585,21 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
### 评估性能
-| 参数 | Ascend 910|
-| -------------------------- | -------------------------------------- |
-| 模型版本 | DeepLabV3+ |
-| 资源 | Ascend 910 |
-| 上传日期 | 2021-03-16 |
-| MindSpore版本 | 1.1.1 |
-| 数据集 | PASCAL VOC2012 + SBD |
-| 训练参数 | epoch = 300, batch_size = 32 (s16_r1) epoch = 800, batch_size = 16 (s8_r1) epoch = 300, batch_size = 16 (s8_r2) |
-| 优化器 | Momentum |
-| 损失函数 | Softmax交叉熵 |
-| 输出 | 概率 |
-| 损失 | 0.0041095633 |
-| 性能 | 187736.386 ms(单卡,s16)
44474.187 ms(八卡,s16) |
-| 微调检查点 | 453M (.ckpt文件) |
-| 脚本 | [链接](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/deeplabv3plus) |
+| 参数 | Ascend 910| GPU |
+| -------------------------- | -------------------------------------- | -------------------------------------- |
+| 模型版本 | DeepLabV3+ | DeepLabV3+ |
+| 资源 | Ascend 910 |NV SMX2 V100-32G|
+| 上传日期 | 2021-03-16 |2021-08-23|
+| MindSpore版本 | 1.1.1 |1.4.0|
+| 数据集 | PASCAL VOC2012 + SBD | PASCAL VOC2012 + SBD |
+| 训练参数 | epoch = 300, batch_size = 32 (s16_r1) epoch = 800, batch_size = 16 (s8_r1) epoch = 300, batch_size = 16 (s8_r2) |epoch = 300, batch_size = 16 (s16_r1) epoch = 800, batch_size = 8 (s8_r1) epoch = 300, batch_size = 8 (s8_r2) |
+| 优化器 | Momentum | Momentum |
+| 损失函数 | Softmax交叉熵 |Softmax交叉熵 |
+| 输出 | 概率 |概率 |
+| 损失 | 0.0041095633 |0.003395824|
+| 性能 | 187736.386 ms(单卡,s16)
44474.187 ms(八卡,s16) | 1080 ms/step(单卡,s16)|
+| 微调检查点 | 453M (.ckpt文件) | 454M (.ckpt文件)|
+| 脚本 | [链接](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/deeplabv3plus) |[链接](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/deeplabv3plus) |
# 随机情况说明
diff --git a/model_zoo/research/cv/deeplabv3plus/eval.py b/model_zoo/research/cv/deeplabv3plus/eval.py
index ffb48f6cfed..9bceefc5dfd 100644
--- a/model_zoo/research/cv/deeplabv3plus/eval.py
+++ b/model_zoo/research/cv/deeplabv3plus/eval.py
@@ -24,9 +24,6 @@ from mindspore import context
from mindspore.train.serialization import load_checkpoint, load_param_into_net
from src.deeplab_v3plus import DeepLabV3Plus
-context.set_context(mode=context.GRAPH_MODE, device_target="Ascend", save_graphs=False,
- device_id=int(os.getenv('DEVICE_ID')))
-
def parse_args():
"""parse_args"""
@@ -44,6 +41,11 @@ def parse_args():
parser.add_argument('--ignore_label', type=int, default=255, help='ignore label')
parser.add_argument('--num_classes', type=int, default=21, help='number of classes')
+ # device info
+ parser.add_argument('--device_target', type=str, default='Ascend', choices=['Ascend', 'GPU', 'CPU'],
+ help='device where the code will be implemented. (Default: Ascend)')
+ parser.add_argument('--device_id', type=int, default=0, help='device id')
+
# model
parser.add_argument('--model', type=str, default='', help='select model')
parser.add_argument('--freeze_bn', action='store_true', default=False, help='freeze bn')
@@ -154,7 +156,8 @@ def eval_batch_scales(args, eval_net, img_lst, scales,
def net_eval():
"""net_eval"""
args = parse_args()
-
+ context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target, save_graphs=False,
+ device_id=args.device_id)
# data list
with open(args.data_lst) as f:
img_lst = f.readlines()
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_alone_train.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_alone_train.sh
index c3d2aab1add..08c0e7ae791 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_alone_train.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_alone_train.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=5
+DEVICE_ID=5
export SLOG_PRINT_TO_STDOUT=0
train_path=/PATH/TO/EXPERIMENTS_DIR
train_code_path=/PATH/TO/MODEL_ZOO_CODE
@@ -41,4 +41,5 @@ python ${train_code_path}/train.py --data_file=/PATH/TO/MINDRECORD_NAME \
--model=DeepLabV3plus_s16 \
--ckpt_pre_trained=/PATH/TO/PRETRAIN_MODEL \
--save_steps=1500 \
- --keep_checkpoint_max=200 >log 2>&1 &
\ No newline at end of file
+ --keep_checkpoint_max=200 \
+ --device_id=$DEVICE_ID >log 2>&1 &
\ No newline at end of file
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1.sh
index d9e64b905fe..f3b9ae65a28 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1.sh
@@ -31,7 +31,7 @@ mkdir ${train_path}/ckpt
for((i=0;i<=$RANK_SIZE-1;i++));
do
export RANK_ID=${i}
- export DEVICE_ID=$((i + RANK_START_ID))
+ DEVICE_ID=$((i + RANK_START_ID))
echo 'start rank='${i}', device id='${DEVICE_ID}'...'
mkdir ${train_path}/device${DEVICE_ID}
cd ${train_path}/device${DEVICE_ID} || exit
@@ -50,5 +50,6 @@ do
--ckpt_pre_trained=/PATH/TO/PRETRAIN_MODEL \
--is_distributed \
--save_steps=410 \
- --keep_checkpoint_max=200 >log 2>&1 &
+ --keep_checkpoint_max=200 \
+ --device_id=$DEVICE_ID >log 2>&1 &
done
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1_gpu.sh
new file mode 100644
index 00000000000..a64263de8f9
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s16_r1_gpu.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+
+if [ $# != 2 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_distribute_train_s16_r1_gpu.sh /PATH/TO/MINDRECORD_NAME /PATH/TO/PRETRAIN_MODEL"
+ echo "for example:"
+ echo "bash run_distribute_train_s16_r1_gpu.sh \
+ voc2012/mindrecord_train/vocaug_mindrecord0 resnet101_ascend_v120_imagenet2012_official_cv_bs32_acc78.ckpt"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+exit 1
+fi
+
+DATA_FILE=$1
+CKPT_PRE_TRAINED=$2
+
+ulimit -c unlimited
+export SLOG_PRINT_TO_STDOUT=0
+
+export RANK_SIZE=8
+export GLOG_v=2
+
+train_path=s16_train
+if [ -d ${train_path} ]; then
+ rm -rf ${train_path}
+fi
+mkdir -p ${train_path}
+mkdir ${train_path}/ckpt
+cp ../*.py ${train_path}
+cp -r ../src ${train_path}
+cd ${train_path} || exit
+
+mpirun -allow-run-as-root -n $RANK_SIZE --output-filename log_output --merge-stderr-to-stdout \
+python ./train.py --train_dir=${train_path}/ckpt \
+ --data_file=$DATA_FILE \
+ --train_epochs=300 \
+ --batch_size=16 \
+ --crop_size=513 \
+ --base_lr=0.04 \
+ --lr_type=cos \
+ --min_scale=0.5 \
+ --max_scale=2.0 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s16 \
+ --ckpt_pre_trained=$CKPT_PRE_TRAINED \
+ --is_distributed \
+ --save_steps=410 \
+ --keep_checkpoint_max=200 \
+ --device_target="GPU" >log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1.sh
index bd69d978d00..3bdcee0a5bd 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1.sh
@@ -31,7 +31,7 @@ mkdir ${train_path}/ckpt
for((i=0;i<=$RANK_SIZE-1;i++));
do
export RANK_ID=${i}
- export DEVICE_ID=$((i + RANK_START_ID))
+ DEVICE_ID=$((i + RANK_START_ID))
echo 'start rank='${i}', device id='${DEVICE_ID}'...'
mkdir ${train_path}/device${DEVICE_ID}
cd ${train_path}/device${DEVICE_ID} || exit
@@ -51,5 +51,6 @@ do
--ckpt_pre_trained=/PATH/TO/PRETRAIN_MODEL \
--is_distributed \
--save_steps=820 \
- --keep_checkpoint_max=200 >log 2>&1 &
+ --keep_checkpoint_max=200 \
+ --device_id=$DEVICE_ID >log 2>&1 &
done
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1_gpu.sh
new file mode 100644
index 00000000000..80daa4481e7
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r1_gpu.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+if [ $# != 2 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_distribute_train_s8_r1_gpu.sh /PATH/TO/MINDRECORD_NAME /PATH/TO/PRETRAIN_MODEL"
+ echo "for example:"
+ echo "bash run_distribute_train_s8_r1_gpu.sh \
+ voc2012/mindrecord_train/vocaug_mindrecord0 ckpt/DeepLabV3plus_s16-300_82.ckpt"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+DATA_FILE=$1
+CKPT_PRE_TRAINED=$2
+
+ulimit -c unlimited
+export SLOG_PRINT_TO_STDOUT=0
+
+export RANK_SIZE=8
+export GLOG_v=2
+
+train_path=s8_r1_train
+if [ -d ${train_path} ]; then
+ rm -rf ${train_path}
+fi
+mkdir -p ${train_path}
+mkdir ${train_path}/ckpt
+cp ../*.py ${train_path}
+cp -r ../src ${train_path}
+cd ${train_path} || exit
+
+
+mpirun -allow-run-as-root -n $RANK_SIZE --output-filename log_output --merge-stderr-to-stdout \
+python ./train.py --train_dir=${train_path}/ckpt \
+ --data_file=$DATA_FILE \
+ --train_epochs=800 \
+ --batch_size=8 \
+ --crop_size=513 \
+ --base_lr=0.01 \
+ --lr_type=cos \
+ --min_scale=0.5 \
+ --max_scale=2.0 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s8 \
+ --loss_scale=2048 \
+ --ckpt_pre_trained=$CKPT_PRE_TRAINED \
+ --is_distributed \
+ --save_steps=820 \
+ --keep_checkpoint_max=200 \
+ --device_target="GPU" >log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2.sh
index 5d16e0729c7..be077f0871e 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2.sh
@@ -31,7 +31,7 @@ mkdir ${train_path}/ckpt
for((i=0;i<=$RANK_SIZE-1;i++));
do
export RANK_ID=${i}
- export DEVICE_ID=$((i + RANK_START_ID))
+ DEVICE_ID=$((i + RANK_START_ID))
echo 'start rank='${i}', device id='${DEVICE_ID}'...'
mkdir ${train_path}/device${DEVICE_ID}
cd ${train_path}/device${DEVICE_ID} || exit
@@ -51,5 +51,6 @@ do
--ckpt_pre_trained=/PATH/TO/PRETRAIN_MODEL \
--is_distributed \
--save_steps=110 \
- --keep_checkpoint_max=200 >log 2>&1 &
+ --keep_checkpoint_max=200 \
+ --device_id=$DEVICE_ID >log 2>&1 &
done
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2_gpu.sh
new file mode 100644
index 00000000000..42500be9bdf
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_distribute_train_s8_r2_gpu.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+
+if [ $# != 2 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_distribute_train_s8_r2_gpu.sh /PATH/TO/MINDRECORD_NAME /PATH/TO/PRETRAIN_MODEL"
+ echo "for example:"
+ echo "bash run_distribute_train_s8_r2_gpu.sh \
+ voc2012/mindrecord_voctrain/mindrecord_voctrain0 ckpt/DeepLabV3plus_s8-800_165.ckpt"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+
+DATA_FILE=$1
+CKPT_PRE_TRAINED=$2
+
+ulimit -c unlimited
+export SLOG_PRINT_TO_STDOUT=0
+
+export RANK_SIZE=8
+export GLOG_v=2
+
+train_path=s8_r2_train
+if [ -d ${train_path} ]; then
+ rm -rf ${train_path}
+fi
+mkdir -p ${train_path}
+mkdir ${train_path}/ckpt
+cp ../*.py ${train_path}
+cp -r ../src ${train_path}
+cd ${train_path} || exit
+
+
+mpirun -allow-run-as-root -n $RANK_SIZE --output-filename log_output --merge-stderr-to-stdout \
+python ./train.py --train_dir=${train_path}/ckpt \
+ --data_file=$DATA_FILE \
+ --train_epochs=300 \
+ --batch_size=8 \
+ --crop_size=513 \
+ --base_lr=0.004 \
+ --lr_type=cos \
+ --min_scale=0.5 \
+ --max_scale=2.0 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s8 \
+ --loss_scale=2048 \
+ --ckpt_pre_trained=$CKPT_PRE_TRAINED \
+ --is_distributed \
+ --save_steps=110 \
+ --keep_checkpoint_max=200 \
+ --device_target="GPU" >log 2>&1 &
+
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16.sh
index 1083045941d..768ec68ed15 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=3
+DEVICE_ID=3
export SLOG_PRINT_TO_STDOUT=0
train_code_path=/PATH/TO/MODEL_ZOO_CODE
eval_path=/PATH/TO/EVAL
@@ -33,5 +33,6 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--model=DeepLabV3plus_s16 \
--scales=1.0 \
--freeze_bn \
- --ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
+ --ckpt_path=/PATH/TO/PRETRAIN_MODEL \
+ --device_id=$DEVICE_ID >${eval_path}/eval_log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_gpu.sh
new file mode 100644
index 00000000000..549ea6f6e26
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_gpu.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+if [ $# != 4 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_eval_s16_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID"
+ echo "for example:"
+ echo "bash run_eval_s16_gpu.sh \
+ voc2012/VOCdevkit/VOC2012 voc2012/voc_val_lst.txt ckpt/DeepLabV3plus_s16-300_82.ckpt 0"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+DATA_ROOT=$1
+DATA_LST=$2
+CKPT_PATH=$3
+export CUDA_VISIBLE_DEVICES=$4
+
+export SLOG_PRINT_TO_STDOUT=0
+eval_path=s16_eval
+if [ -d ${eval_path} ]; then
+ rm -rf ${eval_path}
+fi
+mkdir -p ${eval_path}
+cp ../*.py ${eval_path}
+cp -r ../src ${eval_path}
+cd ${eval_path} || exit
+
+python ./eval.py --data_root=$DATA_ROOT \
+ --data_lst=$DATA_LST \
+ --batch_size=32 \
+ --crop_size=513 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s16 \
+ --scales=1.0 \
+ --freeze_bn \
+ --ckpt_path=$CKPT_PATH \
+ --device_target="GPU" \
+ --device_id=0 > eval_log 2>&1 &
+
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale.sh
index 3e16a53c21b..318cdded2c6 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=3
+DEVICE_ID=3
export SLOG_PRINT_TO_STDOUT=0
train_code_path=/PATH/TO/MODEL_ZOO_CODE
eval_path=/PATH/TO/EVAL
@@ -37,4 +37,5 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--scales=1.25 \
--scales=1.75 \
--freeze_bn \
- --ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
\ No newline at end of file
+ --ckpt_path=/PATH/TO/PRETRAIN_MODEL \
+ --device_id=$DEVICE_ID >${eval_path}/eval_log 2>&1 &
\ No newline at end of file
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip.sh
index 7436872761b..a5152f0cdb5 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=3
+DEVICE_ID=3
export SLOG_PRINT_TO_STDOUT=0
train_code_path=/PATH/TO/MODEL_ZOO_CODE
eval_path=/PATH/TO/EVAL
@@ -38,5 +38,6 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--scales=1.75 \
--flip \
--freeze_bn \
- --ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
+ --ckpt_path=/PATH/TO/PRETRAIN_MODEL \
+ --device_id=$DEVICE_ID >${eval_path}/eval_log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip_gpu.sh
new file mode 100644
index 00000000000..e78f02b4d0a
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_flip_gpu.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+
+if [ $# != 4 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_eval_s16_multiscale_flip_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID"
+ echo "for example:"
+ echo "bash run_eval_s16_multiscale_flip_gpu.sh \
+ voc2012/VOCdevkit/VOC2012 voc2012/voc_val_lst.txt ckpt/DeepLabV3plus_s16-300_82.ckpt 0"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+DATA_ROOT=$1
+DATA_LST=$2
+CKPT_PATH=$3
+export CUDA_VISIBLE_DEVICES=$4
+
+export SLOG_PRINT_TO_STDOUT=0
+eval_path=s16_multiscale_flip_eval
+if [ -d ${eval_path} ]; then
+ rm -rf ${eval_path}
+fi
+mkdir -p ${eval_path}
+cp ../*.py ${eval_path}
+cp -r ../src ${eval_path}
+cd ${eval_path} || exit
+
+python ./eval.py --data_root=$DATA_ROOT \
+ --data_lst=$DATA_LST \
+ --batch_size=16 \
+ --crop_size=513 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s16 \
+ --scales=0.5 \
+ --scales=0.75 \
+ --scales=1.0 \
+ --scales=1.25 \
+ --scales=1.75 \
+ --flip \
+ --freeze_bn \
+ --ckpt_path=$CKPT_PATH \
+ --device_target="GPU" \
+ --device_id=0 > eval_log 2>&1 &
+
+
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_gpu.sh
new file mode 100644
index 00000000000..df5d7cde73f
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s16_multiscale_gpu.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+if [ $# != 4 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_eval_s16_multiscale_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID"
+ echo "for example:"
+ echo "bash run_eval_s16_multiscale_gpu.sh \
+ voc2012/VOCdevkit/VOC2012 voc2012/voc_val_lst.txt ckpt/DeepLabV3plus_s16-300_82.ckpt 0"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+DATA_ROOT=$1
+DATA_LST=$2
+CKPT_PATH=$3
+export CUDA_VISIBLE_DEVICES=$4
+
+export SLOG_PRINT_TO_STDOUT=0
+eval_path=s16_multiscale_eval
+if [ -d ${eval_path} ]; then
+ rm -rf ${eval_path}
+fi
+mkdir -p ${eval_path}
+cp ../*.py ${eval_path}
+cp -r ../src ${eval_path}
+cd ${eval_path} || exit
+
+python ./eval.py --data_root=$DATA_ROOT \
+ --data_lst=$DATA_LST \
+ --batch_size=16 \
+ --crop_size=513 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s16 \
+ --scales=0.5 \
+ --scales=0.75 \
+ --scales=1.0 \
+ --scales=1.25 \
+ --scales=1.75 \
+ --freeze_bn \
+ --ckpt_path=$CKPT_PATH \
+ --device_target="GPU" \
+ --device_id=0 > eval_log 2>&1 &
\ No newline at end of file
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8.sh
index c9127dd3e2d..905b88ed02d 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=3
+DEVICE_ID=3
export SLOG_PRINT_TO_STDOUT=0
train_code_path=/PATH/TO/MODEL_ZOO_CODE
eval_path=/PATH/TO/EVAL
@@ -33,5 +33,6 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--model=DeepLabV3plus_s8 \
--scales=1.0 \
--freeze_bn \
- --ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
+ --ckpt_path=/PATH/TO/PRETRAIN_MODEL \
+ --device_id=$DEVICE_ID >${eval_path}/eval_log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_gpu.sh
new file mode 100644
index 00000000000..3b6ae32b022
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_gpu.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+
+if [ $# != 4 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_eval_s8_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID"
+ echo "for example:"
+ echo "bash run_eval_s8_gpu.sh \
+ voc2012/VOCdevkit/VOC2012 voc2012/voc_val_lst.txt ckpt/DeepLabV3plus_s16-300_82.ckpt 0"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+DATA_ROOT=$1
+DATA_LST=$2
+CKPT_PATH=$3
+export CUDA_VISIBLE_DEVICES=$4
+
+export SLOG_PRINT_TO_STDOUT=0
+eval_path=s8_eval
+if [ -d ${eval_path} ]; then
+ rm -rf ${eval_path}
+fi
+mkdir -p ${eval_path}
+cp ../*.py ${eval_path}
+cp -r ../src ${eval_path}
+cd ${eval_path} || exit
+
+
+python ./eval.py --data_root=$DATA_ROOT \
+ --data_lst=$DATA_LST \
+ --batch_size=16 \
+ --crop_size=513 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s8 \
+ --scales=1.0 \
+ --freeze_bn \
+ --ckpt_path=$CKPT_PATH \
+ --device_target="GPU" \
+ --device_id=0 > eval_log 2>&1 &
+
+
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale.sh
index 6859651f607..94d8b2aec80 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=3
+DEVICE_ID=3
export SLOG_PRINT_TO_STDOUT=0
train_code_path=/PATH/TO/MODEL_ZOO_CODE
eval_path=/PATH/TO/EVAL
@@ -37,5 +37,6 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--scales=1.25 \
--scales=1.75 \
--freeze_bn \
- --ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
+ --ckpt_path=/PATH/TO/PRETRAIN_MODEL \
+ --device_id=$DEVICE_ID >${eval_path}/eval_log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip.sh
index bc1cf0dfa8e..bb7ae74f3b8 100644
--- a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip.sh
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip.sh
@@ -14,7 +14,7 @@
# limitations under the License.
# ============================================================================
-export DEVICE_ID=3
+DEVICE_ID=3
export SLOG_PRINT_TO_STDOUT=0
train_code_path=/PATH/TO/MODEL_ZOO_CODE
eval_path=/PATH/TO/EVAL
@@ -38,5 +38,6 @@ python ${train_code_path}/eval.py --data_root=/PATH/TO/DATA \
--scales=1.75 \
--flip \
--freeze_bn \
- --ckpt_path=/PATH/TO/PRETRAIN_MODEL >${eval_path}/eval_log 2>&1 &
+ --ckpt_path=/PATH/TO/PRETRAIN_MODEL \
+ --device_id=$DEVICE_ID >${eval_path}/eval_log 2>&1 &
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip_gpu.sh
new file mode 100644
index 00000000000..cad07678f09
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_flip_gpu.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+if [ $# != 4 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_eval_s8_multiscale_flip_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID"
+ echo "for example:"
+ echo "bash run_eval_s8_multiscale_flip_gpu.sh \
+ voc2012/VOCdevkit/VOC2012 voc2012/voc_val_lst.txt ckpt/DeepLabV3plus_s16-300_82.ckpt 0"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+
+DATA_ROOT=$1
+DATA_LST=$2
+CKPT_PATH=$3
+export CUDA_VISIBLE_DEVICES=$4
+
+export SLOG_PRINT_TO_STDOUT=0
+eval_path=s8_multiscale_flip_eval
+if [ -d ${eval_path} ]; then
+ rm -rf ${eval_path}
+fi
+mkdir -p ${eval_path}
+cp ../*.py ${eval_path}
+cp -r ../src ${eval_path}
+cd ${eval_path} || exit
+
+
+python ./eval.py --data_root=$DATA_ROOT \
+ --data_lst=$DATA_LST \
+ --batch_size=16 \
+ --crop_size=513 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s8 \
+ --scales=0.5 \
+ --scales=0.75 \
+ --scales=1.0 \
+ --scales=1.25 \
+ --scales=1.75 \
+ --flip \
+ --freeze_bn \
+ --ckpt_path=$CKPT_PATH \
+ --device_target="GPU" \
+ --device_id=0 > eval_log 2>&1 &
+
+
diff --git a/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_gpu.sh b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_gpu.sh
new file mode 100644
index 00000000000..a0688ff39eb
--- /dev/null
+++ b/model_zoo/research/cv/deeplabv3plus/scripts/run_eval_s8_multiscale_gpu.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Copyright 2021 Huawei Technologies Co., Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============================================================================
+if [ $# != 4 ]
+then
+ echo "=============================================================================================================="
+ echo "Please run the script as: "
+ echo "bash run_eval_s8_multiscale_gpu.sh /PATH/TO/DATA /PATH/TO/DATA_lst.txt /PATH/TO/PRETRAIN_MODEL DEVICE_ID"
+ echo "for example:"
+ echo "bash run_eval_s8_multiscale_gpu.sh \
+ voc2012/VOCdevkit/VOC2012 voc2012/voc_val_lst.txt ckpt/DeepLabV3plus_s16-300_82.ckpt 0"
+ echo "It is better to use absolute path."
+ echo "=============================================================================================================="
+ exit 1
+fi
+DATA_ROOT=$1
+DATA_LST=$2
+CKPT_PATH=$3
+export CUDA_VISIBLE_DEVICES=$4
+
+export SLOG_PRINT_TO_STDOUT=0
+eval_path=s8_multiscale_eval
+if [ -d ${eval_path} ]; then
+ rm -rf ${eval_path}
+fi
+mkdir -p ${eval_path}
+cp ../*.py ${eval_path}
+cp -r ../src ${eval_path}
+cd ${eval_path} || exit
+
+python ./eval.py --data_root=$DATA_ROOT \
+ --data_lst=$DATA_LST \
+ --batch_size=16 \
+ --crop_size=513 \
+ --ignore_label=255 \
+ --num_classes=21 \
+ --model=DeepLabV3plus_s8 \
+ --scales=0.5 \
+ --scales=0.75 \
+ --scales=1.0 \
+ --scales=1.25 \
+ --scales=1.75 \
+ --freeze_bn \
+ --ckpt_path=$CKPT_PATH \
+ --device_target="GPU" \
+ --device_id=0 > eval_log 2>&1 &
+
diff --git a/model_zoo/research/cv/deeplabv3plus/train.py b/model_zoo/research/cv/deeplabv3plus/train.py
index 9ca7cecfbf6..f12c3d682bb 100644
--- a/model_zoo/research/cv/deeplabv3plus/train.py
+++ b/model_zoo/research/cv/deeplabv3plus/train.py
@@ -76,8 +76,9 @@ def parse_args():
parser.add_argument('--ckpt_pre_trained', type=str, default='', help='PreTrained model')
# train
- parser.add_argument('--device_target', type=str, default='Ascend', choices=['Ascend', 'CPU'],
+ parser.add_argument('--device_target', type=str, default='Ascend', choices=['Ascend', 'GPU', 'CPU'],
help='device where the code will be implemented. (Default: Ascend)')
+ parser.add_argument('--device_id', type=int, default=0, help='device id')
parser.add_argument('--is_distributed', action='store_true', help='distributed training')
parser.add_argument('--rank', type=int, default=0, help='local rank of distributed')
parser.add_argument('--group_size', type=int, default=1, help='world size of distributed')
@@ -99,17 +100,16 @@ def parse_args():
def train():
"""train"""
args = parse_args()
- if args.device_target == "CPU":
- context.set_context(mode=context.GRAPH_MODE, save_graphs=False, device_target="CPU")
- else:
- context.set_context(mode=context.GRAPH_MODE, enable_auto_mixed_precision=True, save_graphs=False,
- device_target="Ascend", device_id=int(os.getenv('DEVICE_ID')))
+ context.set_context(mode=context.GRAPH_MODE, save_graphs=False, device_target=args.device_target)
+ if args.device_target != "CPU":
+ context.set_context(enable_auto_mixed_precision=True, device_id=args.device_id)
+
# init multicards training
if args.modelArts_mode:
import moxing as mox
local_data_url = '/cache/data'
local_train_url = '/cache/ckpt'
- device_id = int(os.getenv('DEVICE_ID'))
+ device_id = args.device_id
device_num = int(os.getenv('RANK_SIZE'))
if device_num > 1:
init()
@@ -169,7 +169,15 @@ def train():
# load pretrained model
if args.ckpt_pre_trained or args.pretrainedmodel_filename:
param_dict = load_checkpoint(ckpt_file)
- load_param_into_net(train_net, param_dict)
+ if args.model == 'DeepLabV3plus_s16':
+ trans_param_dict = {}
+ for key, val in param_dict.items():
+ key = key.replace("down_sample_layer", "downsample")
+ trans_param_dict[f"network.resnet.{key}"] = val
+ load_param_into_net(train_net, trans_param_dict)
+ else:
+ load_param_into_net(train_net, param_dict)
+ print('load_model {} success'.format(args.ckpt_pre_trained))
# optimizer
iters_per_epoch = dataset.get_dataset_size()
@@ -188,7 +196,7 @@ def train():
# loss scale
manager_loss_scale = FixedLossScaleManager(args.loss_scale, drop_overflow_update=False)
- amp_level = "O0" if args.device_target == "CPU" else "O3"
+ amp_level = "O0" if args.device_target != "Ascend" else "O3"
model = Model(train_net, optimizer=opt, amp_level=amp_level, loss_scale_manager=manager_loss_scale)
# callback for saving ckpts