【CANN訓練營第三季】基於Caffe ResNet-50網路實現圖片分類

hw327701發表於2022-12-19

CANN訓練營第三季】基於Caffe ResNet-50網路實現圖片分類

一、雲伺服器的使用

為了更好的讓我們能夠了解並學習昇騰的相關知識,華為 CANN訓練營第三季給予了一定的雲伺服器資源,申請映象: https://devcloud.huaweicloud.com/expertmobile/qtn?id=37c0f1996ab744d0aecfc3209c843d95

申請代金券:

關於雲伺服器的使用簡單總結如下:

找到共享映象如下步驟:

 


申請 ESC彈性雲伺服器->獲取彈性公網IP->運用SSH遠端訪問雲伺服器->正常按照ubuntu系統的終端命令來操作使用伺服器


資源連結:
遠端終端軟體推薦 Xshell

進入終端後為 root使用者,需要進入HwHiAiUser使用者


指令:

cd / home /

su -  HwHiAiUser

可以使用 ls 或者 ll 指令隨意瀏覽系統中已有的檔案情況。

$ ls -al

二、基於 Caffe ResNet-50網路實現圖片分類

準備工作完成, 開始 正式實驗!可以按照倉庫裡的 readme檔案所述步驟一步步操作,此處也僅僅簡單給出實驗的步驟和實驗圖。
倉庫資源連結:
https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification

1、下載樣例程式碼

克隆 sample倉裡的程式碼

git clone https :// gitee . com / ascend / samples . git


進入到 resnet50_imagenet_classification樣例的資料夾中

  c d   samples / cplusplus / level2_simple_inference / 1 _classification / resnet50_imagenet_classification

 

2、獲取ResNet-50預訓練模型

先建立一個用來儲存該模型的資料夾 caffe_model, 進入 資料夾

mkdir caffe_model

cd caffe_model

從網頁直接透過命令下載預訓練模型:權重檔案( resnet50.caffemodel)和模型檔案(resnet50.prototxt)

$ wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.prototxt

 

$ wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.caffemodel

 

 

 

3、模型轉換

上述下載的預訓練模型需要首先運用 ATC模型轉換工具將該模型轉換成昇騰AI處理器支援的離線模型(.om)
流程:
首先先切換到樣例目錄下(接著上面的操作就是上一級目錄)

cd .. /

然後執行模型轉換工具   atc ( atc 命令找不到解決辦法:

atc -- model = caffe_model / resnet50 . prototxt -- weight = caffe_model / resnet50 . caffemodel -- framework = 0   -- output = model / resnet50 -- soc_version = Ascend310 -- input_format = NCHW   -- input_fp16_nodes = data -- output_type = FP32   -- out_nodes = prob : 0

成功

 


開啟 model資料夾可以看到resnet50.om已經轉換完成了

  ls -al model/


4、下載測試圖片

進入 data資料夾,並下載兩張ImageNet資料集中存在類別的圖片

cd   . / data /

wget https :// c7xcode . obs . cn - north - 4. myhuaweicloud . com / models / aclsample / dog1_1024_683 . jpg

wget https :// c7xcode . obs . cn - north - 4. myhuaweicloud . com / models / aclsample / dog2_1024_683 . jpg

5、圖片格式轉換

下載的圖片是 JPEG格式的,需要轉換成適合模型輸入要求格式的二進位制檔案(.bin)
data目錄下,執行transferPic.py指令碼,將*.jpg轉換為*.bin,同時將圖片從1024 * 683的解析度縮放為224 * 224。

如果執行指令碼報錯 “ModuleNotFoundError: No module named 'PIL'”,則表示缺少Pillow庫,請使用 pip3 install Pillow --user 命令安裝Pillow庫。

 

python3 .. / script / transferPic . py

 

6、編譯執行

進入 “cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification”樣例目錄

cd .. /

設定臨時的環境變數,配置程式編譯依賴的標頭檔案與庫檔案路徑

export   DDK_PATH = $ HOME / Ascend / ascend - toolkit / latest

export   NPU_HOST_LIB = $ DDK_PATH / acllib / lib64 / stub


建立 build資料夾,準備編譯程式碼檔案

mkdir - p build / intermediates / host


進入 build資料夾,編譯.cpp檔案

cd build / intermediates / host

cmake .. / .. / .. / src - DCMAKE_CXX_COMPILER = g ++   - DCMAKE_SKIP_RPATH = TRUE

make



可以在樣例目錄( cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification)下的out資料夾中找到編譯好的可執行main檔案,接下來我們直接執行main檔案

cd .. / .. / .. / out /

. / main

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70025312/viewspace-2928662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章