CV / YOLO11

YOLOv11-obb

YOLOv11n/s/m/x-OBB: orientierte Objekterkennung mit rotierten Boxen (DOTA v1, 15 Klassen) für reComputer R Series mit Hailo-10H.

1 Downloads
Größe
6.57 MB
Speicher
4GB+
Präzision
INT8 / Hailo HEF

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Bereitstellen
sudo docker run --rm \
  --name cm5-hailo10h-yolov11n_obb \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11n_obb:latest \
  python web_detection.py --model_path model/yolov11n_obb.hef --video_path video/test.mp4

Modelldetails

YOLOv11-obb on reComputer R Series (CM5 + Hailo-10H)

YOLOv11n / YOLOv11s / YOLOv11m / YOLOv11x-OBB führen orientierte Objekterkennung (rotierte Boxen, DOTA v1, 15 Klassen) auf Hailo-10H über HailoRT aus. Das kompilierte HEF hat kein On-Chip-NMS: es gibt neun rohe Heads aus, und der Host dekodiert sie und führt das rotierte probabilistische IoU-NMS aus — dieselbe Dekodierung, die das Hailo Model Zoo für seine veröffentlichten DOTA-mAP-Werte verwendet.

Diese Seite richtet sich an reComputer R Series (CM5 + Hailo-10H) mit einem PCIe-Hailo-10H-Beschleuniger.

Hardware und Host-Setup

ElementWert
BoardreComputer R Series mit Raspberry Pi CM5
BeschleunigerHailo-10H über PCIe, verfügbar als /dev/hailo0
RuntimeHailoRT 5.1.1
Python im Container3.13, aarch64

Installieren Sie die Hailo-10H-Pakete auf dem Host und prüfen Sie Treiber und Gerät, bevor Sie den Container starten:

bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

Die erwartete HailoRT-Version für diese Images ist 5.1.1.

Ausführung mit dem Demo-Video

YOLOv11n_obb:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov11n_obb \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11n_obb:latest \
  python web_detection.py --model_path model/yolov11n_obb.hef --video_path video/test.mp4

YOLOv11s_obb:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov11s_obb \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11s_obb:latest \
  python web_detection.py --model_path model/yolov11s_obb.hef --video_path video/test.mp4

YOLOv11m_obb:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov11m_obb \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11m_obb:latest \
  python web_detection.py --model_path model/yolov11m_obb.hef --video_path video/test.mp4

YOLOv11x_obb:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov11x_obb \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11x_obb:latest \
  python web_detection.py --model_path model/yolov11x_obb.hef --video_path video/test.mp4

Öffnen Sie http://<Board_IP>:8000 für die Webvorschau.

Der mitgelieferte Demo-Clip ist ein kurzer Luftbild-/Drohnen-Ausschnitt, daher erkennt das mit DOTA trainierte Modell Fahrzeuge und andere Luftobjekte direkt und die rotierten Boxen erscheinen in der Vorschau; Klassen des Drohnen-Datensatzes, die nicht zu DOTA gehören (z. B. Fußgänger), werden nicht gemeldet.

USB-Kameramodus

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov11n_obb \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  --device /dev/video0:/dev/video0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11n_obb:latest \
  python web_detection.py --model_path model/yolov11n_obb.hef --camera_id 0

Ersetzen Sie yolov11n_obb durch yolov11s_obb, yolov11m_obb oder yolov11x_obb für eine andere Variante.

HEF-Dateien

ModellGrößeHinweise
yolov11n_obb.hef6,893,568 (6.57 MB)Parameter 3.80M, Ops 17.25G, Hardware-mAP 48.4, 166 FPS
yolov11s_obb.hef17,088,512 (16.3 MB)Parameter 12.6M, Ops 57.94G, Hardware-mAP 52.3, 76.5 FPS
yolov11m_obb.hef30,142,464 (28.75 MB)Parameter 33.99M, Ops 183.59G, Hardware-mAP 54.1, 29.5 FPS
yolov11x_obb.hef64,696,320 (61.7 MB)Parameter 60.08M, Ops 521.61G, Hardware-mAP 56.0, 8.54 FPS

Alle vier Varianten sind Hailo-10H-Builds aus Hailo Model Zoo v5.4.0 derselben YOLOv11-OBB-Familie von THU-MIG / ultralytics (DOTA v1). mAP und FPS sind die vom Model Zoo veröffentlichten Hailo-10H-Werte.

Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v5.4.0/hailo10h/yolov11n_obb.hef (yolov11s_obb.hef, yolov11m_obb.hef, yolov11x_obb.hef in the same directory).

REST API

text
POST http://<Board_IP>:8000/api/models/yolov11n_obb/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov11n_obb/predict" \
  -F "file=@aerial.jpg" -F "conf=0.25" -F "iou=0.7"

Jede Vorhersage liefert die Klasse, die Konfidenz und die rotierte Box:

json
{
  "predictions": [
    {
      "class": "ship",
      "confidence": 0.94,
      "obb": {"x_center": 450.0, "y_center": 320.0, "width": 180.0, "height": 420.0, "angle": 35.2}
    }
  ]
}

angle ist in Grad (gegen den Uhrzeigersinn von +x, Bereich [-45, 135)).

EndpunktMethodeZweck
/GETWeb-Vorschau-Oberfläche
/api/models/yolov11{n,s,m,x}_obb/predictPOSTRotierte Detektionen (JSON)
/api/video_feedGETMJPEG-Vorschaustream

Implementierungshinweise

  • Das Model Zoo base/yolo_obb.yaml setzt device_pre_post_layers.sigmoid: false, meta_arch: yobb und score_threshold: 0.01, ohne hpp und ohne On-Chip-NMS; anchors verwendet scale_factors [0.5, 0.5], regression_length 15 (16 DFL-Bins) und strides [8, 16, 32], und die Evaluierung ist DOTA v1 mit 15 Klassen.
  • Head-Layout: neun rohe Tensoren, identifiziert über die Kanalanzahl (64-Kanal-DFL-Box / 15-Kanal-Klasse / 1-Kanal-Winkel) und je Stride gepaart (128x128, 64x64, 32x32).
  • Winkel: theta = (sigmoid(a) - 0.25) * pi (Bereich [-pi/4, 3pi/4)), genau wie im YoloOBBPostProc des Model Zoo und im OBB-Head von ultralytics.
  • Boxen: Der DFL-Softmax-Erwartungswert über die 16 Bins liefert die l/t/r/b-Abstände in Stride-Einheiten; w = l + r, h = t + b, das Zentrum ist der Anker plus der rotierte Halbachsen-Offset, und die Abstände werden mit dem Stride skaliert.
  • Auswahl: beste Klasse pro Anker oberhalb des Konfidenzreglers, dann Fast-NMS mit probabilistischem IoU und Klassen-Offset (max_wh 7680, höchstens 30000 Kandidaten hinein und 300 Boxen heraus); die Konfidenz- und IOU-Regler sind beide aktiv, weil das NMS auf dem Host läuft.
  • Das HEF enthält normalize_in_net (mean 0 / std 255) und padding_color=114: die Anwendung letterboxt mit Grau (114) auf 1024x1024 und übergibt rohe uint8-RGB-Pixel — keine manuelle Normalisierung.
  • Klassen-IDs 0..14 indizieren die DOTA-v1-Liste (plane, ship, storage-tank, baseball-diamond, ...) wie in der dotav1_names.json des Model Zoo.
  • Die Diagnose der ersten Inferenz ist in der Produktion deaktiviert (_DET_OUTPUT_LOGGED = True); setzen Sie sie in web_detection.py auf False, um beim Validieren eines neuen HEF das Head-Layout, die Wertebereiche und die dekodierte Winkelspanne auszugeben.

Entwicklungshinweise

  • Quellmodule: src/hailo10h_yolov11{n,s,m,x}_obb/ im Repository reComputer-Hailo10H-CV
  • Container: ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11{n,s,m,x}_obb:latest
  • Hailo-8 hat keinen offiziellen OBB-Build (das Model Zoo listet Hailo-8/Hailo-8L für orientierte Objekterkennung als NA); yolov11l_obb zielt nur auf Hailo-15L.
  • Modelllizenz: AGPL-3.0 (Upstream ultralytics/ultralytics).

Eingaben und Ausgaben

Eingabe: Bild, Video oder USB-Kameraframe. Ausgabe: rotierte Boxen (x_center, y_center, width, height, angle), DOTA-Klassen, Konfidenzen und annotierte MJPEG-Vorschau.