工程筆記本 / AIoT&邊緣運算

AIoT&邊緣運算

AI 邊緣運算:使用 Jetson Orin 單板電腦執行YOLOv8與YOLO11訓練與辨識教學

郭 俊廷📅 2025-08-11👁 152

前言

我們已經寫了多篇 YOLO V8 資料標記以及雲端訓練模型資料的方法,最近 Roboflow更新之後已無法透過原本的方法直接在雲端訓練,這時候可改用 NVIDIA Jetson ORIN 系列進行訓練。
撰寫/攝影  郭俊廷
時間  1 小時 (看網路速度) 材料
難度  3(滿分5)

本文

如果想要想快速體驗YOLOv8的朋友,請參考這個 NVIDIA Jetson AI Lab 範例,已有現成使用 NVIDIA TensorRT 在 Jetson 上 執行 Ultralytics YOLOv8。使用Docker容器快速建構操作環境,下載安裝好就能馬上辨識圖片,但如果要訓練以及透過攝影機進行即時辨識,需要另外熟悉 Docker 的相關設定,設定較複雜,且有時候會失敗,在此就不另外介紹,請自行參考原廠說明。 本文要透過原生安裝(不使用 Docker)。首先需要使用 NVIDIA SDK Manager 來安裝 JetPack (詳細教學請點我)。接著依序安裝 ultralytics Python 套件;安裝 PyTorch + torchvision(需支援 ARM64 架構);安裝 onnxruntime‑gpu。 首先看看 Jetson 系列裝置規格與 AI 推論表現:
型號 AI 推論效能 (TOPS) GPU 架構
Jetson AGX Orin 64GB  ~275 Ampere 架構,2048 核心+64 Tensor Cores
Jetson Orin NX 16GB  ~100 Ampere 架構,1024 核心+32 Tensor Cores
Jetson Orin Nano Super  ~67 Ampere 架構,1024 核心+32 Tensor Cores
Jetson AGX Xavier *  ~32 Volta 架構,512 核心+64 Tensor Cores
Jetson Xavier NX *  ~21 Volta 架構,384 核心+48 Tensor Cores
Jetson Nano (4GB) *  ~472 GFLOPS Maxwell 架構,128 核心
* 為上一代 Jetson Jetson 與 JetPack SDK 的支援版本如下:
  • Jetson AGX Orin、Orin NX、Orin Nano Super:支援 JetPack 5 與 JetPack 6 系列
  • Xavier NX、AGX Xavier:支援 JetPack 5
  • Jetson Nano(舊型號):支援 JetPack 4.6.x 系列
本篇文章主要介紹 JetPack 6 以上套件安裝方法,如需要JetPack5的安裝流程請點我

安裝 Ultralytics 套件

接下來要在 Jetson Orin (作業系統 JetPack6)裝置上安裝 Ultralytics 套件,並加上額外的相依套件,這樣才能把 PyTorch 模型匯出為其他格式。著重於匯出為 NVIDIA TensorRT,因為 TensorRT 可協助我們在 Jetson 裝置上發揮最大效能。

更新套件清單、安裝 pip 並升級至最新版本:

sudo apt update sudo apt install python3-pip -y pip install -U pip 安裝 ultralytics pip 套件,並包含可選的相依套件 (新的相依套件還有問題,所以本文使用舊版的套件解析器): pip install ultralytics[export] --use-deprecated=legacy-resolver 出現錯誤是正常的因為tensorflow跟PyTorch無法透過pip安裝

重新開機後才可以順利安裝剩下的套件:

sudo reboot

安裝 PyTorch 與 Torchvision

上面安裝 ultralytics 的過程中會同時安裝 Torch 與 Torchvision。但這些透過 pip 安裝的套件並不相容於基於 ARM64 架構的 Jetson 平台。因此,我們需手動安裝預編譯的 PyTorch,並從原始碼編譯/安裝 Torchvision。 根據 JP6.1的版本安裝 torch 2.5.0 與 torchvision 0.20(實測之後JP62也可正常安裝): pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.5.0a0+872d972e41.nv24.08-cp310-cp310-linux_aarch64.whl pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.20.0a0+afc54f7-cp310-cp310-linux_aarch64.whl 出現錯誤沒關係最後有正確安裝torch-2.5.0即可 torchvision 0.20也順利安裝,如下圖 ? 備註: 請造訪 Jetson 的 PyTorch 頁面 以取得所有 JetPack 版本的對應 PyTorch 安裝方式。關於 PyTorch 和 Torchvision 的相容性詳細列表,可參考 PyTorch 與 Torchvision 相容性頁面

安裝 cuSPARSELt 以修正 torch 2.5.0 的相依問題

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/arm64/cuda-keyring_1.1-1_all.deb   sudo dpkg -i cuda-keyring_1.1-1_all.deb   sudo apt-get update   sudo apt-get -y install libcusparselt0 libcusparselt-dev

安裝 onnxruntime-gpu

PyPI 上的 onnxruntime-gpu 套件沒有提供適用於 Jetson (aarch64 架構) 的版本,因此需要手動安裝。這個套件是部分模型匯出所需的。 您可以在 Jetson Zoo ONNX Runtime 相容性對照表中找到所有可用版本(依 JetPack 版本、Python 版本等分類)。這裡我們會下載並安裝支援 Python 3.10 的 onnxruntime-gpu 1.20.0: pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.20.0-cp310-cp310-linux_aarch64.whl 注意:onnxruntime-gpu 安裝後會自動將 numpy 升級為最新版本,因此需重新安裝 numpy 1.23.5 以修正相容性問題: pip install numpy==1.23.5 最後檢查pytorch跟torchvision有沒有順利安裝完成可以使用以下兩個指令查看安裝版本,如下圖 查看pytorch版本 python3 -c "import torch; print(torch.__version__)" 查看torchvision版本 python3 -c "import torchvision; print(torchvision.__version__)"   安裝完成之後,就可以開始 YOLO的訓練與辨識。首先要建立一個資料夾,用於存放YOLO的模型以及辨識的結果等資料: mkdir yolov8_models 接著移動到資料夾執行 detect 指令,如果初次執行沒有下載yolov8n.pt等對應模型,系統會自動下載,請稍候。 移動到yolov8_models資料夾 cd ~/yolov8_models

使用yolov8n模型

yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' show=True

使用yolo11n模型

yolo detect predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg' 以下是使用yolov8n模型辨識圖片的結果: 從攝影機即時偵測的指令 yolo detect predict model=yolov8n.pt source=0 show=True 更詳細的辨識任務分類請參考 ultralytics 說明文件

如何訓練YOLOv8 的模型

訓練 YOLOv8模型,可以使用 roboflow 的已標註資料集,或是使用別人標記好的內容,也可以參考 CAVEDU 教學。 在此的做法是直接開啟 Roboflow 網站,點選您標記好的資料,並點選右上角的Download Dataset,格式選擇 YOLOv8,並且選擇 Download zip to computer。如需訓練為YOLO11只要把格式改為YOLO11即可。 下載完之後可以發現其中已切分好訓練集、驗證集、測試集的資料夾以及data.yaml 設定檔:
  • train
  • valid
  • test
  • data.yaml
這時候要執行指令以下指令,使用 data=TEST2/data.yaml 檔案參數下,使用yolov8n 為基準模型訓練30次。 yolo detect train data=TEST2/data.yaml model=yolov8n.pt epochs=30 imgsz=640 device=0 看到 Epoch 1/50 代表50回合中的第1回合,訓練開始囉,請耐心等候。 訓練結束後會顯示花費的時間,以及訓練好的模型的存放路徑。我們可以根據需求選擇best.pt:這是表現最好的模型,通常會使用這個檔案來進行最終的部署,或是last.pt:這是最後一次訓練週期的模型,方便您未來想要接續訓練時使用。 訓練完之後好的資料夾會出現如下訓練參數圖,方便您查看訓練效果,來決定是否要接續訓練或是開始使用已訓練好的模型。   最後,以本文作者實際操作的訓練資料夾為例,可以直接選擇讀取訓練好的best.pt 來進行辨識,指令如下: yolo detect predict model=runs/detect/train/weights/best.pt source=0 show=True 在 Jetson Orin NX 上的執行效果如下,可看到順利辨識 JETBOTCAVEDU 兩個自定義物件: 本文說明如何在 NVIDIA Jeton Orin NX 邊緣運算電腦上使用自定義資料集來訓練 YOLOv8 / YOLO11 模型,過程中有借助 Roboflow 網站來幫助我們標註資料集與匯出成指定格式。

參考資料

  • https://www.jetson-ai-lab.com/tutorial_ultralytics.html
  • https://docs.ultralytics.com/zh/guides/nvidia-jetson/#start-with-native-installation
 

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。