0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將PP-PicoDet 目標(biāo)檢測(cè)模型部署在Corstone-300虛擬硬件平臺(tái)上

lhl545545 ? 來(lái)源:Arm軟件開(kāi)發(fā)者 ? 作者:Arm軟件開(kāi)發(fā)者 ? 2022-09-22 09:50 ? 次閱讀

本期課程,將以計(jì)算機(jī)視覺(jué)領(lǐng)域的目標(biāo)檢測(cè)任務(wù)為目標(biāo),帶領(lǐng)大家動(dòng)手完成從模型訓(xùn)練優(yōu)化到深度學(xué)習(xí)應(yīng)用部署的整個(gè)端到端的開(kāi)發(fā)流程。你會(huì)逐步學(xué)習(xí)了解到如何使用飛槳[1]目標(biāo)檢測(cè)套件 PaddleDetection[2]工具套件完成目標(biāo)檢測(cè)模型的訓(xùn)練與適配,如何使用深度學(xué)習(xí)編譯器 TVM 編譯飛槳模型以及如何將編譯后的模型部署在含有 Arm Cortex-M55 處理器的 Arm Corstone-300 虛擬硬件上。

百度飛槳與 Arm 深度合作,增加了 Cortex-M 硬件上支持的深度學(xué)習(xí)模型的數(shù)量,同時(shí)也填補(bǔ)了飛槳模型在 Arm Cortex-M 硬件上的適配空白,為開(kāi)發(fā)者提供了更多的選擇。

項(xiàng)目概述

經(jīng)典的深度學(xué)習(xí)工程是從確認(rèn)任務(wù)目標(biāo)開(kāi)始的,我們首先來(lái)簡(jiǎn)單地介紹一下目標(biāo)檢測(cè)任務(wù)以及本期部署實(shí)戰(zhàn)課程中我們所使用的工具和平臺(tái)。

1.1 目標(biāo)檢測(cè)任務(wù)

目標(biāo)檢測(cè)任務(wù)就是將圖片或視頻中所有目標(biāo)的類(lèi)別識(shí)別出來(lái),并在該目標(biāo)周?chē)L制邊界框,標(biāo)示出每個(gè)目標(biāo)的位置。常見(jiàn)的目標(biāo)檢測(cè)任務(wù)包括人物檢測(cè)、人臉檢測(cè)、車(chē)輛跟蹤等方向,在工業(yè)、智慧城市、安防、交通、零售、醫(yī)療等十余種行業(yè)場(chǎng)景中應(yīng)用廣泛。

圖 1:目標(biāo)檢測(cè)任務(wù)案例

1.2PP-PicoDet

PaddleDetection 中提出了全新的輕量級(jí)系列模型 PP-PicoDet,在移動(dòng)端具有卓越的性能,成為全新的 SOTA 輕量級(jí)模型。PP-PicoDet 模型通過(guò)創(chuàng)新 SOTA 模塊,例如 ESNet、CSP-PAN、SimOTA 等,不僅第一個(gè)實(shí)現(xiàn)了在 1M 參數(shù)量之內(nèi) mAP (0.5:0.95) 超越 30+ (輸入 416 像素時(shí)),而且其性能優(yōu)于同類(lèi)算法模型。

4e06af0e-39bb-11ed-9e49-dac502259ad0.png

圖 2:PP-PicoDet 系統(tǒng)框圖

更多關(guān)于 PP-PicoDet 的詳細(xì)技術(shù)細(xì)節(jié),可查看 PP-PicoDet arXiv 技術(shù)報(bào)告[3]。

1.3 Arm 虛擬硬件 (Arm Virtual Hardware, AVH)

作為 Arm 物聯(lián)網(wǎng)全面解決方案的核心技術(shù)之一,AVH 很好地解決了實(shí)體硬件所面臨的難擴(kuò)展、難運(yùn)維等痛點(diǎn)。AVH[4] 提供了簡(jiǎn)單便捷并且可擴(kuò)展的途徑,讓 IoT 應(yīng)用的開(kāi)發(fā)擺脫了對(duì)實(shí)體硬件的依賴(lài)并使得云原生開(kāi)發(fā)技術(shù)在嵌入式物聯(lián)網(wǎng)、邊緣側(cè)機(jī)器學(xué)習(xí)領(lǐng)域得到了應(yīng)用。尤其是在芯片緊張的當(dāng)今時(shí)代,使用 AVH,開(kāi)發(fā)者甚至可以在芯片 RTL 之前便可接觸到最新的處理器 IP。

目前 AVH 提供兩種形式供開(kāi)發(fā)者使用。一種是托管在 AWS 以及 AWS China 上以亞馬遜機(jī)器鏡像 AMI 形式存在的 Arm Corstone 和 Cortex CPU 的虛擬硬件,另外一種則是由 Arm 以 SaaS 平臺(tái)的形式提供的 AVH 第三方硬件[5]。本期課程我們將使用第一種托管在 AWS 以及 AWS China 上以亞馬遜機(jī)器鏡像 AMI 形式存在的 Corstone 和 Cortex CPU 的虛擬硬件。

由于目前 AWS China 賬號(hào)主要面向企業(yè)級(jí)開(kāi)發(fā)者開(kāi)放,個(gè)人開(kāi)發(fā)者可訪(fǎng)問(wèn) AWS Marketplace 訂閱 AVH 相關(guān)服務(wù)。參考下圖步驟創(chuàng)建 AVH AMI 實(shí)例。

4e44cc58-39bb-11ed-9e49-dac502259ad0.png

圖 3:AVH AMI 創(chuàng)建步驟

(訪(fǎng)問(wèn) AWS Marketplace[6] 訂閱 AVH)

端到端部署流程

接下來(lái)將重點(diǎn)向大家展示從模型訓(xùn)練到部署的全流程,本期課程所涉及的相關(guān)代碼已在 GitHub 倉(cāng)庫(kù)開(kāi)源,歡迎大家下載體驗(yàn)!

https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/deploy/third_engine/demo_avh

4e70544a-39bb-11ed-9e49-dac502259ad0.png

圖 4:端到端部署流程示意圖

2.1 模型訓(xùn)練

PaddleDetection 使用配置文件 (.yml) 管理網(wǎng)絡(luò)訓(xùn)練、評(píng)估的參數(shù)。在靜態(tài)圖版本下,一個(gè)模型往往可以通過(guò)兩個(gè)配置文件 (一個(gè)主配置文件、一個(gè) reader 的讀取配置) 實(shí)現(xiàn),在 PaddleDetection 2.0 后續(xù)版本,采用了模塊解耦設(shè)計(jì),用戶(hù)可以組合配置模塊實(shí)現(xiàn)檢測(cè)器,并可自由修改覆蓋各模塊配置。我們使用的配置文件[7]位于 configs/picodet 目錄下的 picodet_s_320_coco_lcnet.yml。訓(xùn)練命令可參考如下:

# Example of training on single-GPU

export CUDA_VISIBLE_DEVICES=0

python tools/train.py -c configs/picodet/picodet_s_320_coco_lcnet.yml --eval

2.2 模型導(dǎo)出

模型訓(xùn)練完成后,還需要將訓(xùn)練好的目標(biāo)檢測(cè)模型導(dǎo)出為 Paddle Inference 模型,才能使用深度學(xué)習(xí)編譯器 TVM 對(duì)其進(jìn)行編譯從而獲得適配在 Cortex-M 處理器上運(yùn)行的代碼。在導(dǎo)出模型時(shí),由于 CMSIS-NN 不支持 NMS 算子,可通過(guò)指定 -o export.nms=False 完成算子適配。參考以下命令導(dǎo)出 Paddle Inference 模型:

# Example exporting model command

python tools/export_model.py

-c configs/picodet/picodet_s_320_coco_lcnet.yml

-o weights=https://paddledet.bj.bcebos.com/models/picodet_s_320_coco_lcnet.pdparams

export.nms=False

--output_dir=output_inference

為了便于開(kāi)發(fā)者朋友直接體驗(yàn)推理部署的流程,大家可以通過(guò)鏈接直接下載我們訓(xùn)練完成并完成導(dǎo)出適配的目標(biāo)檢測(cè) Paddle Inference 模型:

https://bj.bcebos.com/v1/paddledet/deploy/Inference/picodet_s_320_coco_lcnet_no_nms.tar

2.3 模型編譯

為實(shí)現(xiàn)在 Cortex-M 上直接完成飛槳模型的部署,我們需要借助深度學(xué)習(xí)編譯器 TVM 來(lái)進(jìn)行相應(yīng)模型的轉(zhuǎn)換和適配。TVM 是一款開(kāi)源的深度學(xué)習(xí)編譯器,主要用于解決將各種深度學(xué)習(xí)框架部署到各種硬件設(shè)備上的適配性問(wèn)題。

如下圖所示,它可以接收由飛槳等經(jīng)典的深度學(xué)習(xí)訓(xùn)練框架編寫(xiě)的模型并將其轉(zhuǎn)換成可在目標(biāo)設(shè)備上運(yùn)行推理任務(wù)的代碼。

4e831576-39bb-11ed-9e49-dac502259ad0.png

圖 5:編譯流程示意圖

我們使用 TVM 的 Python 應(yīng)用程序 tvmc 來(lái)完成模型的編譯。大家可參考如下命令對(duì) Paddle Inference 模型進(jìn)行編譯。通過(guò)指定 --target=cmsis-nn,c 使得模型中 CMSIS NN[8]庫(kù)支持的算子會(huì)調(diào)用 CMSIS-NN 庫(kù)執(zhí)行,而不支持的算子則會(huì)回調(diào)到 C 代碼庫(kù)。

# Example of Model compiling using tvmc

python3 -m tvm.driver.tvmc compile --target=cmsis-nn,c

--target-cmsis-nn-mcpu=cortex-m55

--target-c-mcpu=cortex-m55

--runtime=crt

--executor=aot

--executor-aot-interface-api=c

--executor-aot-unpacked-api=1

--pass-config tir.usmp.enable=1

--pass-config tir.usmp.algorithm=hill_climb

--pass-config tir.disable_storage_rewrite=1

--pass-config tir.disable_vectorize=1

--output-format=mlf

--model-format=paddle

--module-name=picodet

--input-shapes image:[1,3,320,320]

--output=picodet.tar

picodet_s_320_coco_lcnet_no_nms/model.pdmodel

更多關(guān)于參數(shù)配置的具體說(shuō)明,大家可以直接輸入 tvmc compile --help 來(lái)查看。編譯后的模型可以在 --output 參數(shù)指定的路徑下查看 (此處為當(dāng)前目錄下的picodet.tar 壓縮包內(nèi))。

2.4 模型部署

參考圖 3 所示的 AVH AMI 實(shí)例創(chuàng)建的流程并通過(guò) ssh 命令遠(yuǎn)程登錄到實(shí)例中去,當(dāng)看到如下所示的提示畫(huà)面說(shuō)明已經(jīng)成功登入。

4ea7e5c2-39bb-11ed-9e49-dac502259ad0.png

圖 6:AVH AMI 成功登錄界面

成功登入后大家可以切換到“/opt/VHT”以及“/opt”目錄下查看當(dāng)前版本 AVH AMI 所支持的 Corstone 和 Cortex CPU 虛擬硬件。下圖為部分 1.2.3 版本 AVH AMI 所支持的 AVH 列表。本期部署課程中所使用的正是 Corstone-300 虛擬硬件 (VHT_Corstone_SSE-300_Ethos-U55),其內(nèi)含有 Cortex-M55 處理器、Arm Ethos-U55 處理器及一些基本外設(shè)。更多關(guān)于 Corstone-300 虛擬硬件的相關(guān)信息,歡迎訪(fǎng)問(wèn) Arm 開(kāi)發(fā)者社區(qū)的技術(shù)文檔[9]進(jìn)行查看。

4ec7f89e-39bb-11ed-9e49-dac502259ad0.png

圖 7:1.2.3 版本 AVH AMI 所支持的 AVH 部分示意圖

為便于開(kāi)發(fā)者朋友更直觀(guān)地體驗(yàn)如何在AVH上完成飛槳模型部署,我們?yōu)榇蠹姨峁┝瞬渴鸬氖纠a腳本(run_demo.sh)來(lái)幫助大家自動(dòng)化的完成環(huán)境配置,構(gòu)建目標(biāo)檢測(cè)應(yīng)用以及在含有 Cortex-M55 的 Corstone-300虛擬硬件上執(zhí)行并獲取結(jié)果。

您也可以按照以下幾個(gè)步驟來(lái)手動(dòng)部署。

第一步:下載安裝相應(yīng)的軟件包并配置運(yùn)行環(huán)境

確保示例代碼路徑下 configure_avh.sh 腳本以及 requirment.txt 腳本中涉及的相應(yīng)軟件包均根據(jù)其版本要求正確安裝。

第二步:(下載) 獲取目標(biāo)檢測(cè) Paddle Inference 模型

可使用 wget 命令下載模型 (下載地址詳見(jiàn) 2.2 節(jié)) 并通過(guò) tar 命令解壓模型文件壓縮包。

第三步:使用 TVMC 命令編譯 Paddle Inference 模型

參考 2.3 節(jié)中使用的 TVMC 命令編譯第二步下載好的 Paddle Inference 模型 (model.pdmodel)。

第四步:處理圖片數(shù)據(jù)

參考提供的 convert_image.py 腳本對(duì)所測(cè)試的示例圖片 000000014439_640x640.jpgs (如下圖所示) 進(jìn)行處理,并生成相應(yīng)的輸入輸出頭文件。

圖 8:目標(biāo)檢測(cè)示例圖片

第五步:構(gòu)建應(yīng)用程序

使用 Makefile 工具構(gòu)建目標(biāo)檢測(cè)應(yīng)用程序的二進(jìn)制鏡像文件。

第六步:執(zhí)行目標(biāo)檢測(cè)應(yīng)用并查看運(yùn)行結(jié)果

調(diào)用 VHT_Corstone_SSE-300_Ethos-U55 (Corstone-300 虛擬硬件) 執(zhí)行構(gòu)建好的目標(biāo)檢測(cè)應(yīng)用并查看運(yùn)行結(jié)果。運(yùn)行結(jié)果如下圖所示。

其中,前四個(gè)數(shù)字為 box 框位置,class 為類(lèi)別序號(hào),score 為得分。由于模型可能存在精度損失的問(wèn)題,得分偏低,但整體目標(biāo)識(shí)別結(jié)果與圖片一致,說(shuō)明將飛槳模型直接部署在 Cortex-M55 虛擬硬件上運(yùn)行良好。

4f0a9f64-39bb-11ed-9e49-dac502259ad0.png

圖 9:Corstone-300

(含 Cortex-M55) 虛擬硬件運(yùn)行結(jié)果

總結(jié)

本期課程帶領(lǐng)大家學(xué)習(xí)了如何將 PaddleDetection 中發(fā)布的 PP-PicoDet 目標(biāo)檢測(cè)模型 (完成算子適配后) 部署在 Corstone-300 的虛擬硬件平臺(tái)上,歡迎大家動(dòng)手體驗(yàn)。后續(xù)我們也將持續(xù)為大家?guī)?lái)更多如何在 Arm 虛擬硬件上部署百度飛槳模型的實(shí)例,敬請(qǐng)期待!

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3380

    瀏覽量

    66401
  • 檢測(cè)模型
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7333
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5512

    瀏覽量

    121445

原文標(biāo)題:AVH 動(dòng)手實(shí)踐 (三) | 在 Arm 虛擬硬件上部署 PP-PicoDet 模型

文章出處:【微信號(hào):Arm軟件開(kāi)發(fā)者,微信公眾號(hào):Arm軟件開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在Arm虛擬硬件虛擬樹(shù)莓派4上完成圖像識(shí)別應(yīng)用的部署

    本期課程,小編將以計(jì)算機(jī)視覺(jué)領(lǐng)域的圖像識(shí)別任務(wù)為目標(biāo),帶領(lǐng)大家動(dòng)手實(shí)現(xiàn)在樹(shù)莓派的虛擬設(shè)備上部署基于 Paddle Lite 的圖像識(shí)別模型,以及如何
    的頭像 發(fā)表于 09-30 10:00 ?2551次閱讀

    基于C#和OpenVINO?英特爾獨(dú)立顯卡上部署PP-TinyPose模型

    和 OpenVINO, PP-TinyPose 模型部署英特爾獨(dú)立顯卡上。 1.1 PP-
    的頭像 發(fā)表于 11-18 18:27 ?2586次閱讀

    百度飛槳PP-YOLOE ONNX LabVIEW中的部署推理(含源碼)

    對(duì)于如何在LabVIEW中實(shí)現(xiàn)該模型部署,筆者目前還沒(méi)有看到相關(guān)介紹文章,所以筆者實(shí)現(xiàn)PP-YOLOE ONNX LabVIEW中的
    的頭像 發(fā)表于 05-26 14:01 ?1158次閱讀
    百度飛槳<b class='flag-5'>PP</b>-YOLOE ONNX <b class='flag-5'>在</b>LabVIEW中的<b class='flag-5'>部署</b>推理(含源碼)

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測(cè)模型

    網(wǎng)絡(luò)(DenseNet)等創(chuàng)新設(shè)計(jì)都是為了克服深層網(wǎng)絡(luò)訓(xùn)練中的挑戰(zhàn)而提出的。 3 邊緣端設(shè)備部署 邊緣端設(shè)備部署目標(biāo)檢測(cè)
    發(fā)表于 12-19 14:33

    如何將Linux操作系統(tǒng)移植到目標(biāo)平臺(tái)上?

    如何將Linux操作系統(tǒng)移植到目標(biāo)平臺(tái)上?Linux交叉編譯環(huán)境的建立及內(nèi)核配置和編譯Linux移植中實(shí)際指令集小于標(biāo)準(zhǔn)MIPS指令集的問(wèn)題如何將Linux操作系統(tǒng)移植到MIPS體系結(jié)
    發(fā)表于 04-22 07:04

    如何將FreeModbus移植到STM32平臺(tái)上

    modbus是什么?如何將FreeModbus移植到STM32平臺(tái)上
    發(fā)表于 11-17 07:44

    如何將uCOS-III實(shí)時(shí)操作系統(tǒng)移植到目標(biāo)平臺(tái)上并運(yùn)行?

    如何將uCOS-III實(shí)時(shí)操作系統(tǒng)移植到目標(biāo)平臺(tái)上并運(yùn)行?
    發(fā)表于 11-29 06:11

    介紹一種Arm ML嵌入式評(píng)估套件

    的輸出是一個(gè)優(yōu)化的 TensorFlow Lite 文件,可以使用 Ethos-U NPU 的系統(tǒng)上進(jìn)行部署,本例中是配置了 Corstone-300 FVP 的 Arm
    發(fā)表于 08-12 15:35

    如何用Arm虛擬硬件Arm Cortex-M上部署PaddlePaddle

    推理模型  3. 使用TVMC為目標(biāo)設(shè)備編譯 Paddle 推理模型4. 構(gòu)建文本識(shí)別應(yīng)用程序并將其部署 Arm Virtual帶有Ar
    發(fā)表于 09-02 14:48

    Arm虛擬硬件部署PP-PicoDet模型

    1、Arm虛擬硬件部署PP-PicoDet模型  經(jīng)典的深度學(xué)習(xí)工程是從確認(rèn)任務(wù)
    發(fā)表于 09-16 14:42

    Arm虛擬硬件部署PP-PicoDet模型的設(shè)計(jì)方案

    1、Arm虛擬硬件部署PP-PicoDet模型  經(jīng)典的深度學(xué)習(xí)工程是從確認(rèn)任務(wù)
    發(fā)表于 09-23 15:02

    如何使用TensorFlow神經(jīng)網(wǎng)絡(luò)模型部署到移動(dòng)或嵌入式設(shè)備上

    有很多方法可以經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型部署到移動(dòng)或嵌入式設(shè)備上。不同的框架在各種平臺(tái)上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如And
    發(fā)表于 08-02 06:43

    如何將TDM業(yè)務(wù)添加到WiMAX平臺(tái)上

    如何將TDM業(yè)務(wù)添加到WiMAX平臺(tái)上 對(duì)于今天的運(yùn)營(yíng)商來(lái)說(shuō),“接入”是一個(gè)熱門(mén)詞匯。盡管傳統(tǒng)接入鏈路依然是主要的收入來(lái)源,但它同時(shí)也成為限制
    發(fā)表于 10-20 21:29 ?734次閱讀

    如何將PP-OCRv3英文識(shí)別模型部署Corstone-300虛擬硬件平臺(tái)上

    經(jīng)典的深度學(xué)習(xí)工程是從確認(rèn)任務(wù)目標(biāo)開(kāi)始的,我們首先來(lái)簡(jiǎn)單地介紹一下 OCR 中的文本識(shí)別任務(wù)以及本期部署實(shí)戰(zhàn)課程中我們所使用的工具和平臺(tái)
    的頭像 發(fā)表于 08-12 15:03 ?2557次閱讀

    如何將pytorch的模型部署到c++平臺(tái)上模型流程

    最近因?yàn)楣ぷ餍枰?,要把pytorch的模型部署到c++平臺(tái)上,基本過(guò)程主要參照官網(wǎng)的教學(xué)示例,期間發(fā)現(xiàn)了不少坑,特此記錄。
    的頭像 發(fā)表于 10-26 14:36 ?3193次閱讀