CV / YOLOv8

YOLOv8

reComputer RK3588

Lichtgewicht YOLOv8 nano model voor snelle edge-deployment.

528 downloads
Grootte
~4.3MB
Geheugen
1GB+
Precisie
INT8

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Implementeren
sudo docker run --rm \
  --name rk3588-yolov8n-object \
  --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-yolov8:latest \
  python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4

Officiële benchmarks

Deze cijfers komen uit de officiële benchmarks van Rockchip. De prestaties in je toepassing kunnen afwijken.

yolov8n

reComputer RK3588 · 640x640 · W8A8

FPS met één kern
75.01
Latentie met één kern (ms)
13.33
FPS met meerdere kernen
205.89
Geheugen (MB)
19.95

Modeldetails

reComputer RK

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Snel Starten

1. Installeer Docker

Voer de volgende commando's uit op het ontwikkelbord om Docker te installeren:

bash
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh
# Install using Aliyun mirror source
sudo sh get-docker.sh --mirror Aliyun
# Start Docker and enable auto-start on boot
sudo systemctl enable docker
sudo systemctl start docker

2. Start het Project (Eén commando, dual-mode preview)

Dit project ondersteunt gelijktijdige preview via Lokale GUI en Webbrowser. Het programma detecteert automatisch de weergaveomgeving en schakelt terug naar Webmodus als er geen beeldscherm is aangesloten.

Stap A: Configureer Weergaverechten (Optioneel)

Als je een monitor hebt aangesloten en het venster lokaal wilt zien:

bash
xhost +local:docker

Stap B: Starten met één klik

Voor RK3588:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    --device /dev/video0:/dev/video0 \
    --device /dev/dri/renderD128:/dev/dri/renderD128 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8:latest \
    python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4

Voor RK3576:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    --device /dev/video0:/dev/video0 \
    --device /dev/dri/renderD128:/dev/dri/renderD128 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov8:latest \
    python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4

Toegang via: http://<Board_IP>:8000

Let op: Als je aangepaste klassen nodig hebt, kun je de -v $(pwd)/class_config.txt:/app/class_config.txt \ mount en de --class_path parameter toevoegen. Het programma gebruikt standaard COCO 80-klassen.

Voorbeeld:

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/video0:/dev/video0 \
    --device /dev/dri/renderD128:/dev/dri/renderD128 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible \
    ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8:latest \
    python3 web_detection.py --model_path model/yolov8n.rknn --video video/test.mp4 --class_path class_config.txt

🔌 API Documentatie

Dit project biedt RESTful-interfaces die compatibel zijn met de Ultralytics Cloud API-standaard, ter ondersteuning van objectdetectie via het uploaden van afbeeldingen, video's of directe camera-aanroepen.

1. Modelinferentie-interface (Predict)

Endpoint: POST /api/models/yolov8/predict

Verzoekparameters (Multipart/Form-Data):

  • file: (Optioneel) Afbeeldingsbestand dat gedetecteerd moet worden.
  • video: (Optioneel) MP4-videobestand dat gedetecteerd moet worden.
  • timestamp: (Optioneel) Tijdstempel in het videobestand (seconden), retourneert detectieresultaten voor het frame op dat punt. Standaard is 0.
  • realtime: (Optioneel) Boolean. Indien true of als er geen file/video-parameters worden opgegeven, retourneert detectieresultaten voor het huidige cameraframe.
  • conf: (Optioneel) Betrouwbaarheidsdrempel voor een enkel verzoek, bereik 0.0-1.0.
  • iou: (Optioneel) NMS IOU-drempel voor een enkel verzoek, bereik 0.0-1.0.

Gebruiksvoorbeelden:

1. Afbeeldingsdetectie:

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

2. Detectie van specifiek videoframe:

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

3. Huidig cameraframe detecteren:

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov8/predict" -F "realtime=true"
# Of zonder bestandsparameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8/predict"

Responsformaat (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. Systeemconfiguratie-interface (Config)

Wordt gebruikt om drempels voor real-time videostreams en standaardinferentie dynamisch aan te passen.

Huidige Configuratie Ophalen

  • Endpoint: GET /api/config
  • Response: {"obj_thresh": 0.25, "nms_thresh": 0.45}

Systeemconfiguratie Bijwerken

  • Endpoint: POST /api/config
  • Request Body (JSON): {"obj_thresh": 0.3, "nms_thresh": 0.5}
  • Response: {"status": "success"}

3. Real-time Videostream-interface (Video Feed)

Verkrijg real-time MJPEG-videostream met getekende detectiekaders, kan direct worden ingesloten in HTML <img>-tags.

  • Endpoint: GET /api/video_feed
  • Gebruiksvoorbeeld: <img src="http://<Board_IP>:8000/api/video_feed">

🛠️ Ontwikkelaarsgids (Productie-aanbevelingen)

Codebeschrijving

  • web_detection.py:
    • Dual-mode ondersteuning: Integreert FastAPI, ter ondersteuning van zowel lokale rendering als MJPEG-streaminguitvoer.
    • Omgevingsadaptief: Detecteert automatisch de DISPLAY-omgevingsvariabele en slaat GUI-initialisatie stil over indien niet aanwezig.
    • RKNN Inferentie: Kapselt RKNN-initialisatie, modelladen en multi-core inferentielogica in.
    • Dynamisch laden: Ondersteunt dynamisch laden van klassenconfiguratie via --class_path.
    • Post-processing: YOLOv8-specifieke Box-decodering en NMS-logica.

Modellen Wijzigen

  1. Plaats het getrainde en geconverteerde .rknn-model in de model/ map.
  2. Voeg het --model_path-argument toe aan het uitvoercommando om naar het nieuwe model te verwijzen.