iT邦幫忙

2022 iThome 鐵人賽

DAY 23
4
AI & Data

就用 Jetson Nano 來實作 Edge AI 吧!系列 第 23

【Day 23】客製化 YOLOv5 模型 (二):測試 YOLOv5 推論

  • 分享至 

  • xImage
  •  

安裝完了 YOLOv5 執行環境,今天就來測試與體驗 YOLO 的推論效果吧!

YOLO 物件偵測推論
YOLO 物件偵測推論

測試安裝的 YOLOv5

首先打開新的終端機,在 yolov5 的資料夾內除了安裝文件 requirements.txt 之外,還有官方已經寫好的程式可以供使用者使用,現在讓我們透過指令進到「yolov5」資料夾內。

cd yolov5

資料夾內有一個「detect.py」程式,可以讓使用者依照自己使用的模型,與要辨識的來源做設定,並呈現推論的結果。將準備好的網路攝影機插上 Jetson Nano 的 USB 插槽,接著輸入以下指令:

python3 detect.py --weights yolov5n6.pt --nosave --source 0

意思是使用 python3 執行 detect.py 這個 python 檔案,後方的 --weights yolov5n6.pt 則是指設定使用的模型為 yolov5n6,--nosave 則是不將推論結果錄製下來(若想保存可不輸入這個選項),最後的 --source 0 則是指定影像資料取自連接到 /dev/video0 的網路攝影機。

因為我們的 Jetson Nano 內,目前並沒有 yolov5n6.pt 這個模型,所以程式會幫我們下載預設的官方模型來使用,如下圖所示:

https://www.circuspi.com/wp-content/uploads/2022/08/29.png

執行過程中會需要一段時間,除了下載模型之外,還需要將模型部屬到 GPU 上。完成後會如下圖所示,顯示目前攝影機拍攝的畫面,並附加推論結果到螢幕上,終端機也會同步出現目前辨識的資訊和推論速度。可以看到每個 frame 推論的時間大約在 65~70 ms 之間,可以達到即時的效果。但因為筆者的 gif 動圖設定只有 5 FPS 所以看起來卡卡 XD。

webcam

要關閉程式的話相當簡單,點選拍攝畫面的視窗,並瘋狂按下鍵盤上的「Q鍵」,待視窗關閉,程式也會跟著結束。或是點選終端機視窗,按下鍵盤上的「Ctrl + C鍵」,一次不行就按第二次,成功的話程式也會關閉。

https://www.circuspi.com/wp-content/uploads/2022/08/31.png

參數設定

關於 --weight 參數可以選用多種育訓練模型,其列表如下:

Model size(pixels) mAP val SpeedV100 b1(ms) params(M) FLOPs@640 (B)
YOLOv5n 640 28.0 6.3 1.9 4.5
YOLOv5s 640 37.4 6.4 7.2 16.5
YOLOv5m 640 45.4 8.2 21.2 49.0
YOLOv5l 640 49.0 10.1 46.5 109.1
YOLOv5x 640 50.7 12.1 86.7 205.7
YOLOv5n6 1280 36.0 8.1 3.2 4.6
YOLOv5s6 1280 44.8 8.2 12.6 16.8
YOLOv5m6 1280 51.3 11.1 35.7 50.0
YOLOv5l6 1280 53.7 15.8 76.8 111.4

可以看到依據模型參數量(params)的多寡,會影響準確度 (mAP) 以及推論速度,考量到要在邊緣裝置上運行勢必參數量不能太多,然而其箇中之差異,各位可以任意替換做體驗。 例如想換成 YOLOv5l 模型,只要將參數改為 --weight yolov5l.pt 即可喔!

此外,參數 --source 也可以指定為圖片檔、影片檔、資料夾、甚至是 RTSP 串流與HTTP串流,都是可以接受的!接下來就進行一段影片推論的測試。

下載測試推論用的影片(影片來源為 Pexels)

wget https://raw.githubusercontent.com/FelixLinSY/DevCloud_Hands_On/main/test_video/street.mp4

修改參數進行影片的推論,完成後會把輸出結果放在 yolov5/runs/ 路徑下

python3 detect.py --source street.mp4 --weights yolov5l6.pt

擷取一段推論後的片段,精確度相當不錯,即便是微小的紅綠燈或是行人也可以被判讀出來,此外當然也會有些誤判的部分,可以設定門檻值來提高鑑別度。
street

小結

今天主要是驗證是否有把環境成功安裝,並使用網路攝影機體驗 YOLOv5 模型推論的威力!現在執行的模型,是官方經由著名「COCO dataset」所訓練的模型,共可辨識 80 種不同的目標。接下來,將帶大家從蒐集資料開始,接著使用方便的線上工具,標記您所要關注的目標,與建立資料集,最後透過 Google colab 強大的資源訓練自己的 YOLOv5 模型,See You!


上一篇
【Day 22】客製化 YOLOv5 模型 (一):建立執行環境
下一篇
【Day 24】客製化 YOLOv5 模型 (三):蒐集資料
系列文
就用 Jetson Nano 來實作 Edge AI 吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Judge
iT邦新手 5 級 ‧ 2022-10-05 17:40:02

謝謝詳細的文章!
請問如果要訓練自己的dataset(類別跟COCO的80種類別不一樣),在訓練時和推論時要改那些地方?

我要留言

立即登入留言