發表文章

Jetson Orin Nano 實戰(二):用 TensorRT 讓 YOLOv8 推論快 4.8 倍

上一篇〈實戰(一)〉已經讓 Jetson Orin Nano 用 PyTorch GPU 跑 YOLOv8n,推論約 17 ms、畫面約 30 FPS。這篇要把模型轉成 NVIDIA 的 TensorRT engine ,再用一支專門跑 TensorRT 的 server01.py 執行。 實測結果: 推論時間從 17.4 ms 降到 3.6 ms,約快 4.8 倍 ,偵測結果幾乎一樣。 匯出 TensorRT 的過程有幾個地方很容易讓人以為「當掉了」或「裝不起來」。以下照 正確順序 寫,第一次就能成功。 前置條件 已完成〈實戰(一)〉:相機正常、 torch.cuda.is_available() 為 True 、 server.py 能夠執行。 本文環境:Jetson Orin Nano 8GB(Super)、JetPack 6.2(TensorRT 10.3.0)、Python 3.10、IMX219 相機。 先看重點:三個最容易走錯的地方 先手動裝好 ONNX 相關套件 :PyPI 上沒有 Jetson 版的 onnxruntime-gpu 。如果讓 ultralytics 在匯出時自動安裝,整批安裝會失敗,連 onnx 都沒裝上。→ 步驟 1 匯出時有好幾分鐘沒有任何輸出,這是正常的 :不要以為當掉就中斷它;另外要先開全速,並釋放記憶體。→ 步驟 2、3 確認跑的真的是 TensorRT : server.py 找不到 engine 時,會默默改用 .pt 。所以這篇用只載入 engine 的 server01.py 。→ 步驟 4 步驟 1:安裝 ONNX 相關套件(匯出前先裝) pip3 install onnx onnxslim "numpy<2" pip3 install https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.23.0-cp310-cp310-linux_aarch64.whl onnxruntime-gpu 的 Jetson 版 wheel 取自 Ultralytics 官方 Jetson 指南 。安裝 onnx 時 numpy 可...

Jetson Orin Nano 開發環境:用 VS Code Remote-SSH 從 Windows 遠端寫程式

圖片
拿到 Jetson Orin Nano 之後,第一個問題通常不是 AI 模型,而是「程式要在哪裡寫?」直接在 Jetson 上接螢幕、鍵盤,桌面環境會吃掉不少記憶體,操作也不順;在 Windows 寫好再複製過去,來回傳檔又很麻煩,長程式碼貼進終端機還常被截斷。 比較好的做法是 VS Code Remote-SSH :程式碼和執行環境都留在 Jetson 上,你在 Windows 的 VS Code 裡編輯、開終端機、跑程式,用起來跟開本機資料夾幾乎一樣。Jetson 本身不用接螢幕,只要接上網路就好。 這篇從頭到尾走一次,做到 用 VS Code 透過 SSH 連上 Jetson、打開專案資料夾 為止。 本文環境 項目 內容 開發板 Jetson Orin Nano 8GB(官方 devkit 載板) Jetson 系統 JetPack 6.2(Ubuntu 22.04) 主控端 Windows 10/11,Visual Studio Code 網路 Jetson 與 Windows 電腦在同一個區域網路 文中的 IP、使用者名稱都是範例,請換成你自己的: 範例 代表 192.168.1.50 Jetson 的 IP 位址 jetson-user Jetson 的登入帳號 my_project 你的專案資料夾 運作方式 [ Windows 電腦 ] └── VS Code + Remote-SSH 擴充功能 │ 畫面、按鍵在本機 │ │ 區域網路(SSH,22 埠) ▼ [ Jetson Orin Nano ] └── VS Code Server(第一次連線時自動安裝) ├── 讀寫檔案 ├── 終端機 └── 執行、除錯程式 VS Code 第一次連線時,會自動在 Jetson 的家目錄裝一個小型伺服器( ~/.vscode-server )。之後你在 VS Code 開的檔案、終端機、執行的 Python, 全部都在 Jetson 上 ,所以會直接用到 Jetson 的 GPU、相機與系統套件。 步驟 1:Jetson 端準備 這一步需...

Jetson Orin Nano 實戰(一):CSI 相機+YOLOv8 即時物件偵測串流,一次就做對

圖片
把一台 Jetson Orin Nano 接上 CSI 相機,跑 YOLOv8 物件偵測,再用瀏覽器即時看畫面。聽起來很單純,實際動手時卻很容易卡關:相機抓不到、YOLO 慢得像幻燈片、套件裝完 OpenCV 就壞掉…… 這篇是我實際做完一輪後,整理出的 正確順序版 。照著做,可以避開常見的坑。完成後,在區域網路上任何一台電腦的瀏覽器,都能看到帶有偵測框的即時畫面: 推論約 17 ms、畫面約 30 FPS 。 下一篇〈實戰(二)〉會再用 TensorRT,把推論時間從 17 ms 降到 3.6 ms。 本文環境 項目 內容 開發板 Jetson Orin Nano 8GB(Super),官方 devkit 載板 系統 JetPack 6.2(L4T R36.4.x,CUDA 12.6,TensorRT 10.3),Python 3.10 相機 IMX219 CSI 相機(樹莓派 Camera V2 同款感光元件) 操作方式 從 Windows 透過 SSH/VS Code Remote-SSH 遠端操作(Jetson 不必接螢幕) 以下指令若沒有特別說明,都是在 Jetson 的終端機 執行。 先看重點:四個最容易走錯的地方 相機設定完沒有生效 :jetson-io 會新增一個開機項目,但 預設開機項目可能沒有跟著切換 。→ 步驟 1 不要用 pip 直接安裝 PyPI 上的 torch :通用版的 torch 跟 Jetson 的 CUDA 不相容,YOLO 會 默默改用 CPU ,速度慢 5 倍以上。→ 步驟 2 numpy 要維持 1.x、不要裝 opencv-python :Jetson 內建的 OpenCV 支援 GStreamer,CSI 相機全靠它;pip 版的 OpenCV 不支援 GStreamer,numpy 2 則會讓內建的 OpenCV 無法匯入。→ 步驟 3 程式碼不要直接貼進終端機 :長字串容易被截斷。請用 VS Code Remote-SSH 編輯,或用 scp 傳檔。→ 步驟 4 步驟 1:啟用 CSI 相機,並確認設定真的生效 1-1 用 jetson-io 設定相機 sudo /opt/nvidia/jetson-io/jetson-io....