該樣例是基于Caffe ResNet-50網(wǎng)絡(luò)來實現(xiàn)圖片分類功能,芯片要求是Ascend310、310P和910。在開始前,首先要建議大家報名CANN訓(xùn)練營活動,然后入群找小助手領(lǐng)取代金券,這樣就可以零成本進行樣例開發(fā)了。
報名鏈接:https://www.hiascend.com/developer/activities/details/faf270bfad7148c1beca727c5a70869e/signup?channelCode=0&recommended=182735

VPC(Vision Preprocessing Core)負(fù)責(zé)圖像處理功能,支持對圖片做摳圖、縮放、格式轉(zhuǎn)換等操作,大概流程可以分為創(chuàng)建通道描述、創(chuàng)建通道、申請內(nèi)存、數(shù)據(jù)處理、釋放內(nèi)存、釋放通道,具體的接口和流程可以參考下方鏈接:
服務(wù)器購買
我們首先打開華為云官網(wǎng),點擊彈性云服務(wù)器,選擇按需計費,AI加速器,我們選用的是x86架構(gòu),當(dāng)然也可以選擇鯤鵬架構(gòu),系統(tǒng)用公共鏡像就可以,ubuntu和centos都可以,根據(jù)習(xí)慣選擇。

點擊下一步,選擇網(wǎng)絡(luò),如果沒有創(chuàng)建子網(wǎng)的話,需要先創(chuàng)建,公網(wǎng)帶寬,根據(jù)個人需求,在這里我建議選用按流量計費,這樣在不使用服務(wù)器的時候,可以點擊停止,不用解綁彈性公網(wǎng)IP。最后輸入登陸賬戶和密碼,就可以點擊創(chuàng)建,等待創(chuàng)建成功了。
環(huán)境準(zhǔn)備
分別點擊如下鏈接下載CANN-toolkit軟件包和驅(qū)動:
https://www.hiascend.com/developer/download/community/result?module=cann

下載完成后,我們可以通過mobaxterm將文件上傳到服務(wù)器。
因為本身的服務(wù)器是安裝有cann軟件包的,不過版本比較低,在軟件包上傳完成后,我們就可以進行軟件的升級了。
驅(qū)動升級:chmod + ./{product name}-npu-firmware_x.x.x.x.X.run
./{product name}-npu-firmware_x.x.x.x.X.run --upgrade
升級成功后,可以執(zhí)行npu-smi查看版本。
CANN升級:chmod +x 軟件包名.run
?????./軟件包名.run --upgrade
使環(huán)境變量生效: 在安裝目錄下,執(zhí)行./set_env.sh
設(shè)置python變量:
#用于設(shè)置python3.7.5庫文件路徑
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
#如果用戶環(huán)境存在多個python3版本,則指定使用python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH
下載并運行樣例
點擊鏈接下載鏈接:
上傳到服務(wù)器,解壓,進入相關(guān)文件夾。

下載resnet50模型相關(guān)文件:
ResNet-50網(wǎng)絡(luò)的模型文件(*.prototxt):單擊Link下載該文件。
ResNet-50網(wǎng)絡(luò)的權(quán)重文件(*.caffemodel):單擊Link下載該文件。
下載完成后,上傳到如上路徑的model文件夾下,執(zhí)行atc模型轉(zhuǎn)換命令。

準(zhǔn)備單算子模型,執(zhí)行命令:
atc --singleop=out/op_models/op_list.json --soc_version=Ascend310 --output=out/op_models

準(zhǔn)備測試圖片,將其上傳到data文件夾下:
https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg
https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg
編譯運行
我們的開發(fā)環(huán)境和運行環(huán)境操作架構(gòu)一樣使用如下配置:
export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
切換到樣例目錄,創(chuàng)建目錄用于存放編譯文件:
mkdir -p build/intermediates/host
執(zhí)行編譯命令:
cd build/intermediates/host
cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
make
編譯成功后,切換到out路徑,運行樣例:

如圖,代表樣例運行成功了!