CV / YOLOv8
YOLOv8s_object
YOLOv8 Objectdetectieserie Small Versie, lichtgewicht maar met verbeterde detectienauwkeurigheid vergeleken met nano, ideaal voor snelle edge- en lichtgewicht deployment.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
sudo docker run --rm \
--name rk3588-yolov8s-objec \
--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/yolov8s.rknn --video video/test.mp4REST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov8n/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Modeldetails
reComputer RKSnel Starten
1. Installeer Docker
Voer de volgende commando's uit op het ontwikkelbord om Docker te installeren:
# 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 docker2. 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:
xhost +local:dockerStap B: Starten met één klik
Voor RK3588:
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.mp4Voor RK3576:
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.mp4Toegang 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_pathparameter toevoegen. Het programma gebruikt standaard COCO 80-klassen.
Voorbeeld:
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. Indientrueof als er geenfile/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:
curl -X POST "http://127.0.0.1:8000/api/models/yolov8/predict" -F "file=@/home/cat/001.jpg"2. Detectie van specifiek videoframe:
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:
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):
{
"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
- Plaats het getrainde en geconverteerde .rknn-model in de
model/map. - Voeg het
--model_path-argument toe aan het uitvoercommando om naar het nieuwe model te verwijzen.