1、下載一個實例,運行一個圖像分類實例(環境:Ubuntu22.04,硬件:昇騰310B1,加速模塊:atlas 200i a2)
samples: CANN Samples - Gitee.com
目錄結構如下:
├── data
│ ? ├── dog1_1024_683.jpg ? ? ? ? ? ?//測試數據,需要按指導獲取測試圖片,放到data目錄下
│ ? ├── dog2_1024_683.jpg ? ? ? ? ? ?//測試數據,需要按指導獲取測試圖片,放到data目錄下
├── inc
│ ? ├── model_process.h ? ? ? ? ? ? ? //聲明模型處理相關函數的頭文件
│ ? ├── sample_process.h ? ? ? ? ? ? ?//聲明資源初始化/銷毀相關函數的頭文件 ? ? ? ? ? ? ? ? ??
│ ? ├── utils.h ? ? ? ? ? ? ? ? ? ? ? //聲明公共函數(例如:文件讀取函數)的頭文件
├── script
│ ? ├── transferPic.py ? ? ? ? ? ? ? //將*.jpg轉換為*.bin,同時將圖片從1024*683的分辨率縮放為224*224
├── src
│ ? ├── acl.json ? ? ? ? //系統初始化的配置文件
│ ? ├── CMakeLists.txt ? ? ? ? //編譯腳本
│ ? ├── main.cpp ? ? ? ? ? ? ? //主函數,圖片分類功能的實現文件
│ ? ├── model_process.cpp ? ? ?//模型處理相關函數的實現文件
│ ? ├── sample_process.cpp ? ? //資源初始化/銷毀相關函數的實現文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
│ ? ├── utils.cpp ? ? ? ? ? ? ?//公共函數(例如:文件讀取函數)的實現文件
├── .project ? ? //工程信息文件,包含工程類型、工程描述、運行目標設備類型等
├── CMakeLists.txt ? ?//編譯腳本,調用src目錄下的CMakeLists文件
2、簡化版步驟(注意下面的目錄是我的將實例從gitee下載下來后拷貝在notebooks下的):
---------------------------------------------------準備工作--------------------------------------------------------------
1)下載實例
2)在vscode中打開實例
3)下載權重文件(ResNet-50原始模型):
- ResNet-50網絡的模型文件(*.prototxt):單擊Link下載該文件。
- ResNet-50網絡的權重文件(*.caffemodel):單擊Link下載該文件。
- 將權重文件放在/home/HwHiAiUser/samples/notebooks/resnet50_imagenet_classification/caffe_model“目錄下。如果目錄不存在,需要自行創建。
4)將ResNet-50原始模型轉換為適配昇騰AI處理器的離線模型(*.om文件),我的處理器是昇騰310B1。可以通過npu-smi info指令進行查詢自己的硬件芯片型號
atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310B1 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
5)準備測試圖片,放在data目錄下
6)切換到“樣例目錄/data“目錄下,執行transferPic.py腳本,將*.jpg轉換為*.bin,同時將圖片從1024*683的分辨率縮放為224*224。在“樣例目錄/data“目錄下生成2個*.bin文件。
python3 ../script/transferPic.py
---------------------------------------------------編譯運行--------------------------------------------------------------
7)回到resnet50_imagenet_classification目錄下(這里需要修改為自己的目錄,具體修改方法,見上方詳細鏈接)
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/latest/runtime/lib64/stub
8)新建目錄用于存放編譯文件
mkdir -p build/intermediates/host
9)切換都按新建的目錄下,并編譯
cd build/intermediates/host
cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
10)編譯成功后生成可執行文件
make
11)切換到生成的可執行文件目錄下運行,out目錄
./main
12)以上就是快速體驗的步驟,大多失敗是出現在目錄上和型號上,新手第一次實現建議前期一步一步把準備工作做好,重要目錄存檔,或者都翻幾遍就熟悉了,還有可能出現的是用戶權限問題,切換為root用戶一般能解決這種問題。