CV / YOLOv5
YOLOv5n_seg
YOLOv5n-Seg Instantiesegmentatieserie lichtgewicht versie, compact en efficiënt, ontworpen voor objectsegmentatie op pixelniveau en maskervoorspelling, ideaal voor edge-deployment.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
sudo docker run --rm \
--name rk3588-yolov5n-seg \
--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-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.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/yolov5_seg/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov5_seg/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Modeldetails
Snel 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 preview via een "webbrowser". Het project kan met één commando worden gestart. Daarnaast wordt een Fast-API-interface geboden om gebruikers te helpen bij aangepaste ontwikkeling en testen.
Stap A: Pull Images
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolov5_seg:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolov5_seg:latestStap B: Start 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-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.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-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.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-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n-seg.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 instantiesegmentatie via het uploaden van afbeeldingen, video's of directe camera-aanroepen.
1. Modelinferentie-interface (Predict)
Endpoint: POST /api/models/yolov5_seg/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/yolov5_seg/predict" -F "file=@/home/cat/001.jpg"2. Detectie van specifiek videoframe:
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/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/yolov5_seg/predict" -F "realtime=true"
# Of zonder bestandsparameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/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 },
"polygons": [
[100, 200], [150, 210], [160, 300]
]
}
],
"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 en segmentatiemaskers, 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: Hoogwaardige Numpy-gebaseerde bounding box-decodering, NMS en contourextractie (
cv2.findContours).
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.