ModelArts自動學習實現中秋月餅分類
1497
2025-03-31
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
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。