CV / YOLO26
YOLO26
YOLO26 COCO物体検出。NVIDIA Jetsonではワンコマンドでデプロイ、reComputer Rシリーズ + Hailo-8 / Hailo-10HではHailo HEFで実行できます。
使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。
はじめる
sudo docker run --rm \
--name cm5-hailo8-yolo26n \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26n:latest \
python web_detection.py --model_path model/yolo26n.hef --video_path video/test.mp4REST API
REST API を使用して推論を実行します。以下のコマンドをコピーしてください。
curl -X POST "http://<Board_IP>:8000/api/models/yolo26n/predict" \
-F "file=@test.jpg"import requests
with open("test.jpg", "rb") as image_file:
response = requests.post(
"http://<Board_IP>:8000/api/models/yolo26n/predict",
files={"file": image_file},
timeout=30,
)
print(response.json())モデル詳細
reComputer R Series (CM5 + Hailo-8)YOLO26 on reComputer R Series (CM5 + Hailo-8)
YOLO26n / YOLO26s / YOLO26m は HailoRT 経由で Hailo-8 上で COCO 80 クラス物体検出を実行します。YOLO26 は one2one ヘッド(セルごとに 1 予測、アンカーなし、NMS なし)で、ホストが生の分割ヘッドをデコードして 2 段階 top-k で選択します。オンチップ HPP NMS を含むコンパイルにも対応し、初回推論で実際のレイアウトを出力します。
本ページは PCIe Hailo-8 アクセラレータを搭載した reComputer R Series (CM5 + Hailo-8) を対象とします。
ハードウェアとホスト設定
| 項目 | 値 |
|---|---|
| ボード | reComputer R Series(Raspberry Pi CM5 搭載) |
| アクセラレータ | PCIe 接続の Hailo-8(/dev/hailo0) |
| ランタイム | HailoRT 4.23.x |
| コンテナ内 Python | 3.11, aarch64 |
ホストに Hailo-8 パッケージをインストールし、コンテナ起動前にドライバーとデバイスを確認します:
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot
# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0これらのイメージに必要な HailoRT バージョンは 4.23.x です。
同梱デモ映像での実行
YOLO26n:
sudo docker run --rm \
--name cm5-hailo8-yolo26n \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26n:latest \
python web_detection.py --model_path model/yolo26n.hef --video_path video/test.mp4YOLO26s:
sudo docker run --rm \
--name cm5-hailo8-yolo26s \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26s:latest \
python web_detection.py --model_path model/yolo26s.hef --video_path video/test.mp4YOLO26m:
sudo docker run --rm \
--name cm5-hailo8-yolo26m \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26m:latest \
python web_detection.py --model_path model/yolo26m.hef --video_path video/test.mp4http://<Board_IP>:8000 を開くと Web プレビューが表示されます。
USB カメラモード
sudo docker run --rm \
--name cm5-hailo8-yolo26n \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
--device /dev/video0:/dev/video0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26n:latest \
python web_detection.py --model_path model/yolo26n.hef --camera_id 0別のバリアントを使う場合は yolo26n を yolo26s または yolo26m に置き換えます。
HEF ファイル
| モデル | サイズ | 備考 |
|---|---|---|
yolo26n.hef | 8,755,512 (8.3 MB) | パラメータ 2.4M、演算量 5.5G |
yolo26s.hef | 20,307,365 (19.4 MB) | パラメータ 9.5M、演算量 20.9G |
yolo26m.hef | 29,155,151 (27.8 MB) | パラメータ 20.4M、演算量 68.4G |
3 つのバリアントはいずれも同じ Ultralytics YOLO26 ファミリーの Hailo Model Zoo v2.19.0 Hailo-8 ビルドです。
Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.19.0/hailo8/yolo26n.hef (yolo26s.hef, yolo26m.hef in the same directory).
REST API
POST http://<Board_IP>:8000/api/models/yolo26n/predictcurl -X POST "http://<Board_IP>:8000/api/models/yolo26n/predict" \
-F "file=@test.jpg"| エンドポイント | メソッド | 用途 |
|---|---|---|
/ | GET | Web プレビュー UI |
/api/models/yolo26{n,s,m}/predict | POST | 検出結果(JSON) |
/api/video_feed | GET | MJPEG プレビュー配信 |
実装メモ
- Model Zoo
base/yolo26.yamlはnms=false、sigmoid=false、hpp=false、meta_arch=yolo26を使用し、post_nms_topk=300をbase/yolov8.yamlから継承します。info.output_shapeは 3 ストライド ×(4 チャンネルのボックス、80 チャンネルのクラス)です。 - one2one 選択:NMS は一切実行しません。ホストは sigmoid を適用し、最大クラススコアで top-k アンカーを選び、次に top-k の (アンカー, クラス) ペアを選び(1 アンカーに複数クラスを許可)、confidence スライダーで絞り込みます。
- ボックスデコード:4 チャンネルヘッドはセル中心から左/上・右/下までの距離(stride 単位、
regression_length=1)を与えます。64 チャンネルの DFL コンパイルは softmax 期待値でデコードします。 - コンパイルが代わりにオンチップ HPP NMS を返す場合(yolo26-seg の HEF が該当)は post-NMS テンソル(クラスごとのコンパクトバッファ、
Cx5xD/CxDx5、ragged NMS-by-score リスト)を解析し、ホスト側の選択は行いません。 - HEF には
normalize_in_net(mean 0 / std 255)とpadding_color=114が内蔵されています。アプリはグレー(114)でレターボックスし、uint8 RGB をそのまま入力します。 - クラス ID 0..79 は標準の COCO クラス表を直接索引します。
- 初回推論でレイアウトとボックス/スコア範囲を出力します(
[YOLO26] layout=..., outputs=[...])。
開発メモ
- ソースモジュール:該当リポジトリの
src/hailo10h_yolo26{n,s,m}/(Hailo-10H)またはsrc/rpi5_hailo8_yolo26{n,s,m}/(Hailo-8) - イメージ:
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26{n,s,m}:latest - 検出シリーズは n/s/m を提供します。YOLO26l / YOLO26x の Hailo HEF はまだありません。
- モデルライセンス:AGPL-3.0(上流 ultralytics/ultralytics)。
入力と出力
入力:画像・映像・カメラ。出力:COCO 80クラスの検出ボックス(JetsonはUltralyticsコンテナ、RシリーズはHailo HEF)。