CV / YOLOv8
YOLOv8n_pose
YOLOv8n_Pose Menselijke Keypoint-detectieserie lichtgewicht versie, compact en zeer efficiënt, op maat gemaakt voor real-time pose-estimatie en keypoint-detectietaken, perfect geschikt voor energiezuinige edge-deployment.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
sudo docker run --rm \
--name rk3588-yolov8n-pose \
--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_pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.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_obb/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov8_pose/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Modeldetails
Snelstart
1. Docker installeren
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. Het project uitvoeren (Een commando, webpreview)
Dit project ondersteunt preview via Webbrowser. Het programma biedt automatisch een webinterface voor realtime detectie of lokale video-analyse.
Stap A: Weergaverechten configureren (Optioneel)
Als u een monitor hebt aangesloten en het venster lokaal wilt zien:
xhost +local:dockerStap B: Uitvoeren met een klik
Voor RK3588:
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-yolov8_pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4Voor RK3576:
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/rk3576-yolov8_pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4Benaderen via: http://<Board_IP>:8000
Let op: Als u met een lokale video wilt testen in plaats van een camera, gebruik dan de
--videoparameter:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v $(pwd)/video:/app/video \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov8-pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4🔌 API-documentatie
Dit project biedt RESTful-interfaces die compatibel zijn met de Ultralytics Cloud API-standaard, en ondersteunt pose-detectie via afbeelding-, videouploads of directe camera-aanroepen.
1. Modelinferentie-interface (Predict)
Endpoint: POST /api/models/yolov8_pose/predict
Verzoekparameters (Multipart/Form-Data):
file: (Optioneel) Afbeeldingsbestand dat moet worden gedetecteerd.video: (Optioneel) MP4-videobestand dat moet worden gedetecteerd.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/videoparameters zijn 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_pose/predict" -F "file=@/home/cat/001.jpg"2. Detectie specifiek videoframe:
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. Huidig cameraframe detectie ophalen:
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict" -F "realtime=true"
# Of zonder bestandsparameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/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 },
"keypoints": [
{ "x": 150.5, "y": 210.2, "conf": 0.88 },
{ "x": 160.1, "y": 205.5, "conf": 0.91 },
{ "x": 140.2, "y": 206.1, "conf": 0.85 },
{ "x": 170.8, "y": 215.3, "conf": 0.89 },
{ "x": 130.4, "y": 218.7, "conf": 0.82 },
{ "x": 180.2, "y": 250.4, "conf": 0.95 },
{ "x": 120.5, "y": 255.1, "conf": 0.93 },
{ "x": 190.6, "y": 300.2, "conf": 0.87 },
{ "x": 110.3, "y": 305.8, "conf": 0.86 },
{ "x": 200.1, "y": 350.5, "conf": 0.81 },
{ "x": 100.9, "y": 355.2, "conf": 0.80 },
{ "x": 175.4, "y": 400.1, "conf": 0.90 },
{ "x": 125.6, "y": 405.3, "conf": 0.88 },
{ "x": 185.2, "y": 450.6, "conf": 0.85 },
{ "x": 115.8, "y": 455.4, "conf": 0.84 },
{ "x": 195.7, "y": 500.2, "conf": 0.79 },
{ "x": 105.3, "y": 505.7, "conf": 0.78 }
]
}
],
"image": { "width": 1280, "height": 720 }
}2. Lokale video-analyse
- Video uploaden:
POST /api/video/upload - Video's weergeven:
GET /api/video/list - Video analyseren:
POST /api/video/analyze - Status controleren:
GET /api/video/status - Resultaat downloaden:
GET /api/video/download/{filename}
3. Systeemconfiguratie-interface (Config)
Wordt gebruikt om drempels voor realtime videostreams en standaardinferentie dynamisch aan te passen.
Huidige configuratie ophalen
- Endpoint:
GET /api/config - Respons:
{"obj_thresh": 0.25, "nms_thresh": 0.45, "camera_id": 1, "video_path": null}
Systeemconfiguratie bijwerken
- Endpoint:
POST /api/config - Verzoekbody (JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - Respons:
{"status": "success"}
4. Realtime videostream-interface (Video Feed)
Ontvang realtime MJPEG-videostream met pose-skeletten ingetekend, 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:- Web API: Integreert FastAPI en ondersteunt MJPEG-streaminguitvoer, bestandsuploads en video-analyse.
- RKNN-inferentie: Omvat RKNN-initialisatie, modelladen en multi-core inferentielogica.
- Moduswisseling: Verwerkt dynamisch de UI-layout op basis van invoerparameters (
--camera_id,--video_path).
py_utils/pose_utils.py:- Nabewerking: YOLOv8-Pose specifieke Box-decodering, NMS-logica en Keypoint-extractie.
- Visualisatie: Tekent bounding boxes en pose-skeletten met aangepaste kleuren.
Modellen wijzigen
- Plaats het getrainde en geconverteerde .rknn-model in de
model/-directory. - Voeg het
--model_path-argument toe aan het uitvoercommando om naar het nieuwe model te verwijzen.