mindspore_unet模型训练——ascend310推理

网友投稿 1320 2022-05-30

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)

mindspore_unet模型训练——ascend310推理

再次训练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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ffmpeg -h | 了解参数 | 简单备份
下一篇:script标签使用位置以及推迟执行脚本
相关文章