《邊緣智能計算應(yīng)用》課件 項目四 基于Pytorch(YOLOv5)目標檢測模型部署_第1頁
《邊緣智能計算應(yīng)用》課件 項目四 基于Pytorch(YOLOv5)目標檢測模型部署_第2頁
《邊緣智能計算應(yīng)用》課件 項目四 基于Pytorch(YOLOv5)目標檢測模型部署_第3頁
《邊緣智能計算應(yīng)用》課件 項目四 基于Pytorch(YOLOv5)目標檢測模型部署_第4頁
《邊緣智能計算應(yīng)用》課件 項目四 基于Pytorch(YOLOv5)目標檢測模型部署_第5頁
已閱讀5頁,還剩175頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

項目四基于Pytorch(YOLOv5)目標檢測模型部署邊緣智能計算應(yīng)用項目引導案例目標檢測的目標是確定并返回某張給定圖像中是否存在給定類別(比如人、車、自行車、狗和貓)的空間位置和覆蓋范圍(比如返回一個邊界框)。目標檢測是解決分割、場景理解、目標追蹤、圖像描述、事件檢測和活動識別等視覺任務(wù)的基礎(chǔ)。應(yīng)用:機器人視覺、消費電子產(chǎn)品、安保、自動駕駛、人機交互、基于內(nèi)容的圖像檢索、智能視頻監(jiān)控和增強現(xiàn)實。項目引導案例本項目將帶著大家部署基于Pytorch的yolov5目標檢測模型,主要涉及到的知識有:Pytorch框架YOLO算法Git使用方法ONNX格式和RKNN格式項目中所涉及的操作過程主要如下圖所示:基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換Pytorch模型轉(zhuǎn)ONNX模型ONNX模型轉(zhuǎn)RKNN模型邊緣端部署RKNN模型任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換邊緣智能計算應(yīng)用職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換了解Pytorch的安裝方法;了解Pytorch的組件與工作原理;了解使用Pytorch進行模型訓練的方法。掌握開源數(shù)據(jù)集的下載使用掌握基于開源項目YOLOv5訓練環(huán)境搭建掌握基于Pytorch的YOLOv5模型訓練及預(yù)測掌握Pytorch模型文件轉(zhuǎn)ONNX模型文件的環(huán)境搭建掌握Pytorch模型文件轉(zhuǎn)ONNX模型文件及預(yù)測職業(yè)能力目標01知識目標技能目標職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換此任務(wù)要求讀者完成基于PyTorch框架和YOLOv5開源項目訓練并生成模型并將Pytorch模型文件轉(zhuǎn)onnx模型文件,任務(wù)完成后可使用訓練好的YOLOv5模型進行目標檢測。任務(wù)描述任務(wù)要求使用git下載項目源碼安裝所需的依賴包使用訓練腳本進行訓練驗證訓練好的模型任務(wù)描述與要求02職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換任務(wù)分析模型訓練開始之前需要做哪些準備工作?模型訓練過程中涉及到哪些參數(shù)?任務(wù)分析與計劃03任務(wù)計劃表項目名稱基于Pytorch(yolov5)目標檢測模型部署任務(wù)名稱基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換計劃方式自主設(shè)計計劃要求請用10個計劃步驟來完整描述出如何完成本次任務(wù)序號任務(wù)計劃1

2

3

4

5

6

78通過上面的思考,你是否對本任務(wù)要完成的工作有所了解?讓我們一起來制訂完成本次任務(wù)的實施計劃吧!任務(wù)分析與計劃03職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換PyTorch與YOLOv5簡介204知識儲備目標檢測簡介1Pytorch轉(zhuǎn)onnx的意義433COCO數(shù)據(jù)集目標檢測是在給定的圖片中精確找到物體所在位置,并標注出物體的類別。04目標檢測簡介目標檢測任務(wù)的挑戰(zhàn)在什么地方呢?04目標檢測簡介目標物在圖像中的屬性04目標檢測簡介多目標示例04目標檢測簡介近幾年來,目標檢測算法取得了很大的突破;隨著卷積神經(jīng)網(wǎng)絡(luò)的廣泛使用,許多目標檢測算法已與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合起來;根據(jù)目標檢測算法的工作流程,可以將目標檢測算法分為雙步法(TwoStage)和單步法(OneStage)。04目標檢測簡介兩步法(TwoStage)確定那些更有可能出現(xiàn)目標的位置,再有針對性的用CNN進行檢測;通過啟發(fā)式方法或CNN網(wǎng)絡(luò)產(chǎn)生一系列稀疏的候選框(RegionProposal),然后對這些候選框進行分類或者回歸;兩步法的優(yōu)勢是準確度高,但是運行速度較慢;兩步法的代表算法有R-CNN、FastR-CNN、FasterR-CNN等。04目標檢測簡介04目標檢測簡介一步法(OneStage)均勻地在圖片的不同位置進行密集抽樣,利用CNN提取特征后,直接在提取的特征上進行分類或者回歸,整個過程只需要一步;所以一步法的優(yōu)勢是速度快,但是模型精確度相對較低;一步法的代表算法有YOLO和SSD等;目前廣泛應(yīng)用于目標檢測的算法是基于YOLO目標檢測算法的YOLOv5和YOLOX。04目標檢測簡介PyTorch與YOLOv5簡介204知識儲備目標檢測簡介1Pytorch轉(zhuǎn)onnx的意義433COCO數(shù)據(jù)集04PyTorch與Torch基于Torch的Python開源機器學習庫用于自然語言處理等應(yīng)用程序支持GPU加速、動態(tài)神經(jīng)網(wǎng)絡(luò)等功能兩個高級功能:強大的GPU加速的張量計算(如Numpy)自動求導系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)04PyTorch與TorchTorch是一個有大量機器學習算法支持的科學計算框架,其誕生已有十年之久,但是真正起勢得益于Facebook開源了大量Torch的深度學習模塊和擴展;Torch的特點在于特別靈活,是以Lua為編程語言的框架。Torch簡潔速度快社區(qū)活躍易用PyTorch特性04PyTorch靈活性不以速度為代價。在許多評測中,PyTorch的速度表現(xiàn)勝過TensorFlow和Keras等框架。PyTorch的面向?qū)ο蟮慕涌谠O(shè)計來源于Torch,而Torch的接口設(shè)計以靈活易用而著稱,Keras作者最初就是受Torch的啟發(fā)才開發(fā)了Keras。PyTorch的設(shè)計最符合人們的思維,即所思即所得。PyTorch的設(shè)計追求最少的封裝,盡量避免重復(fù)造輪子。PyTorch的源碼只有TensorFlow的十分之一左右,簡潔直觀,十分易于閱讀。PyTorch提供了完整的文檔,循序漸進的指南,作者親自維護的論壇供用戶交流和求教問題。Facebook人工智能研究院對PyTorch提供了強力支持,以確保PyTorch獲得持續(xù)的開發(fā)更新。04導入PyTorch包Python中導入PyTorch依賴庫04YOLO算法簡介YOLO將對象檢測重新定義為一個回歸問題。它將單個卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用于整個圖像,將圖像分成網(wǎng)格,并預(yù)測每個網(wǎng)格的類概率和邊界框。YOLO非???。由于檢測問題是一個回歸問題,所以不需要復(fù)雜的管道。它比“R-CNN”快1000倍,比“FastR-CNN”快100倍。它能夠處理實時視頻流,延遲小于25毫秒。它的精度是以前實時系統(tǒng)的兩倍多。同樣重要的是,YOLO遵循的是“端到端深度學習”的實踐。04YOLO目標檢測算法YOLOv3對比其他算法04YOLO目標檢測算法YOLO:YouOnlyLookOnce04YOLO目標檢測算法YOLO是一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體目標檢測算法;YOLO網(wǎng)格中的每個單元格負責檢測自身內(nèi)部的對象;YOLOv5-X、YOLOX-X:mAP>50%,60fps,COCO-640×640。04YOLO目標檢測算法YOLO的第五代改進算法使用PyTorch框架,使用方便P模型權(quán)重文件可轉(zhuǎn)化為ONXX格式以適配安卓可轉(zhuǎn)換為Opencv的使用格式可通過CoreML轉(zhuǎn)化為IOS格式部署至手機應(yīng)用端YOLOv504YOLO目標檢測算法網(wǎng)絡(luò)的容量越大->參數(shù)越多->準確率越高相同硬件配置的條件下,訓練參數(shù)越多的網(wǎng)絡(luò)需要越多的時間YOLOv5的四種網(wǎng)絡(luò)結(jié)構(gòu)四種YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)中,移動端的部署建議使用的網(wǎng)絡(luò)為YOLOv5sYOLOv5m云平臺端的部署建議使用的網(wǎng)絡(luò)為YOLOv5lYOLOv5x04YOLO目標檢測算法YOLOv5的四種網(wǎng)絡(luò)結(jié)構(gòu)PyTorch與YOLOv5簡介204知識儲備目標檢測簡介1Pytorch轉(zhuǎn)onnx的意義433COCO數(shù)據(jù)集04COCO數(shù)據(jù)集的由來COCO的全稱是MicrosoftCommonObjectsinContext(場景中的常見物體)起源于微軟于2014年出資標注的MicrosoftCOCO數(shù)據(jù)集ImageNet計算機視覺競賽停辦后,COCO競賽就成為目標識別和檢測等領(lǐng)域的一個最權(quán)威、最重要的標桿。04COCO數(shù)據(jù)集簡介COCO數(shù)據(jù)集是一個大型目標分類(識別)、檢測、分割、語義標注數(shù)據(jù)集。這個數(shù)據(jù)集以場景理解(ScenceUnderstanding)為目標,主要從復(fù)雜的日常場景中截取,圖像中的目標通過精確的分割進行位置的標定。COCO是目前為止有語義分割的最大數(shù)據(jù)集:80個類別;超過33萬張圖片;其中20萬張有標注,整個數(shù)據(jù)集中個體的數(shù)目超過150萬個。04COCO數(shù)據(jù)集簡介COCO數(shù)據(jù)集中的部分圖片如右圖所示。COCO數(shù)據(jù)集中標注類別包含:人:1類交通工具:8類,自行車,汽車等公路常見:5類,信號燈,停車標志等動物:10類,貓狗等攜帶物品:5類,背包,雨傘等運動器材:10類,飛盤,滑雪板,網(wǎng)球拍等。廚房餐具:7類,瓶子,勺子等水果及食品:10類家庭用品:7類,椅子、床,電視等家庭常見物品:17類,筆記本,鼠標,遙控器等PyTorch與YOLOv5簡介204知識儲備目標檢測簡介1Pytorch轉(zhuǎn)onnx的意義433COCO數(shù)據(jù)集Pytorch轉(zhuǎn)onnx的意義04一般來說轉(zhuǎn)ONNX只是一個手段,在之后得到ONNX模型后還需要再將它做轉(zhuǎn)換,比如:轉(zhuǎn)換到TensorRT上完成部署,或者有的人多加一步,從ONNX先轉(zhuǎn)換到caffe,再從caffe到tensorRT。原因是Caffe對tensorRT更為友好。轉(zhuǎn)換成我們邊緣端需要用到的rknn模型,完成部署等各類情況因此在轉(zhuǎn)ONNX工作開展之前,首先必須明確目標后端。ONNX只是一個格式,就和json一樣。只要你滿足一定的規(guī)則,都算是合法的,因此單純從Pytorch轉(zhuǎn)成一個ONNX文件很簡單。但是不同后端設(shè)備接受的onnx是不一樣的。職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換05任務(wù)實施基于YOLOv5進行模型訓練1預(yù)測模型2Pytorch模型文件轉(zhuǎn)onnx模型文件1131133基于YOLOv5進行模型訓練05下載項目源碼基于YOLOv5進行模型訓練05安裝所需要的依賴包基于YOLOv5進行模型訓練05驗證PyTorch包基于YOLOv5進行模型訓練05準備數(shù)據(jù)集05模型訓練(1)基于YOLOv5進行模型訓練05模型訓練(2)基于YOLOv5進行模型訓練05基于YOLOv5進行模型訓練利用以下腳本顯示相關(guān)圖片,只需要修改圖片路徑即可:img=cv2.imread(圖片路徑)frommatplotlibimportpyplotasplt

importnumpyasnp

importcv2

img=cv2.imread('yolov5/runs/detect/exp/bus.jpg')

img2=img[:,:,::-1]#列表數(shù)組左右翻轉(zhuǎn),實現(xiàn)BGR賺RGB

plt.figure(figsize=(20,20))

plt.imshow(img2)05任務(wù)實施基于YOLOv5進行模型訓練1預(yù)測模型2Pytorch模型文件轉(zhuǎn)onnx模型文件113113305預(yù)測模型yolov5項目有提供模型檢測腳本detect.py,利用這個腳本可以對自己訓練的模型文件進行預(yù)測,默認會將預(yù)測結(jié)果輸出到y(tǒng)olov5/runs/detect/。05預(yù)測模型根據(jù)模型訓練出來的結(jié)果路徑,指定權(quán)重weights輸出結(jié)果如下:05預(yù)測模型檢測前后效果對比05任務(wù)實施基于YOLOv5進行模型訓練1預(yù)測模型2Pytorch模型文件轉(zhuǎn)onnx模型文件113113305Pytorch模型文件轉(zhuǎn)onnx模型文件在做模型文件轉(zhuǎn)換之前,需要搭建環(huán)境,安裝所需的Python依賴包,手動安裝以下依賴包:coremltools==4.1

onnx==1.10.1

scikit-learn==0.19.2

onnx-simplifier==0.3.6在命令行中,安裝依賴包可以寫一個或多個包同時安裝例如:!sudopipinstallcoremltools==4.1onnx==1.10.1scikit-learn==0.19.2onnx-simplifier==0.3.6-i/simple05Pytorch模型文件轉(zhuǎn)onnx模型文件在上一節(jié),準備好的Pytorch模型best.pt,具體路徑,比如:yolov5/runs/train/exp3/weights/best.pt,轉(zhuǎn)換后的onnx模型默認是在Pytorch的模型路徑里面,比如:yolov5/runs/train/exp3/weights/best.onnx05Pytorch模型文件轉(zhuǎn)onnx模型文件指定模型路徑,利用以下命令進行轉(zhuǎn)換:python3path/to/export.py--weights$m.pt--img640--batch-size1輸出結(jié)果為:05Pytorch模型文件轉(zhuǎn)onnx模型文件指定模型路徑,利用以下命令進行轉(zhuǎn)換:python3path/to/export.py--weights$m.pt--img640--batch-size1輸出結(jié)果為:05Pytorch模型文件轉(zhuǎn)onnx模型文件利用預(yù)測腳本detect.py指定onnx模型文件路徑,和需要預(yù)測的圖片源,結(jié)果默認輸出到y(tǒng)olov5/runs/detect/exp*目錄下面。由于Pytorch模型文件轉(zhuǎn)出來的onnx模型文件默認輸入為640*640圖片源,所以需要把圖片先轉(zhuǎn)成640*640的圖片后,再進行使用05Pytorch模型文件轉(zhuǎn)onnx模型文件轉(zhuǎn)換出來的原圖:預(yù)測模型命令:!pythonyolov5/detect.py--weightsyolov5/runs/train/exp/weights/best.onnx--sourceyolov5/data/images/zidane2.jpg--projectyolov5/runs/detect結(jié)果為:職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換任務(wù)檢查與評價061、請參照評價標準完成自評和對其他小組的互評。2、各組請代表分析本組任務(wù)實施經(jīng)驗。序號評價內(nèi)容評價標準分值得分1知識運用(20%)掌握相關(guān)理論知識,理解本次任務(wù)要求,制定詳細計劃,計劃條理清晰,邏輯正確(20分)20分

理解相關(guān)理論知識,能根據(jù)本次任務(wù)要求、制定合理計劃(15分)了解相關(guān)理論知識,有制定計劃(10分)無制定計劃(0分)2專業(yè)技能(40%)完成Pytorch-yolov5的模型訓練,預(yù)測自己訓練的模型以及將Pytorch模型文件轉(zhuǎn)onnx模型文件。(40分)40分

完成Pytorch-yolov5的模型訓練,預(yù)測自己訓練的模型。(30分)完成Pytorch-yolov5的模型訓練。(20分)完成環(huán)境的配置。(10分)沒有完成Pytorch-yolov5的模型訓練。(0分)3核心素養(yǎng)(20%)具有良好的自主學習能力、分析解決問題的能力、整個任務(wù)過程中有指導他人(20分)20分

具有較好的學習能力和分析解決問題的能力,任務(wù)過程中無指導他人(15分)能夠主動學習并收集信息,有請教他人進行解決問題的能力(10分)不主動學習(0分)4課堂紀律(20%)設(shè)備無損壞、設(shè)備擺放整齊、工位區(qū)域內(nèi)保持整潔、無干擾課堂秩序(20分)20分

設(shè)備無損壞、無干擾課堂秩序(15分)無干擾課堂秩序(10分)干擾課堂秩序(0分)總得分職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換任務(wù)小結(jié)07職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換任務(wù)拓展08嘗試調(diào)整該任務(wù)中的模型訓練參數(shù)并重新訓練,提升模型的識別精度。謝謝大家項目四基于Pytorch(YOLOv5)目標檢測模型部署邊緣智能計算應(yīng)用任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件邊緣智能計算應(yīng)用職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件了解轉(zhuǎn)成rknn模型的意義了解rknn的相關(guān)知識掌握如何將onnx模型文件轉(zhuǎn)成rknn模型文件掌握如何預(yù)測rknn模型文件職業(yè)能力目標01知識目標技能目標職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件此任務(wù)要求讀者了解轉(zhuǎn)成rknn模型的意義,搭建onnx模型文件轉(zhuǎn)rknn模型文件的環(huán)境,將onnx模型文件轉(zhuǎn)換rknn模型文件,預(yù)測rknn模型文件并部署到AI邊緣開發(fā)板。任務(wù)描述任務(wù)要求創(chuàng)建模型轉(zhuǎn)換所需的虛擬環(huán)境配置腳本參數(shù)進行模型轉(zhuǎn)換驗證RKNN模型RKNN模型部署到邊緣端任務(wù)描述與要求02職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件任務(wù)分析onnx模型文件轉(zhuǎn)成rknn模型文件開始之前需要做哪些準備工作?預(yù)測rknn模型文件過程中涉及到哪些參數(shù)?任務(wù)分析與計劃03任務(wù)計劃表項目名稱基于Pytorch(yolov5)目標檢測模型部署任務(wù)名稱ONNX模型文件轉(zhuǎn)RKNN模型文件計劃方式自主設(shè)計計劃要求請用8個計劃步驟來完整描述出如何完成本次任務(wù)序號任務(wù)計劃1

2

3

4

5

6

78通過上面的思考,你是否對本任務(wù)要完成的工作有所了解?讓我們一起來制訂完成本次任務(wù)的實施計劃吧!任務(wù)分析與計劃03職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件轉(zhuǎn)rknn模型文件的意義204知識儲備ONNX簡介133模型部署邊緣計算404ONNX簡介OpenNeuralNetworkExchange(ONNX,開放神經(jīng)網(wǎng)絡(luò)交換)格式,是一個用于表示深度學習模型的標準,可使模型在不同框架之間進行轉(zhuǎn)移。04ONNX簡介ONNX是一種針對機器學習所設(shè)計的開放式的文件格式,用于存儲訓練好的模型。它使得不同的人工智能框架(如Pytorch,MXNet)可以采用相同格式存儲模型數(shù)據(jù)并交互。04ONNX簡介ONNX的規(guī)范及代碼主要由微軟,亞馬遜,F(xiàn)acebook和IBM等公司共同開發(fā),以開放源代碼的方式托管在Github上。04ONNX簡介目前官方支持加載ONNX模型并進行推理的深度學習框架有:Caffe2,PyTorch,MXNet,ML.NET,Tensor和MicrosoftCNTK,并且TensorFlow也非官方的支持ONNX。04ONNX簡介假設(shè)一個場景:現(xiàn)在某組織因為主要開發(fā)用TensorFlow為基礎(chǔ)的框架,現(xiàn)在有一個深度算法,需要將其部署在移動設(shè)備上,以觀測變現(xiàn)。傳統(tǒng)地我們需要用caffe2重新將模型寫好,然后再訓練參數(shù);試想下這將是一個多么耗時耗力的過程。04ONNX簡介此時,ONNX便應(yīng)運而生,Caffe2,PyTorch,MicrosoftCognitiveToolkit,ApacheMXNet等主流框架都對ONNX有著不同程度的支持。這就便于了我們的算法及模型在不同的框架之間的遷移。04ONNX簡介開放式神經(jīng)網(wǎng)絡(luò)交換(ONNX)是邁向開放式生態(tài)系統(tǒng)的第一步,它使AI開發(fā)人員能夠隨著項目的發(fā)展選擇合適的工具04ONNX簡介

ONNX為AI模型提供開源格式。它定義了可擴展的計算圖模型,以及內(nèi)置運算符和標準數(shù)據(jù)類型的定義。04ONNX簡介ONNX解釋計算圖的可移植,它使用graph的序列化格式。它不一定是框架選擇在內(nèi)部使用和操作計算的形式。例如,如果在優(yōu)化過程中操作更有效,則實現(xiàn)可以在存儲器中以不同方式表示模型。轉(zhuǎn)rknn模型文件的意義204知識儲備ONNX簡介133模型部署邊緣計算404轉(zhuǎn)rknn模型文件的意義上一節(jié),有提到,onnx模型文件格式是只是一個過渡格式,其主要目的是將其他框架的模型文件轉(zhuǎn)成目標模型文件。04轉(zhuǎn)rknn模型文件的意義在這里就是要將Pytorch模型文件轉(zhuǎn)換成rknn這個目標模型文件。而轉(zhuǎn)成rknn模型文件的意義在于與AI邊緣計算終端結(jié)合04轉(zhuǎn)rknn模型文件的意義將rknn模型文件部署到終端上,利用AI邊緣終端的高速NPU處理能力來進行推理,進而實現(xiàn)實際場景化的應(yīng)用。轉(zhuǎn)rknn模型文件的意義204知識儲備ONNX簡介133模型部署邊緣計算404模型部署模型訓練重點關(guān)注的是如何通過訓練策略來得到一個性能更好的模型,其過程似乎包含著各種“玄學”,被戲稱為“煉丹”。整個流程包含從訓練樣本的獲取(包括數(shù)據(jù)采集與標注),模型結(jié)構(gòu)的確定,損失函數(shù)和評價指標的確定,到模型參數(shù)的訓練,這部分更多是業(yè)務(wù)方去承接相關(guān)工作。一旦“煉丹”完成(即訓練得到了一個指標不錯的模型),如何將這顆“丹藥”賦能到實際業(yè)務(wù)中,充分發(fā)揮其能力,這就是部署方需要承接的工作。04模型部署云端部署常見的模式是模型部署在云端服務(wù)器,用戶通過網(wǎng)頁訪問或者API接口調(diào)用等形式向云端服務(wù)器發(fā)出請求,云端收到請求后處理并返回結(jié)果。邊緣部署則主要用于嵌入式設(shè)備,主要通過將模型打包封裝到SDK,集成到嵌入式設(shè)備,數(shù)據(jù)的處理和模型推理都在終端設(shè)備上執(zhí)行。如何對應(yīng)兩種場景去合理部署我們的模型呢?04模型部署針對上面提到的兩種場景,分別有兩種不同的部署方案,Service部署和SDK部署。04模型部署Service部署:主要用于中心服務(wù)器云端部署,一般直接以訓練的引擎庫作為推理服務(wù)模式。04模型部署SDK部署:主要用于嵌入式端部署場景,以C++等語言實現(xiàn)一套高效的前后處理和推理引擎庫(高效推理模式下的Operation/Layer/Module的實現(xiàn)),用于提供高性能推理能力。此種方式一般需要考慮模型轉(zhuǎn)換(動態(tài)圖靜態(tài)化)、模型聯(lián)合編譯等進行深度優(yōu)化。04模型部署SDK部署與Service部署的對比04模型部署部署的核心目標是合理把控成本、功耗、性價比三大要素。成本問題是部署硬件的重中之重,AI模型部署到硬件上的成本將極大限制用戶的業(yè)務(wù)承受能力。成本問題主要聚焦于芯片的選型,比如,對比寒武紀MLU220和MLU270,MLU270主要用作數(shù)據(jù)中心級的加速卡,其算力和功耗都相對于邊緣端的人工智能加速卡MLU220要低。至于Nvida推出的Jetson和TeslaT4也是類似思路,TeslaT4是主打數(shù)據(jù)中心的推理加速卡,而Jetson則是嵌入式設(shè)備的加速卡。轉(zhuǎn)rknn模型文件的意義204知識儲備ONNX簡介133模型部署邊緣計算4邊緣計算04思考一下,邊緣計算與云計算相比優(yōu)勢在哪里?邊緣計算是將計算任務(wù)部署到靠近物或數(shù)據(jù)源頭的網(wǎng)絡(luò)邊緣側(cè)的設(shè)備上,融合網(wǎng)絡(luò)、計算、存儲、應(yīng)用核心能力的分布式開放平臺,就近提供邊緣智能服務(wù)。邊緣網(wǎng)關(guān)04邊緣網(wǎng)關(guān)是部署在網(wǎng)絡(luò)邊緣側(cè)的網(wǎng)關(guān),通過網(wǎng)絡(luò)聯(lián)接、協(xié)議轉(zhuǎn)換等功能聯(lián)接物理和數(shù)字世界,提供輕量化的聯(lián)接管理、實時數(shù)據(jù)分析及應(yīng)用管理功能。數(shù)據(jù)優(yōu)化敏捷連接實時響應(yīng)智能分析減少流量邊緣網(wǎng)關(guān)擁有強勁的邊緣計算能力職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件05任務(wù)實施onnx模型文件轉(zhuǎn)rknn模型文件1部署到AI邊緣開發(fā)板2onnx模型文件轉(zhuǎn)rknn模型文件05搭建環(huán)境在RK3399Pro板子上,官方有提供rknn_toolkit-1.7.1-cp36-cp36m-linux_x86_64.whl的pip安裝包;這個軟件包,就是用來轉(zhuǎn)換模型,加載模型,推理模型等等,但目前Linux版本只能支持python3.6的版本,最新安裝包的版本,可以根據(jù)官方地址進行下載/rockchip-linux/rknn-toolkit/releasesonnx模型文件轉(zhuǎn)rknn模型文件05搭建環(huán)境在虛擬環(huán)境下,安裝依賴包,轉(zhuǎn)換成rknn模型主要依賴一下幾個包:? rknn_toolkit-1.7.1-cp36-cp36m-linux_x86_64.whl? torch==1.9.0? torchaudio==0.9.0? torchvision==0.10.0? tensorflow==2.1.0? numpy==1.19.5onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型利用rknn_toolkit工具將onnx模型文件轉(zhuǎn)換成rknn模型文件,基本轉(zhuǎn)換流程為:onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型為了后面部署方便,把上一節(jié)的onnx模型文件拷貝到y(tǒng)olov5/rknn/models/下面,然后再進行轉(zhuǎn)換,轉(zhuǎn)換完成后,將yolov5/rknn/目錄打包下來,上傳到開發(fā)板上importosimportsysimportnumpyasnpfromrknn.apiimportRKNN初始化rknnSDK環(huán)境rknn=RKNN(verbose=True,verbose_file=None)? verbose指定是否要在屏幕上打印詳細日志信息;默認False不打印,? verbose_file調(diào)試信息指定轉(zhuǎn)儲到文件路徑,默認為None。如果設(shè)置了verbose_file參數(shù),且verbose參數(shù)值為True,日志信息還將寫到該參數(shù)指定的文件中onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用config接口設(shè)置模型的預(yù)處理參數(shù)rknn.config(reorder_channel='012',

mean_values=[[0,0,0]],

std_values=[[255,255,255]],

optimization_level=3,

target_platform='rk3399pro',

output_optimize=1,

quantize_input_node=True)onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用load_onnx接口,加載原始的onnx模型文件ret=rknn.load_onnx(model='./yolov5/rknn/models/best.onnx',outputs=['378','439','500'])onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用build接口,依照加載的模型結(jié)構(gòu)及權(quán)重數(shù)據(jù),構(gòu)建對應(yīng)的RKNN模型。ret=rknn.build(do_quantization=True,dataset=‘./rknn/dataset.txt’,pre_compile=False,rknn_batch_size=1)onnx模型文件轉(zhuǎn)rknn模型文件05轉(zhuǎn)換模型調(diào)用export_rknn接口,將RKNN模型文件保存到指定文件路徑中(.rknn后綴)。ret=rknn.export_rknn('./rknn/models/best.rknn')onnx模型文件轉(zhuǎn)rknn模型文件05運行RKNN模型運行RKNN模型時,用戶不需要設(shè)置模型預(yù)處理參數(shù),也不需要構(gòu)建RKNN模型其使用流程如右圖所示:onnx模型文件轉(zhuǎn)rknn模型文件05創(chuàng)建RKNN對象,以初始化RKNNSDK環(huán)境(前面已經(jīng)有創(chuàng)建過,可以忽略,具體說明參照2.2.1)importosimportsysimportnumpyasnpfromrknn.apiimportRKNNrknn=RKNN(verbose=True)調(diào)用load_rknn接口,加載RKNN模型,參數(shù)load_model_in_npu通常默認就行ret=rknn.load_rknn(path,load_model_in_npu=False)onnx模型文件轉(zhuǎn)rknn模型文件05預(yù)編譯rknn模型離線預(yù)編譯(推薦)在線預(yù)編譯(不推薦)同樣,RKNNToolkit也提供在線編譯的接口:export_rknn_precompile_model。使用該接口,可以將普通RKNN模型轉(zhuǎn)成預(yù)編譯模型,但這個模型需要有硬件的配合。構(gòu)建RKNN模型時,可以指定預(yù)編譯選項以導出預(yù)編譯模型,這被稱為離線編譯。離線預(yù)編譯在之前有介紹過,就是在轉(zhuǎn)換模型的時候,構(gòu)建模型的接口上,加參數(shù)pre_compile=Trueonnx模型文件轉(zhuǎn)rknn模型文件05預(yù)測rknn模型利用預(yù)測腳本rknn_detect_yolov5.py對生成的rknn模型進行預(yù)測。如果在模擬器上(本機)進行預(yù)測,則導出的模型時,不能開啟預(yù)編譯(pre_compile)的開關(guān),否則無法進行預(yù)測,預(yù)編譯模型只能在硬件平臺進行預(yù)測。根據(jù)實際轉(zhuǎn)換后的模型,修改以下內(nèi)容,進行預(yù)測:修改腳本中,自己的模型路徑修改腳本中,要檢測的圖片路徑設(shè)置檢測結(jié)果保存的圖片路徑注意:

每一次運行預(yù)測模型時,需要重啟一下內(nèi)核,以免緩存干擾05任務(wù)實施onnx模型文件轉(zhuǎn)rknn模型文件1部署到AI邊緣開發(fā)板2部署到AI邊緣開發(fā)板05部署步驟如下:(1)將模型(比如:yolov5.rknn),預(yù)測腳本(rknn_detect_yolov5.py),以及要測試的圖片下載到本地;(2)在AI邊緣開發(fā)板上,創(chuàng)建一個項目目錄(比如:test_rknn),并將rknn_detect_yolov5.py、./models/best.rknn、bus.jpg上傳至該目錄;mkdirtest_rknn為了提高模型的加載速度,建議采用預(yù)編譯后的模型(非預(yù)編譯模型也可以),部署到開發(fā)板當中。部署到AI邊緣開發(fā)板05(3)修改rknn_detect_yolov5.py腳本,將腳本中,模型路徑,需要檢測的圖片路徑,結(jié)果圖片保存路徑改為當前目錄;(4)將模型,預(yù)測腳本,測試圖片上傳到開發(fā)板項目目錄中,運行命令sudopython3rknn_detect_yolov5.py即可;部署到AI邊緣開發(fā)板05(5)查看使用NPU進行加速的RKNN模型的推理結(jié)果。職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件任務(wù)檢查與評價061、請參照評價標準完成自評和對其他小組的互評。2、各組請代表分析本組任務(wù)實施經(jīng)驗。序號評價內(nèi)容評價標準分值得分1知識運用(20%)掌握相關(guān)理論知識,理解本次任務(wù)要求,制定詳細計劃,計劃條理清晰,邏輯正確(20分)20分

理解相關(guān)理論知識,能根據(jù)本次任務(wù)要求、制定合理計劃(15分)了解相關(guān)理論知識,有制定計劃(10分)無制定計劃(0分)2專業(yè)技能(40%)完成onnx模型文件轉(zhuǎn)rknn模型文件和部署到AI邊緣開發(fā)板。(40分)40分

完成onnx模型文件轉(zhuǎn)rknn模型文件。(30分)完成構(gòu)建RKNN模型。(20分)完成環(huán)境的配置。(10分)沒有完成任務(wù)。(0分)3核心素養(yǎng)(20%)具有良好的自主學習能力、分析解決問題的能力、整個任務(wù)過程中有指導他人(20分)20分

具有較好的學習能力和分析解決問題的能力,任務(wù)過程中無指導他人(15分)能夠主動學習并收集信息,有請教他人進行解決問題的能力(10分)不主動學習(0分)4課堂紀律(20%)設(shè)備無損壞、設(shè)備擺放整齊、工位區(qū)域內(nèi)保持整潔、無干擾課堂秩序(20分)20分

設(shè)備無損壞、無干擾課堂秩序(15分)無干擾課堂秩序(10分)干擾課堂秩序(0分)總得分職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二ONNX模型文件轉(zhuǎn)RKNN模型文件任務(wù)小結(jié)07職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一基于Pytorch的YOLOv5模型訓練及轉(zhuǎn)換任務(wù)拓展08修改預(yù)測腳本,使其能識別視頻流中的物體。謝謝大家項目四基于Pytorch(YOLOv5)目標檢測模型部署邊緣智能計算應(yīng)用任務(wù)三基于YOLOv5的實時檢測模型部署邊緣智能計算應(yīng)用職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)三基于YOLOv5的實時檢測模型部署了解rknn模型部署流程。能夠使用RKNN格式的模型進行推理;能夠完成推理后的圖片處理并輸出結(jié)果;能夠使用線程的方式實現(xiàn)模型的實時檢測;能夠在邊緣網(wǎng)關(guān)完成應(yīng)用的運行與調(diào)試。職業(yè)能力目標01知識目標技能目標職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)三基于YOLOv5的實時檢測模型部署此任務(wù)在邊緣端對RKNN格式的模型進行測試,并通過線程的方式實現(xiàn)邊緣端實時目標檢測的應(yīng)用。任務(wù)描述任務(wù)要求加載RKNN模型并初始化運行環(huán)境;使用RKNN模型進行模型推理;使用線程進行實時目標檢測。任務(wù)描述與要求02職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)三基于YOLOv5的實時檢測模型部署任務(wù)分析實時推理為什么是用訓練好的模型?模型可以部署在哪些端?任務(wù)分析與計劃03任務(wù)計劃表項目名稱基于Pytorch(yolov5)目標檢測模型部署任務(wù)名稱基于YOLOv5的實時檢測模型部署計劃方式自主設(shè)計計劃要求請用8個計劃步驟來完整描述出如何完成本次任務(wù)序號任務(wù)計劃1

2

3

4

5

6

78通過上面的思考,你是否對本任務(wù)要完成的工作有所了解?讓我們一起來制訂完成本次任務(wù)的實施計劃吧!任務(wù)分析與計劃03職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)三基于YOLOv5的實時檢測模型部署設(shè)備端模型部署204知識儲備云計算部署模式133邊緣AI云計算部署模式04云計算有4種部署模式社區(qū)云混合云公共云私有云04私有云

如果一個云端的所有消費者只來自一個特定的單位組織(如微算科技公司),那么就是私有云。私有云的核心特征是云端資源只供一個企事業(yè)單位內(nèi)的員工使用,其他的人和機構(gòu)都無權(quán)租賃并使用云端計算資源。至于云端部署何處、所有權(quán)歸誰、由誰負責日常管理,并沒有嚴格的規(guī)定。

云端部署何處,這有兩個可能,一是部署在單位內(nèi)部(如機房),稱為本地私有云;二是托管在別處(如阿里云端),稱為托管私有云。云計算部署模式04本地私有云

由于本地私有云的云端部署在企業(yè)內(nèi)部,私有云的安全及網(wǎng)絡(luò)安全邊界定義都由企業(yè)自己實現(xiàn)并管理,一切由企業(yè)掌控,所以本地私有云適合運行企業(yè)中關(guān)鍵的應(yīng)用。云計算部署模式04托管私有云

托管私有云是把云端托管在第三方機房或者其他云端,計算設(shè)備可以自己購買,也可以租用第三方云端的計算資源,消費者所在的企業(yè)一般通過專線與托管的云端建立連接,或者利用疊加網(wǎng)絡(luò)技術(shù)在因特網(wǎng)上建立安全通道(VPN),以便降低專線費用。托管私有云由于云端托管在公司之外,企業(yè)自身不能完全控制其安全性,所以要與信譽好、資金雄厚的托管方合作,這樣的托管方抵御天災(zāi)人禍的能力更強。云計算部署模式04社區(qū)云

如果一個云端的所有消費者來自兩個或兩個以上特定的單位組織,那么就是社區(qū)云。社區(qū)云的核心特征是云端資源只給兩個或者兩個以上的特定單位組織內(nèi)的員工使用,除此之外的人和機構(gòu)都無權(quán)租賃和使用云端計算資源。參與社區(qū)云的單位組織具有共同的要求,如云服務(wù)模式、安全級別等。具備業(yè)務(wù)相關(guān)性或者隸屬關(guān)系的單位組織建設(shè)社區(qū)云的可能性更大一些,因為一方面能降低各自的費用,另一方面能共享信息。與私有云類似,社區(qū)云的云端也有兩種部署方法,即本地部署和托管部署。云計算部署模式04本地社區(qū)云

由于存在多個單位組織,所以本地部署存在三種情況:只部署在一個單位組織內(nèi)部;部署在部分單位組織內(nèi)部;部署在全部單位組織內(nèi)部。如果云端部署在多個單位組織,那么每個單位組織只部署云端的一部分,或者做災(zāi)備。云計算部署模式04托管社區(qū)云

類似于托管私有云,托管社區(qū)云也是把云端部署到第三方,只不過用戶來自多個單位組織,所以托管方還必須制訂切實可行的共享策略。云計算部署模式04公共云

如果一個云端的所有消費者來自社會公眾,那么就是公共云。公共云的核心特征是云端資源面向社會大眾開放,符合條件的任何個人或者單位組織都可以租賃并使用云端資源。公共云的管理比私有云的管理要復(fù)雜得多,尤其是安全防范,要求更高。公共云的一些例子:深圳超算中心、亞馬遜、微軟的Azure、阿里云等。

云計算部署模式04混合云如果一個云端的資源來自兩個或兩個以上的云,那么就是混合云?;旌显剖怯蓛蓚€或兩個以上不同類型的云(私有云、社區(qū)云、公共云)組成的,它其實不是一種特定類型的單個云,其對外呈現(xiàn)出來的計算資源來自兩個或兩個以上的云,只不過增加了一個混合云管理層。云服務(wù)消費者通過混合云管理層租賃和使用資源,感覺就像在使用同一個云端的資源,其實內(nèi)部被混合云管理層路由到真實的云端了。

在右圖中,假如用戶在混合云上租賃了一臺虛擬機(IaaS型資源)及開發(fā)工具(PaaS型資源),那么用戶每次都是連接混合云端,并使用其中的資源。用戶并不知道自己的虛擬機實際上位于另一個IaaS私有云端,而開發(fā)工具又在另一個公共云上。云計算部署模式04混合云部署方法由于私有云和社區(qū)云具有本地和托管兩種類型,再加上公共云,共有5種類型,所以混合云的組keys[-1]合方式就有很多種形式了。

云計算部署模式04公/私混合云混合云屬于多云這個大類,是多云大類中最主要的形式,而公/私混合云又是混合云中最主要的形式,因為它同時具備了公共云的資源規(guī)模和私有云的安全特征。從下圖中可以看出私有云和公共云構(gòu)成的混合云占比達到55%。

云計算部署模式04公/私混合云的優(yōu)勢1.架構(gòu)更靈活:可以根據(jù)負載的重要性靈活分配最適合的資源,例如將內(nèi)部重要數(shù)據(jù)保存在本地云端,而把非機密功能移動到公共云區(qū)域。2.技術(shù)方面更容易掌控。3.更安全:具備私有云的保密性,同時具有公共云的抗災(zāi)性(在公共云上建立虛擬的應(yīng)急災(zāi)備中心或者靜態(tài)數(shù)據(jù)備份點)。4.更容易滿足合規(guī)性要求:云計算審計員對多租戶的審查比較嚴格,他們往往要求云計算服務(wù)提供商必須為云端的某些(或者全部)基礎(chǔ)設(shè)施提供專門的解決方案。而這種混合云由于融合了專門的硬件設(shè)備,提高了網(wǎng)絡(luò)安全性,更容易通過審計員的合規(guī)性檢查。5.更低的費用:租用第三方資源來平抑短時間內(nèi)的季節(jié)性資源需求峰值,相比自己配置最大化資源以滿足需求峰值的成本,這種短暫租賃的費用要低得多。如下圖所示。

云計算部署模式04公/私混合云的構(gòu)成1.私有云:這是混合云的主要組成部分,企業(yè)部署混合云的步驟一般是先“私”后“公”。2.公共云。3.公/私云之間的網(wǎng)絡(luò)連接:一般為公共云提供商提供的高速專線,或者是第三方的VPN。4.混合云管理平臺:是用戶的統(tǒng)一接入點,實現(xiàn)資源的自動化、費用結(jié)算、報表生成、云端日常操作及API調(diào)用等,可以進一步細化為數(shù)據(jù)管理、虛機管理、應(yīng)用管理等幾個層面的軟件。目前混合云管理平臺產(chǎn)品有VMware。

公/私混合云的功能混合云可以做多個層面的事情,基本可以分為數(shù)據(jù)層面和業(yè)務(wù)負載層面。在這兩個層面,有一些典型的應(yīng)用場景,具體如下:1.數(shù)據(jù)備份:將私有云的數(shù)據(jù)備份到更便宜和可靠的公共云上。2.災(zāi)備:在私有云出現(xiàn)故障時,由公共云上的災(zāi)備環(huán)境提供服務(wù)。3.負載延伸:當私有云無法提供新增負載所需要的資源時,在公共云上創(chuàng)建虛擬主機來支持新的負載,當負載下降后再刪除這些虛擬主機回到純私有云。4.使用公共云作為開發(fā)測試云。

云計算部署模式設(shè)備端模型部署204知識儲備云計算部署模式133邊緣AI04設(shè)備端模型部署當我們把深度學習模型訓練好之后,想要基于深度學習模型來開發(fā)實際應(yīng)用的時候,主要有三種不同的應(yīng)用場景移動端、桌面端和服務(wù)器端。移動端:我們將模型封裝成SDK給Android和IOS調(diào)用,由于移動端算力有限通常還需要考慮基于移動端CPU或GPU框架的優(yōu)化問題來提速。如果模型要求的算力比較大,就只能考慮以API的形式來調(diào)用了,這時候模型是部署在服務(wù)器上的。桌面端:桌面應(yīng)用主要包括Windows和MacOS以及Linux,這時候我們還是需要將模型封裝成SDK然后提供接口來進行調(diào)用。Windows將模型封裝成dll或lib庫,Linux封裝成so或a庫,MacOS封裝為.a或.tbd庫。服務(wù)器端:服務(wù)器端模型的部署如果對并發(fā)量要求不高,通??赡芏际遣捎胒lask或tornado來封裝一個API接口來給調(diào)用。但是這種方式有一個致命的缺點就是,能支持的并發(fā)量很低,可擴展性也不高,如果被工具服務(wù)器很容易奔潰。對于并發(fā)量要求高的應(yīng)用建議使用基于modelserver的服務(wù)框架。04設(shè)備端模型部署近年來深度學習模型在計算機視覺、自然語言處理、搜索推薦廣告等各種領(lǐng)域,不斷刷新傳統(tǒng)模型性能,并得到了廣泛應(yīng)用。隨著移動端設(shè)備計算能力的不斷提升,移動端AI落地也成為了可能。相比于服務(wù)端,移動端模型的優(yōu)勢有:1.減輕服務(wù)端計算壓力,并利用云端一體化實現(xiàn)負載均衡。特別是在雙11等大促場景,服務(wù)端需要部署很多高性能機器,才能應(yīng)對用戶流量洪峰。平時用戶訪問又沒那么集中,存在巨大的流量不均衡問題。直接將模型部署到移動端,并在置信度較高情況下直接返回結(jié)果,而不需要請求服務(wù)端,可以大大節(jié)省服務(wù)端計算資源。同時在大促期間降低置信度閾值,平時又調(diào)高,可以充分實現(xiàn)云端一體負載均衡。2.實時性好,響應(yīng)速度快。在feed流推薦和物體實時檢測等場景,需要根據(jù)用戶數(shù)據(jù)的變化,進行實時計算推理。如果是采用服務(wù)端方案,則響應(yīng)速度得不到保障,且易造成請求過于密集的問題。利用端計算能力,則可以實現(xiàn)實時計算。3.穩(wěn)定性高,可靠性好。在斷網(wǎng)或者弱網(wǎng)情況下,請求服務(wù)端會出現(xiàn)失敗。而采用端計算,則不會出現(xiàn)這種情況。在無人車和自動駕駛等可靠性要求很高的場景下,這一點尤為關(guān)鍵,可以保證在隧道、山區(qū)等場景下仍能穩(wěn)定運行。4.安全性高,用戶隱私保護好。由于直接在端上做推理,不需要將用戶數(shù)據(jù)傳輸?shù)椒?wù)端,免去了網(wǎng)絡(luò)通信中用戶隱私泄露風險,也規(guī)避了服務(wù)端隱私泄露問題。04設(shè)備端模型部署移動端部署深度學習模型也有很大的挑戰(zhàn)。主要表現(xiàn)在,移動端等嵌入式設(shè)備,在計算能力、存儲資源、電池電量等方面均是受限的。故移動端模型必須滿足模型尺寸小、計算復(fù)雜度低、電池耗電量低、下發(fā)更新部署靈活等條件。因此模型壓縮和加速就成為了目前移動端AI的一個熱門話題。模型壓縮和加速不僅僅可以提升移動端模型性能,在服務(wù)端也可以大大加快推理響應(yīng)速度,并減少服務(wù)器資源消耗,大大降低成本。結(jié)合移動端AI模型和服務(wù)端模型,實現(xiàn)云端一體化,是目前越來越廣泛采用的方案。模型壓縮和加速是兩個不同的話題,有時候壓縮并不一定能帶來加速的效果,有時候又是相輔相成的。壓縮重點在于減少網(wǎng)絡(luò)參數(shù)量,加速則側(cè)重在降低計算復(fù)雜度、提升并行能力等。模型壓縮和加速是一個很大的命題,可以從多個角度優(yōu)化??傮w來看,個人認為主要分為三個層次:1.算法應(yīng)用層壓縮加速。這個維度主要在算法應(yīng)用層,也是大多數(shù)算法工程師的工作范疇。主要包括結(jié)構(gòu)優(yōu)化(如矩陣分解、分組卷積、小卷積核等)、量化與定點化、模型剪枝、模型蒸餾等。2.框架層加速。這個維度主要在算法框架層,比如tf-lite、NCNN、MNN等。主要包括編譯優(yōu)化、緩存優(yōu)化、稀疏存儲和計算、NEON指令應(yīng)用、算子優(yōu)化等3.硬件層加速。這個維度主要在AI硬件芯片層,目前有GPU、FPGA、ASIC等多種方案,各種TPU、NPU就是ASIC這種方案,通過專門為深度學習進行芯片定制,大大加速模型運行速度。設(shè)備端模型部署204知識儲備云計算部署模式133邊緣AI邊緣AI04

邊緣AI實際上指的就是終端智能,即在硬件設(shè)備上本地處理的AI算法。邊緣AI是融合網(wǎng)絡(luò)、計算、存儲、應(yīng)用核心能力的開放平臺,將AI部署在邊緣設(shè)備上可以使智能更貼近用戶,更快、更好地為用戶提供智能服務(wù)。隨著終端設(shè)備的日益增長,海量的數(shù)據(jù)處理需要傳送到云計算中心進行,這增大了系統(tǒng)的時延,同時對網(wǎng)絡(luò)帶寬帶來了極大的壓力。因此,實時性和帶寬不足成為了云端AI的兩大劣勢,為了帶來更快、更低成本、更安全的應(yīng)用體驗,AI開始由云端向邊緣端蔓延。邊緣AI04邊緣AI與云端AI已經(jīng)形成了對立面呢?隨著邊緣算力的豐富,包括5G大規(guī)模鋪開,越來越多地應(yīng)用場景選擇在邊緣進行展開,但這并不代表云和邊緣是兩個互相對立的角色,相反,這兩者是相輔相成,分工協(xié)同的。云端有著非常強的算力,智能終端從技術(shù)和商業(yè)模式上來講都是云端智能在邊緣側(cè)的一個延伸,是一個分布式的技術(shù)體現(xiàn)邊緣AI最大的特點便是離客戶更近,為云端減少負載,節(jié)省帶寬,提升反饋效率。其次,讓終端數(shù)據(jù)留在終端,讓云端去處理一些抽象、有共性的數(shù)據(jù),從而保護隱私。但問題也隨之而來,在終端設(shè)備收到連接問題、功耗及小型化的困擾下,芯片的面積、功耗、算力都不能夠完整滿足客戶所有的需求,這時就需要云端AI芯片。在分工協(xié)同的情況下,邊緣側(cè)會更加場景化,更加人性化,更加體現(xiàn)出它對于一些場景的理解和高效性,而云端芯片需要更加智能化,能夠處理各種各樣的業(yè)務(wù)。職業(yè)能力目標01任務(wù)描述與要求02任務(wù)分析與計劃03知識儲備04任務(wù)實施05任務(wù)檢查與評價06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)三基于YOLOv5的實時檢測模型部署05任務(wù)實施RKNN模型加載1RKNN模型推理測試2使用線程進行實時目標檢測32加載RKNN模型1初始化RKNNSDK環(huán)境3初始化運行時環(huán)境RKNN模型加載05RKNN模型加載初始化RKNNSDK環(huán)境05rknn=RKNN(verbose=True)1.初始化RKNNSDK環(huán)境rknn=RKNN(verbose=True,verbose_file=None)Verbose:指定是否要在屏幕上打印詳細日志信息;默認False不打印,verbose_file:調(diào)試信息指定轉(zhuǎn)儲到文件路徑,默認為None。如果有設(shè)置,且verbose參數(shù)值為True,日志信息還將寫到該參數(shù)指定的文件中importcv2importthreading#這是python的標準庫,線程庫fromrknn.apiimportRKNNfromyolov5.rknn.yolov5_rknn_detectimport*初始化RKNNSDK環(huán)境05RKNN_MODEL='./yolov5/rknn/models/best.rknn'ret=rknn.load_rknn(RKNN_MODEL)2.加載RKNN模型ret=rknn.load_rknn(path,load_model_in_npu=False)主要的參數(shù)說明:path:RKNN模型文件路徑。load_model_in_npu:是否直接加載npu中的rknn模型。其中path為rknn模型在npu中的路徑。返回值:0表示加載成功,-1表示加載失敗只有當RKNN-Toolkit運行在運行在RK3399ProLinux開發(fā)板或連有開發(fā)板或連有NPU設(shè)備的的PC上時才可以設(shè)為True。默認值為False。初始化RKNNSDK環(huán)境05ret=rknn.init_runtime()3.初始化運行時環(huán)境ret=rknn.init_runtime(target=None,device_id=None,perf_debug=False,eval_mem=False,async_mode=False)主要的參數(shù)說明:target:目標硬件平臺,目前支持rk3399pro、rk1806、rk1808、rv1109、rv1126。默認為None,即在PC使用工具時,模型在模擬器上運行;在RK3399ProLinux開發(fā)板運行時,模型在RK3399Pro自帶NPU上運行;否則在設(shè)定的target上運行。如果是開發(fā)板上直接運行,通常不寫。device_id:設(shè)備編號,如果PC連接多臺設(shè)備時,需要指定該參數(shù),設(shè)備編號可以通過list_devices接口查看。默認值為None。如果是開發(fā)板上直接運行,通常不寫。perf_debug:進行性能評估時是否開啟debug模式。在debug模式下,可以獲取到每一層的運行時間,否則只能獲取模型運行的總時間。默認值為False。eval_mem:是否進入內(nèi)存評估模式。進入內(nèi)存評估模式后,可以調(diào)用eval_memory接口獲取模型運行時的內(nèi)存使用情況。默認值為False。async_mode:是否使用異步模式。調(diào)用推理接口時,涉及設(shè)置輸入圖片、模型推理、獲取推理結(jié)果三個階段。如果開啟了異步模式,設(shè)置當前幀的輸入將與推理上一幀同時進行,所以除第一幀外,之后的每一幀都可以隱藏設(shè)置輸入的時間,從而提升性能。在異步模式下,每次返回的推理結(jié)果都是上一幀的。該參數(shù)的默認值為False。返回值:0表示初始化運行時環(huán)境成功,-1表示初始化運行時環(huán)境失敗。05任務(wù)實施RKNN模型加載1RKNN模型推理測試2使用線程進行實時目標檢測32

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論