mindspore_unet模型训练——ascend310推理

举报
xiongwu 发表于 2021/08/25 14:39:56 2021/08/25
【摘要】 mindspore_ascend910环境模型训练unet源码链接:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/unetgit clone https://gitee.com/mindspore/mindspore.git1、上传数据集: 选用Multi-Class 数据集格式,通过固定的目...

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中
image.png
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已经正常
image.png

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
得到相关格式的模型
image.png

7、导出air模型atc转换om后在ascend310环境推理
atc --model=./unet.air --framework=1 --output=./unet --soc_version=Ascend310 --log=debug
image.png
pyacl推理
image.png
得到分割图片
image.png

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/

编译报错
image.png
解决办法

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链接库的问题
image.png
解决办法:多次排查,最终升级mindspore1.2.1为mindspore1.3.0及配套cann解决。
mindspore升级版本文档链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=139738

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。