CV / YOLOv5

YOLOv5n_seg

YOLOv5n-Seg Instantiesegmentatieserie lichtgewicht versie, compact en efficiënt, ontworpen voor objectsegmentatie op pixelniveau en maskervoorspelling, ideaal voor edge-deployment.

330 downloads
Grootte
~5.4MB
Geheugen
1GB+
Precisie
INT8

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

Aan de slag

Implementeren
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.mp4

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

Curl
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"
Python
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:

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 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

bash
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:latest

Stap B: Start 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-yolov5_seg:latest \
    python3 web_detection.py --model_path model/yolov5n_seg.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-yolov5_seg:latest \
    python3 web_detection.py --model_path model/yolov5n_seg.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-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. 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/yolov5_seg/predict" -F "file=@/home/cat/001.jpg"

2. Detectie van specifiek videoframe:

bash
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:

bash
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):

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

  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.