【華為云-上云之路】【2020華為云AI實戰營】第二章 物體檢測——帶你跑通YOLO系列最新版YOLOv4(TF)
1160
2025-04-02
一、MindIR 概述
MindSpore通過統一IR定義了網絡的邏輯結構和算子的屬性,將MindIR格式的模型文件
與硬件平臺解耦,實現一次訓練多次部署。
MindIR作為MindSpore的統一模型文件,同時存儲了網絡結構和權重參數值。同時支持
部署到云端Serving和端側Lite平臺執行推理任務。
同一個MindIR文件支持多種硬件形態的部署:
- Serving部署推理
- 端側Lite推理部署
二、名詞解釋
Checkpoint
? 采用了Protocol Buffers格式,存儲了網絡中所有的參數值。
? 一般用于訓練任務中斷后恢復訓練,或訓練后的微調(Fine Tune)任務。
?MindIR
? 全稱MindSpore IR,是MindSpore的一種基于圖表示的函數式IR,定義了可擴展的圖
結構以及算子的IR表示。
? 它消除了不同后端的模型差異,一般用于跨硬件平臺執行推理任務。
?ONNX
? 全稱Open Neural Network Exchange,是一種針對機器學習模型的通用表達。
? 一般用于不同框架間的模型遷移或在推理引擎(TensorRT)上使用。
?AIR
? 全稱Ascend Intermediate Representation,是華為定義的針對機器學習所設計的開放式
文件格式。
? 它能更好地適應華為AI處理器,一般用于Ascend 310上執行推理任務。
三、導出LeNet網絡的MindIR格式模型
1.訓練LeNet模型生成checkpoint
LeNet訓練代碼選用MindSpore官方代碼倉中modelzool中的代碼
地址:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet
2.MNIST數據-
1)官方-:http://yann.lecun.com/exdb/mnist/
2)網盤下載:鏈接: https://pan.baidu.com/s/1zX-OwL8bOgq4dhEuaRj2Xg 提取碼: zew6
MNIST數據集下載完成后解壓到代碼根目錄下
3.執行訓練命令
python train.py --data_path ./MNIST_DATA/ --ckpt_path=./checkpoint/ --device_target Ascend
注:我使用的是昇騰平臺進行模型訓練,如果使用CPU或者GPU進行訓練的話device_target后面改為對應的就好
當屏幕出現epoch、loss等數值時模型就開始進行訓練了
4.得到checkpoint
當模型訓練參數中指定的ckpt_path文件夾中出現ckpt文件就代表訓練成功了。接下去我們可以選擇一個ckpt文件進行轉換mindir格式。這里我選擇checkpoint_lenet-10_1875.ckpt
5.編寫模型轉換代碼
import numpy as np from mindspore import Tensor, export, load_checkpoint, load_param_into_net from src.lenet import LeNet5 lenet = LeNet5() # load the parameter into net load_checkpoint("./checkpoint/checkpoint_lenet-10_1875.ckpt", net=lenet) #checkpoint_lenet-10_1875.ckpt更換成對應所需要轉換的ckpt文件 input = np.random.uniform(0.0, 1.0, size=[32, 1, 32, 32]).astype(np.float32) #Lenet模型的size為32,1,32,32 export(lenet, Tensor(input), file_name='lenet-10_1875', file_format='MINDIR') #file_name指定轉換后文件的文件名
6.執行模型轉換代碼
python lenet_mindr.py
執行完畢后查看代碼根目錄下如果存在前面我們指定的lenet-10_1875.mindir文件的話就代表模型轉化成功了!
四、導出ResNet50網絡的MindIR格式模型
1.訓練ResNet50網絡生成checkpoint
ResNet50模型訓練代碼依舊使用MindSpore官方代碼倉中modelzoo的代碼,鏈接:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/resnet
2.Cifar10數據集
因為ImageNet數據集比較龐大訓練需要比較久的時間,所以這邊我們采用cifar10數據集進行模型訓練
1)Cifar10數據集官方下載:http://www.cs.toronto.edu/~kriz/cifar.html
2)? 百度網盤下載:鏈接: https://pan.baidu.com/s/1CpgjFtZk2ZQsr_qUtc6z1g 提取碼: kjhi
3.執行訓練命令
python train.py --net resnet50 --dataset cifar10 --dataset_path ./data/cifar10-bin/train/ --device_target Ascend
注:我使用的是昇騰平臺進行模型訓練,如果使用CPU或者GPU進行訓練的話device_target后面改為對應的就好
當屏幕出現epoch、loss等數值時模型就開始進行訓練了
4.獲取checkpoint
當模型訓練參數中指定的ckpt_path文件夾中出現ckpt文件就代表訓練成功了。接下去我們可以選擇一個ckpt文件進行轉換mindir格式。這里我選擇resnet-90_1562.ckpt
5.編寫模型轉換腳本
import numpy as np from mindspore import Tensor, export, load_checkpoint, load_param_into_net from src.resnet import resnet50 as ResNet50 resnet = ResNet50() # load the parameter into net load_checkpoint("./checkpoint/resnet-90_1562.ckpt", net=resnet) input = np.random.uniform(0.0, 1.0, size=[32, 3, 224, 224]).astype(np.float32) export(resnet, Tensor(input), file_name='resnet-90_162', file_format='MINDIR')
6.執行模型轉換
python resnet_mindir.py
執行完畢后查看代碼根目錄下如果存在前面我們指定的resnet-90_1562.mindir文件的話就代表模型轉化成功了!
AI MindSpore 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。