1. YOLO模型資料
本文檔內容以yolov5-7.0工程、yolov5s模型為例。
a. 模型結構
詳細的模型結構可以利用netron工具打開.pt或.onnx模型查看。
b. 模型參數即驗證結果
其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x為五種類型的預訓練模型,其包含的檢測類別相同,均包括以下80類'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
'train','truck','boat', 'traffic light','fire hydrant',
'stop sign','parking meter', 'bench', 'bird', 'cat', 'dog',
'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe',
'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat',
'baseball glove', 'skateboard', 'surfboard','tennis racket',
'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl',
'banana', 'apple','sandwich', 'orange', 'broccoli', 'carrot',
'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant','bed', 'dining table', 'toilet', 'tv', 'laptop',
'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven',
'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase',
'scissors', 'teddy bear','hair drier', 'toothbrush':
Size表示模型支持輸入的圖像尺寸為640*640。
MAP(50-95)表示只有當預測結果置信度閾值為50-95時才算正確的話,模型在coco測試集上的預測精確度。
Speed cpu b1表示該模型在cpu上的推理速度是多少。
Speed V100 b1表示該模型在gpu上的推理速度是多少,其中V100為英偉達的一種顯卡類型。
Params表示模型需要訓練的參數數量,單位是million。
FLOPs表示模型執行推理時每秒需要進行的浮點數運算次數,次數越少說明模型約輕量,模型參數越少。
2. 移植過程和優化文檔
通過章節一得到yolo原始模型,其后綴為.pt,要想將其放到SS928芯片上執行推理,必須將其轉換為.om模型,.pt模型轉為.om模型需要分兩步:
1).pt模型轉為.onnx;
2).onnx轉為.om;
其中,步驟1依賴github開源的yolo工程,步驟2依賴海思提供的atc工具,即資料包中的Ascend-cann-toolkit_6.10.t01spc030b330_linux.x86_64.run。
下面將對步驟1和步驟2的實現進行詳細的說明:
2.1環境搭建指南
.pt模型轉換為.onnx
2.1.1.準備一個純凈的ubuntu18:04的環境;
2.1.2.安裝anaconda
通過安裝Anaconda來創建虛擬環境,可以在同一個系統上創建多個相互獨立的 Python 運行環境。每個虛擬環境中都可以安裝所需的 Python 包和庫,以滿足不同項目或應用程序的需求,而且不會影響到系統上其他的 Python 環境,保證了環境隔離。(與全局系統環境和其他虛擬環境都隔離開來)
(1)Anaconda鏡像資源下載網址:Index of /anaconda/archive/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror
(2)選擇對應的版本下載,下載完成后在終端輸入命令運行.sh文件即可安裝:
./Anaconda3-2020.11-Linux-x86_6