mindspore_unet模型训练——ascend310推理
mindspore_ascend910环境模型训练
unet源码链接:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/unet
git clone https://gitee.com/mindspore/mindspore.git
1、上传数据集: 选用Multi-Class 数据集格式,通过固定的目录结构获取图片和对应标签数据。 在同一个目录中保存原图片及对应标签,其中图片名为 “image.png”,标签名为 “mask.png”。
通过在config中的split参数将所有的图片分为训练集和验证集,split 默认为 0.8。
2、修改config\scriptes\yaml文件中参数,然后训练:
cd mindspore/model_zoo/official/cv/unet
vi src/model_utils/config.py
修改123行
parser.add_argument("--config_path", type=str, default=os.path.join(current_dir, "../../unet_nested_cell_config.yaml"),
help="Config file path")
vi scripts/run_standalone_train.sh
修改45行
python3 ${PROJECT_DIR}/../train.py --data_path=$DATASET --config_path=$CONFIG_PATH --output './output'> train.log 2>&1 &
bash scripts/run_standalone_train.sh [DATASET] [CONFIG_PATH]
vi unet_nested_cell_config.yaml
修改yaml中相关数据
data_path: "./dataset/train/"
output_path: "./unet_xw_1"
image_size : [256, 256]
num_classes: 10
#Eval options
keep_checkpoint_max: 10
eval_activate: "Softmax"
eval_resize: False
checkpoint_path: "./checkpoint/"
checkpoint_file_path: "./mindspore/model_zoo/official/cv/unet/unet_xw_1/checkpoint/ckpt_0/ckpt_unet_nested_adam-13_864000.ckpt"
rst_path: "./result_Files/"
result_path: "./preprocess_Result"
# Export options
width: 256
height: 256
file_name: "unet"
file_format: "AIR"
3、开始训练
bash scripts/run_standalone_train.sh /root/unet/dataset/train/newTrain/ unet_nested_cell_config.yaml
训练结果:
在./unet_xw_1/checkpoint/ckpt_0/ckpt_unet_nested_adam-20_864000.ckpt
训练日志:
run_standalone_train.sh会在后台运行训练,日志保存在train.log中
4、训练结果loss未收敛,排查后修改优化器解决
vi train.py
修改110行
optimizer = nn.Adam(params=net.trainable_params(), learning_rate=lr, weight_decay=config.weight_decay,
loss_scale=config.loss_scale)
为
optimizer = nn.SGD(params=net.trainable_params(), learning_rate=lr, weight_decay=config.weight_decay,
loss_scale=config.loss_scale)
再次训练loss已经正常
5、评估
bash scripts/run_standalone_eval.sh /root/unet/dataset/train/newTrain/ /home/bear/mindspore/model_zoo/official/cv/unet/unet_xw_1/checkpoint/ckpt_0/ckpt_unet_nested_adam-20_864000.ckpt unet_nested_cell_config.yaml
single dice coeff is: 0.9500709528038528, IOU is: 0.904890626029476
6、模型导出
执行python3 export.py 加载unet_nested_cell_config.yaml中Export options
得到相关格式的模型
7、导出air模型atc转换om后在ascend310环境推理
atc --model=./unet.air --framework=1 --output=./unet --soc_version=Ascend310 --log=debug
pyacl推理
得到分割图片
8、或者导出mindir格式的模型,直接调用mindspore接口编译推理
将unet.mindir模型放在ascend310_infer路径下
执行推理脚本
cd scripts
bash run_infer_310.sh unet++ ../ascend310_infer/unet.mindir 0 n
工程build时需要用到cmake3.14.1或更高版本,直接下载最新版即可
#cmake官网(https://cmake.org/download/)下载release版本的源码包(Source distributions)
https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2.tar.gz
tar zxvf cmake-3.21.1.tar.gz
cd cmake-3.21.1
./bootstrap #时间较长,大约5分钟
make -j8
sudo make install
安装检查 cmake --version
如果报错
-bash: /usr/bin/cmake: No such file or directory
cp ./bin/cmake /usr/bin/
编译报错
解决办法
wget https://github.com/gflags/gflags/archive/v2.2.2.tar.gz --no-check-certificate
tar -zxvf v2.2.2.tar.gz
cd gflags-2.2.2/
mkdir build
cd build
export CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0
cmake .. -DBUILD_SHARED_LIBS=ON
make -j10
sudo make install
再次推理,遇到protobuf链接库的问题
解决办法:多次排查,最终升级mindspore1.2.1为mindspore1.3.0及配套cann解决。
mindspore升级版本文档链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=139738
- 点赞
- 收藏
- 关注作者
评论(0)