CV / YOLO11

YOLO11

YOLO11 Objekterkennungsserie Nano-Version, leichtgewichtig und effizient, geeignet für Edge-Bereitstellung.

753 Downloads
Größe
~5MB
Speicher
1GB+
Präzision
FP16

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

Vorschau

Erste Schritte

Bereitstellen
sudo docker run --rm \
  --name rk3588-yolo11n \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  -e RKNN_LOG_LEVEL=0 \
  --device /dev/video1:/dev/video1 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolo11:latest \
  python web_detection.py --model_path model/yolo11n.rknn --video video/test.mp4

Modelldetails

reComputer RK

Schnellstart

1. Docker installieren

Fuehren Sie die folgenden Befehle auf dem Entwicklungsboard aus, um Docker zu installieren:

bash
# Installationsskript herunterladen
curl -fsSL https://get.docker.com -o get-docker.sh
# Mit Aliyun-Mirror-Source installieren
sudo sh get-docker.sh --mirror Aliyun
# Docker starten und Autostart beim Booten aktivieren
sudo systemctl enable docker
sudo systemctl start docker

2. Projekt ausfuehren (Ein Befehl, Dual-Mode-Vorschau)

Dieses Projekt unterstuetzt die Vorschau ueber einen "Webbrowser". Das Projekt kann mit einem einzigen Befehl ausgefuehrt werden. Zusaetzlich wird eine Fast-API-Schnittstelle bereitgestellt, um die individuelle Entwicklung und das Testen der Benutzer zu erleichtern.

Schritt A: Images pullen

bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolo:latest

Schritt B: Mit einem Klick ausfuehren

Fuer RK3588:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    --device /dev/video1:/dev/video1 \
    --device /dev/dri/renderD129:/dev/dri/renderD129 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo11:latest \
    python web_detection.py --model_path model/yolo11n.rknn --camera_id 1

Fuer RK3576:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    --device /dev/video1:/dev/video1 \
    --device /dev/dri/renderD128:/dev/dri/renderD128 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolo11:latest \
    python web_detection.py --model_path model/yolo11n.rknn --camera_id 1

Zugriff ueber: http://<Board_IP>:8000

Hinweis: Wenn Sie benutzerdefinierte Klassen benoetigen, koennen Sie -v $(pwd)/class_config.txt:/app/class_config.txt \ Mount und den --class_path Parameter hinzufuegen. Das Programm verwendet standardmaessig COCO 80 Klassen.

Beispiel:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    -v $(pwd)/class_config.txt:/app/class_config.txt \
    --device /dev/video1:/dev/video1 \
    --device /dev/dri/renderD129:/dev/dri/renderD129 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo:latest \
    python web_detection.py --model_path model/yolo11n.rknn --camera_id 1 --class_path class_config.txt

🔌 API-Dokumentation

Dieses Projekt bietet RESTful-Schnittstellen, die mit dem Ultralytics Cloud API-Standard kompatibel sind und Objekterkennung ueber Bild-Uploads mittels HTTP POST-Anfragen unterstuetzen.

1. Modellinferenzschnittstelle (Predict)

Endpunkt: POST /api/models/yolo11/predict

Anfrageparameter (Multipart/Form-Data):

  • file: (Optional) Zu erkennende Bilddatei.
  • video: (Optional) Zu erkennende MP4-Videodatei.
  • timestamp: (Optional) Zeitstempel in der Videodatei (Sekunden), gibt Erkennungsergebnisse fuer den Frame zu diesem Zeitpunkt zurueck. Standard ist 0.
  • realtime: (Optional) Boolean. Wenn true oder wenn keine file/video-Parameter angegeben sind, werden Erkennungsergebnisse fuer den aktuellen Kameraframe zurueckgegeben.
  • conf: (Optional) Konfidenzschwellenwert fuer eine einzelne Anfrage, Bereich 0,0-1,0.
  • iou: (Optional) NMS-IOU-Schwellenwert fuer eine einzelne Anfrage, Bereich 0,0-1,0.

Verwendungsbeispiele:

1. Bilderkennung:

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "file=@/home/cat/001.jpg"

2. Erkennung eines bestimmten Videoframes:

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"

3. Aktuellen Kameraframe erkennen:

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "realtime=true"
# Oder ohne Dateiparameter
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict"

Antwortformat (JSON):

json
{
  "success": true,
  "source": "video frame at 5.5s",
  "predictions": [
    {
      "class": "person",
      "confidence": 0.92,
      "box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 }
    }
  ],
  "image": { "width": 1280, "height": 720 }
}

2. Systemkonfigurationsschnittstelle (Config)

Wird verwendet, um Schwellenwerte fuer Echtzeit-Videostreams und Standardinferenz dynamisch anzupassen.

Aktuelle Konfiguration abrufen

  • Endpunkt: GET /api/config
  • Antwort: {"obj_thresh": 0.25, "nms_thresh": 0.45}

Systemkonfiguration aktualisieren

  • Endpunkt: POST /api/config
  • Anfrage-Body (JSON): {"obj_thresh": 0.3, "nms_thresh": 0.5}
  • Antwort: {"status": "success"}

3. Befehlszeilenargumente

web_detection.py unterstuetzt die folgenden Argumente:

ArgumentBeschreibungStandard
--model_pathPfad zur RKNN-Modelldatei(Erforderlich)
--camera_idKamera-Geraete-ID (z. B. 1 fuer /dev/video1)1
--video_pathPfad zur Videodatei (ueberschreibt camera_id, falls angegeben)None
--class_pathPfad zur benutzerdefinierten Klassenkonfigurationsdatei (class_config.txt)None (Standard COCO 80)
--hostWebserver-Abhøradresse0.0.0.0
--portWebserver-Port8000

Benutzerdefiniertes Klassenkonfigurationsformat (class_config.txt):

Klassen mit doppelten Anführungszeichen benennen, durch Kommas getrennt, zum Beispiel: "person", "bicycle", "car", "motorbike"


Echtzeit-Videostream-Schnittstelle (Video Feed)

Echtzeit-MJPEG-Videostream mit eingezeichneten Erkennungsboxen abrufen, kann direkt in HTML <img>-Tags eingebettet werden.

  • Endpunkt: GET /api/video_feed
  • Verwendungsbeispiel: <img src="http://<Board_IP>:8000/api/video_feed">