CV / YOLOv8

YOLOv8m_seg

YOLOv8m_Seg Instanzsegmentierungsserie Standardversion, leichtgewichtig und effizient, entwickelt für pixelgenaue Segmentierung und Maskenvorhersage mit präziser regionaler Partitionierung, ideal für Edge-Bereitstellung.

264 Downloads
Größe
~35MB
Speicher
1GB+
Präzision
INT8

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Deploy
sudo docker run --rm \
  --name rk3588-yolov8m-seg \
  --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_seg:latest \
  python web_detection.py --model_path model/yolov8m_seg.rknn --video video/test.mp4

REST API

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

Curl
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_seg/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_seg/predict"
Python
import requests
import json
resp = requests.post(
    "http://127.0.0.1:8000/api/models/yolov8_seg/predict",
    json={},
    timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))

Modelldetails

Schnellstart

1. Docker installieren

Fuehren Sie die folgenden Befehle auf dem Entwicklungsboard aus, um Docker zu installieren:

bash
# Installationsskript herunterladen
curl -fsSL https://get.docker.com -o get-docker.sh
# Mit Aliyun-Mirror-Source installieren
sudo sh get-docker.sh --mirror Aliyun
# Docker starten und Autostart beim Booten aktivieren
sudo systemctl enable docker
sudo systemctl start docker

2. Projekt ausfuehren (Ein Befehl, Dual-Mode-Vorschau)

Dieses Projekt unterstuetzt die gleichzeitige Vorschau ueber Lokale GUI und Web-Browser. Das Programm erkennt automatisch die Anzeigeumgebung und wechselt in den Web-Modus, wenn kein Display angeschlossen ist.

Schritt A: Anzeigeberechtigungen konfigurieren (Optional)

Wenn Sie einen Monitor angeschlossen haben und das Fenster lokal sehen moechten:

bash
xhost +local:docker

Schritt B: Mit einem Klick ausfuehren

Fuer 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_seg:latest \
    python3 web_detection.py --model_path model/yolov8n_seg.rknn --video video/test.mp4

Fuer 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_seg:latest \
    python3 web_detection.py --model_path model/yolov8n_seg.rknn --video video/test.mp4

Zugriff ueber: http://<Board_IP>:8000

Hinweis: Wenn Sie benutzerdefinierte Klassen benoetigen, koennen Sie -v $(pwd)/class_config.txt:/app/class_config.txt \ Mount und den --class_path Parameter hinzufuegen. Das Programm verwendet standardmaessig COCO 80 Klassen.

Beispiel:

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/rk3576-yolov8_seg:latest \
    python3 web_detection.py --model_path model/yolov8n-seg.rknn --video video/test.mp4 --class_path class_config.txt

Hinweis: Wenn Sie mit einem lokalen Video anstelle einer Kamera testen moechten, verwenden Sie den --video_path-Parameter:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    -v $(pwd)/video:/app/video \
    --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_seg:latest \
    python3 web_detection.py --model_path model/yolov8n-seg.rknn --video_path video/test.mp4

🔌 API-Dokumentation

Dieses Projekt bietet RESTful-Schnittstellen, die mit dem Ultralytics Cloud API-Standard kompatibel sind und Instanzsegmentierung ueber Bild-, Video-Uploads oder direkte Kameraaufrufe unterstuetzen.

1. Modellinferenzschnittstelle (Predict)

Endpunkt: POST /api/models/yolov8_seg/predict (oder /api/models/yolo11/predict abhaengig vom genauen Skript-Mapping)

Anfrageparameter (Multipart/Form-Data):

  • file: (Optional) Zu erkennende Bilddatei.
  • video: (Optional) Zu erkennende MP4-Videodatei.
  • timestamp: (Optional) Zeitstempel in der Videodatei (Sekunden), gibt Erkennungsergebnisse fuer den Frame zu diesem Zeitpunkt zurueck. Standard ist 0.
  • realtime: (Optional) Boolean. Wenn true oder wenn keine file/video-Parameter angegeben sind, werden Erkennungsergebnisse fuer den aktuellen Kameraframe zurueckgegeben.
  • conf: (Optional) Konfidenzschwellenwert fuer eine einzelne Anfrage, Bereich 0,0-1,0.
  • iou: (Optional) NMS-IOU-Schwellenwert fuer eine einzelne Anfrage, Bereich 0,0-1,0.

Verwendungsbeispiele:

1. Bilderkennung:

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

2. Erkennung eines bestimmten Videoframes:

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

3. Aktuellen Kameraframe erkennen:

bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_seg/predict" -F "realtime=true"

Antwortformat (JSON):

json
{
  "success": true,
  "source": "realtime camera frame",
  "predictions": [
    {
      "class": "cup",
      "confidence": 0.9840346574783325,
      "box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 },
      "polygons": [
        [{"x":558.0,"y":336.0},{"x":558.0,"y":767.0},{"x":560.0,"y":767.0},{"x":561.0,"y":768.0},{"x":561.0,"y":773.0},{"x":563.0,"y":773.0},{"x":564.0,"y":774.0},{"x":564.0,"y":782.0},{"x":566.0,"y":782.0},{"x":567.0,"y":783.0},{"x":567.0,"y":788.0},{"x":569.0,"y":788.0},{"x":570.0,"y":789.0},{"x":570.0,"y":791.0},{"x":572.0,"y":791.0},{"x":573.0,"y":792.0},{"x":573.0,"y":794.0},{"x":575.0,"y":794.0},{"x":576.0,"y":795.0},{"x":576.0,"y":806.0},{"x":578.0,"y":806.0},{"x":579.0,"y":807.0},{"x":579.0,"y":815.0},{"x":581.0,"y":815.0},{"x":582.0,"y":816.0},{"x":582.0,"y":824.0},{"x":584.0,"y":824.0},{"x":585.0,"y":825.0},{"x":585.0,"y":839.0},{"x":587.0,"y":839.0},{"x":588.0,"y":840.0},{"x":588.0,"y":854.0},{"x":590.0,"y":854.0},{"x":591.0,"y":855.0},{"x":591.0,"y":866.0},{"x":593.0,"y":866.0},{"x":594.0,"y":867.0},{"x":594.0,"y":875.0},{"x":596.0,"y":875.0},{"x":597.0,"y":876.0},{"x":597.0,"y":884.0},{"x":599.0,"y":884.0},{"x":600.0,"y":885.0},{"x":600.0,"y":893.0},{"x":602.0,"y":893.0},{"x":603.0,"y":894.0},{"x":603.0,"y":899.0},{"x":605.0,"y":899.0},{"x":606.0,"y":900.0},{"x":606.0,"y":902.0},{"x":608.0,"y":902.0},{"x":609.0,"y":903.0},{"x":609.0,"y":905.0},{"x":611.0,"y":905.0},{"x":612.0,"y":906.0},{"x":612.0,"y":908.0},{"x":614.0,"y":908.0},{"x":615.0,"y":909.0},{"x":615.0,"y":911.0},{"x":620.0,"y":911.0},{"x":621.0,"y":912.0},{"x":621.0,"y":917.0},{"x":623.0,"y":917.0},{"x":624.0,"y":918.0},{"x":624.0,"y":920.0},{"x":626.0,"y":920.0},{"x":627.0,"y":921.0},{"x":627.0,"y":923.0},{"x":629.0,"y":923.0},{"x":630.0,"y":924.0},{"x":630.0,"y":926.0},{"x":632.0,"y":926.0},{"x":633.0,"y":927.0},{"x":633.0,"y":929.0},{"x":635.0,"y":929.0},{"x":636.0,"y":930.0},{"x":636.0,"y":932.0},{"x":641.0,"y":932.0},{"x":642.0,"y":933.0},{"x":642.0,"y":935.0},{"x":644.0,"y":935.0},{"x":645.0,"y":936.0},{"x":645.0,"y":938.0},{"x":650.0,"y":938.0},{"x":651.0,"y":939.0},{"x":651.0,"y":944.0},{"x":656.0,"y":944.0},{"x":657.0,"y":945.0},{"x":657.0,"y":947.0},{"x":662.0,"y":947.0},{"x":663.0,"y":948.0},{"x":663.0,"y":950.0},{"x":665.0,"y":950.0},{"x":666.0,"y":951.0},{"x":666.0,"y":953.0},{"x":671.0,"y":953.0},{"x":672.0,"y":954.0},{"x":672.0,"y":956.0},{"x":677.0,"y":956.0},{"x":678.0,"y":957.0},{"x":678.0,"y":959.0},{"x":686.0,"y":959.0},{"x":687.0,"y":960.0},{"x":687.0,"y":962.0},{"x":695.0,"y":962.0},{"x":696.0,"y":963.0},{"x":696.0,"y":965.0},{"x":701.0,"y":965.0},{"x":702.0,"y":966.0},{"x":702.0,"y":968.0},{"x":713.0,"y":968.0},{"x":714.0,"y":969.0},{"x":714.0,"y":971.0},{"x":869.0,"y":971.0},{"x":869.0,"y":969.0},{"x":870.0,"y":968.0},{"x":884.0,"y":968.0},{"x":884.0,"y":966.0},{"x":885.0,"y":965.0},{"x":893.0,"y":965.0},{"x":893.0,"y":963.0},{"x":894.0,"y":962.0},{"x":899.0,"y":962.0},{"x":899.0,"y":960.0},{"x":900.0,"y":959.0},{"x":911.0,"y":959.0},{"x":911.0,"y":957.0},{"x":912.0,"y":956.0},{"x":917.0,"y":956.0},{"x":917.0,"y":954.0},{"x":918.0,"y":953.0},{"x":923.0,"y":953.0},{"x":923.0,"y":951.0},{"x":924.0,"y":950.0},{"x":929.0,"y":950.0},{"x":929.0,"y":948.0},{"x":930.0,"y":947.0},{"x":935.0,"y":947.0},{"x":935.0,"y":945.0},{"x":936.0,"y":944.0},{"x":941.0,"y":944.0},{"x":941.0,"y":942.0},{"x":942.0,"y":941.0},{"x":947.0,"y":941.0},{"x":947.0,"y":939.0},{"x":948.0,"y":938.0},{"x":953.0,"y":938.0},{"x":953.0,"y":936.0},{"x":954.0,"y":935.0},{"x":962.0,"y":935.0},{"x":962.0,"y":933.0},{"x":963.0,"y":932.0},{"x":968.0,"y":932.0},{"x":968.0,"y":930.0},{"x":969.0,"y":929.0},{"x":971.0,"y":929.0},{"x":971.0,"y":927.0},{"x":972.0,"y":926.0},{"x":977.0,"y":926.0},{"x":977.0,"y":924.0},{"x":978.0,"y":923.0},{"x":983.0,"y":923.0},{"x":983.0,"y":921.0},{"x":984.0,"y":920.0},{"x":989.0,"y":920.0},{"x":989.0,"y":918.0},{"x":990.0,"y":917.0},{"x":992.0,"y":917.0},{"x":992.0,"y":915.0},{"x":993.0,"y":914.0},{"x":998.0,"y":914.0},{"x":998.0,"y":912.0},{"x":999.0,"y":911.0},{"x":1004.0,"y":911.0},{"x":1004.0,"y":909.0},{"x":1005.0,"y":908.0},{"x":1007.0,"y":908.0},{"x":1007.0,"y":906.0},{"x":1008.0,"y":905.0},{"x":1010.0,"y":905.0},{"x":1010.0,"y":903.0},{"x":1011.0,"y":902.0},{"x":1013.0,"y":902.0},{"x":1013.0,"y":900.0},{"x":1014.0,"y":899.0},{"x":1019.0,"y":899.0},{"x":1019.0,"y":897.0},{"x":1020.0,"y":896.0},{"x":1022.0,"y":896.0},{"x":1022.0,"y":894.0},{"x":1023.0,"y":893.0},{"x":1025.0,"y":893.0},{"x":1025.0,"y":891.0},{"x":1026.0,"y":890.0},{"x":1028.0,"y":890.0},{"x":1028.0,"y":888.0},{"x":1029.0,"y":887.0},{"x":1031.0,"y":887.0},{"x":1031.0,"y":885.0},{"x":1032.0,"y":884.0},{"x":1034.0,"y":884.0},{"x":1034.0,"y":882.0},{"x":1035.0,"y":881.0},{"x":1037.0,"y":881.0},{"x":1037.0,"y":879.0},{"x":1038.0,"y":878.0},{"x":1040.0,"y":878.0},{"x":1040.0,"y":876.0},{"x":1041.0,"y":875.0},{"x":1043.0,"y":875.0},{"x":1043.0,"y":873.0},{"x":1044.0,"y":872.0},{"x":1046.0,"y":872.0},{"x":1046.0,"y":867.0},{"x":1047.0,"y":866.0},{"x":1049.0,"y":866.0},{"x":1049.0,"y":864.0},{"x":1050.0,"y":863.0},{"x":1052.0,"y":863.0},{"x":1052.0,"y":861.0},{"x":1053.0,"y":860.0},{"x":1055.0,"y":860.0},{"x":1055.0,"y":858.0},{"x":1056.0,"y":857.0},{"x":1058.0,"y":857.0},{"x":1058.0,"y":852.0},{"x":1059.0,"y":851.0},{"x":1061.0,"y":851.0},{"x":1061.0,"y":849.0},{"x":1062.0,"y":848.0},{"x":1064.0,"y":848.0},{"x":1064.0,"y":846.0},{"x":1065.0,"y":845.0},{"x":1067.0,"y":845.0},{"x":1067.0,"y":840.0},{"x":1068.0,"y":839.0},{"x":1070.0,"y":839.0},{"x":1070.0,"y":837.0},{"x":1071.0,"y":836.0},{"x":1073.0,"y":836.0},{"x":1073.0,"y":834.0},{"x":1074.0,"y":833.0},{"x":1076.0,"y":833.0},{"x":1076.0,"y":831.0},{"x":1077.0,"y":830.0},{"x":1085.0,"y":830.0},{"x":1085.0,"y":828.0},{"x":1086.0,"y":827.0},{"x":1094.0,"y":827.0},{"x":1094.0,"y":825.0},{"x":1095.0,"y":824.0},{"x":1103.0,"y":824.0},{"x":1103.0,"y":822.0},{"x":1104.0,"y":821.0},{"x":1109.0,"y":821.0},{"x":1109.0,"y":819.0},{"x":1110.0,"y":818.0},{"x":1121.0,"y":818.0},{"x":1121.0,"y":816.0},{"x":1122.0,"y":815.0},{"x":1136.0,"y":815.0},{"x":1136.0,"y":813.0},{"x":1137.0,"y":812.0},{"x":1142.0,"y":812.0},{"x":1142.0,"y":810.0},{"x":1143.0,"y":809.0},{"x":1148.0,"y":809.0},{"x":1148.0,"y":807.0},{"x":1149.0,"y":806.0},{"x":1154.0,"y":806.0},{"x":1154.0,"y":804.0},{"x":1155.0,"y":803.0},{"x":1163.0,"y":803.0},{"x":1163.0,"y":801.0},{"x":1164.0,"y":800.0},{"x":1166.0,"y":800.0},{"x":1166.0,"y":798.0},{"x":1167.0,"y":797.0},{"x":1172.0,"y":797.0},{"x":1172.0,"y":795.0},{"x":1173.0,"y":794.0},{"x":1175.0,"y":794.0},{"x":1175.0,"y":792.0},{"x":1176.0,"y":791.0},{"x":1181.0,"y":791.0},{"x":1181.0,"y":789.0},{"x":1182.0,"y":788.0},{"x":1187.0,"y":788.0},{"x":1187.0,"y":786.0},{"x":1188.0,"y":785.0},{"x":1190.0,"y":785.0},{"x":1190.0,"y":783.0},{"x":1191.0,"y":782.0},{"x":1196.0,"y":782.0},{"x":1196.0,"y":780.0},{"x":1197.0,"y":779.0},{"x":1202.0,"y":779.0},{"x":1202.0,"y":777.0},{"x":1203.0,"y":776.0},{"x":1205.0,"y":776.0},{"x":1205.0,"y":774.0},{"x":1206.0,"y":773.0},{"x":1208.0,"y":773.0},{"x":1208.0,"y":771.0},{"x":1209.0,"y":770.0},{"x":1214.0,"y":770.0},{"x":1214.0,"y":768.0},{"x":1215.0,"y":767.0},{"x":1217.0,"y":767.0},{"x":1217.0,"y":765.0},{"x":1218.0,"y":764.0},{"x":1223.0,"y":764.0},{"x":1223.0,"y":762.0},{"x":1224.0,"y":761.0},{"x":1226.0,"y":761.0},{"x":1226.0,"y":759.0},{"x":1227.0,"y":758.0},{"x":1229.0,"y":758.0},{"x":1229.0,"y":756.0},{"x":1230.0,"y":755.0},{"x":1235.0,"y":755.0},{"x":1235.0,"y":753.0},{"x":1236.0,"y":752.0},{"x":1238.0,"y":752.0},{"x":1238.0,"y":750.0},{"x":1239.0,"y":749.0},{"x":1241.0,"y":749.0},{"x":1241.0,"y":747.0},{"x":1242.0,"y":746.0},{"x":1244.0,"y":746.0},{"x":1244.0,"y":744.0},{"x":1245.0,"y":743.0},{"x":1247.0,"y":743.0},{"x":1247.0,"y":741.0},{"x":1248.0,"y":740.0},{"x":1250.0,"y":740.0},{"x":1250.0,"y":738.0},{"x":1251.0,"y":737.0},{"x":1253.0,"y":737.0},{"x":1253.0,"y":732.0},{"x":1254.0,"y":731.0},{"x":1256.0,"y":731.0},{"x":1256.0,"y":726.0},{"x":1257.0,"y":725.0},{"x":1259.0,"y":725.0},{"x":1259.0,"y":720.0},{"x":1260.0,"y":719.0},{"x":1262.0,"y":719.0},{"x":1262.0,"y":714.0},{"x":1263.0,"y":713.0},{"x":1265.0,"y":713.0},{"x":1265.0,"y":711.0},{"x":1266.0,"y":710.0},{"x":1268.0,"y":710.0},{"x":1268.0,"y":705.0},{"x":1269.0,"y":704.0},{"x":1271.0,"y":704.0},{"x":1271.0,"y":696.0},{"x":1272.0,"y":695.0},{"x":1274.0,"y":695.0},{"x":1274.0,"y":690.0},{"x":1275.0,"y":689.0},{"x":1277.0,"y":689.0},{"x":1277.0,"y":687.0},{"x":1278.0,"y":686.0},{"x":1280.0,"y":686.0},{"x":1280.0,"y":681.0},{"x":1281.0,"y":680.0},{"x":1283.0,"y":680.0},{"x":1283.0,"y":675.0},{"x":1284.0,"y":674.0},{"x":1286.0,"y":674.0},{"x":1286.0,"y":663.0},{"x":1287.0,"y":662.0},{"x":1289.0,"y":662.0},{"x":1289.0,"y":657.0},{"x":1290.0,"y":656.0},{"x":1292.0,"y":656.0},{"x":1292.0,"y":579.0},{"x":1290.0,"y":579.0},{"x":1289.0,"y":578.0},{"x":1289.0,"y":567.0},{"x":1287.0,"y":567.0},{"x":1286.0,"y":566.0},{"x":1286.0,"y":555.0},{"x":1284.0,"y":555.0},{"x":1283.0,"y":554.0},{"x":1283.0,"y":549.0},{"x":1281.0,"y":549.0},{"x":1280.0,"y":548.0},{"x":1280.0,"y":543.0},{"x":1278.0,"y":543.0},{"x":1277.0,"y":542.0},{"x":1277.0,"y":537.0},{"x":1275.0,"y":537.0},{"x":1274.0,"y":536.0},{"x":1274.0,"y":531.0},{"x":1272.0,"y":531.0},{"x":1271.0,"y":530.0},{"x":1271.0,"y":525.0},{"x":1269.0,"y":525.0},{"x":1268.0,"y":524.0},{"x":1268.0,"y":519.0},{"x":1266.0,"y":519.0},{"x":1265.0,"y":518.0},{"x":1265.0,"y":516.0},{"x":1263.0,"y":516.0},{"x":1262.0,"y":515.0},{"x":1262.0,"y":513.0},{"x":1260.0,"y":513.0},{"x":1259.0,"y":512.0},{"x":1259.0,"y":507.0},{"x":1257.0,"y":507.0},{"x":1256.0,"y":506.0},{"x":1256.0,"y":501.0},{"x":1254.0,"y":501.0},{"x":1253.0,"y":500.0},{"x":1253.0,"y":498.0},{"x":1251.0,"y":498.0},{"x":1250.0,"y":497.0},{"x":1250.0,"y":495.0},{"x":1248.0,"y":495.0},{"x":1247.0,"y":494.0},{"x":1247.0,"y":489.0},{"x":1245.0,"y":489.0},{"x":1244.0,"y":488.0},{"x":1244.0,"y":486.0},{"x":1242.0,"y":486.0},{"x":1241.0,"y":485.0},{"x":1241.0,"y":483.0},{"x":1239.0,"y":483.0},{"x":1238.0,"y":482.0},{"x":1238.0,"y":480.0},{"x":1236.0,"y":480.0},{"x":1235.0,"y":479.0},{"x":1235.0,"y":477.0},{"x":1233.0,"y":477.0},{"x":1232.0,"y":476.0},{"x":1232.0,"y":474.0},{"x":1230.0,"y":474.0},{"x":1229.0,"y":473.0},{"x":1229.0,"y":471.0},{"x":1227.0,"y":471.0},{"x":1226.0,"y":470.0},{"x":1226.0,"y":468.0},{"x":1224.0,"y":468.0},{"x":1223.0,"y":467.0},{"x":1223.0,"y":465.0},{"x":1221.0,"y":465.0},{"x":1220.0,"y":464.0},{"x":1220.0,"y":462.0},{"x":1218.0,"y":462.0},{"x":1217.0,"y":461.0},{"x":1217.0,"y":459.0},{"x":1212.0,"y":459.0},{"x":1211.0,"y":458.0},{"x":1211.0,"y":456.0},{"x":1209.0,"y":456.0},{"x":1208.0,"y":455.0},{"x":1208.0,"y":453.0},{"x":1206.0,"y":453.0},{"x":1205.0,"y":452.0},{"x":1205.0,"y":450.0},{"x":1203.0,"y":450.0},{"x":1202.0,"y":449.0},{"x":1202.0,"y":447.0},{"x":1197.0,"y":447.0},{"x":1196.0,"y":446.0},{"x":1196.0,"y":444.0},{"x":1191.0,"y":444.0},{"x":1190.0,"y":443.0},{"x":1190.0,"y":441.0},{"x":1188.0,"y":441.0},{"x":1187.0,"y":440.0},{"x":1187.0,"y":438.0},{"x":1185.0,"y":438.0},{"x":1184.0,"y":437.0},{"x":1184.0,"y":435.0},{"x":1182.0,"y":435.0},{"x":1181.0,"y":434.0},{"x":1181.0,"y":432.0},{"x":1176.0,"y":432.0},{"x":1175.0,"y":431.0},{"x":1175.0,"y":429.0},{"x":1173.0,"y":429.0},{"x":1172.0,"y":428.0},{"x":1172.0,"y":426.0},{"x":1170.0,"y":426.0},{"x":1169.0,"y":425.0},{"x":1169.0,"y":423.0},{"x":1164.0,"y":423.0},{"x":1163.0,"y":422.0},{"x":1163.0,"y":420.0},{"x":1155.0,"y":420.0},{"x":1154.0,"y":419.0},{"x":1154.0,"y":417.0},{"x":1149.0,"y":417.0},{"x":1148.0,"y":416.0},{"x":1148.0,"y":414.0},{"x":1143.0,"y":414.0},{"x":1142.0,"y":413.0},{"x":1142.0,"y":411.0},{"x":1137.0,"y":411.0},{"x":1136.0,"y":410.0},{"x":1136.0,"y":408.0},{"x":1128.0,"y":408.0},{"x":1127.0,"y":407.0},{"x":1127.0,"y":405.0},{"x":1122.0,"y":405.0},{"x":1121.0,"y":404.0},{"x":1121.0,"y":402.0},{"x":1116.0,"y":402.0},{"x":1115.0,"y":401.0},{"x":1115.0,"y":399.0},{"x":1110.0,"y":399.0},{"x":1109.0,"y":398.0},{"x":1109.0,"y":396.0},{"x":1101.0,"y":396.0},{"x":1100.0,"y":395.0},{"x":1100.0,"y":393.0},{"x":1095.0,"y":393.0},{"x":1094.0,"y":392.0},{"x":1094.0,"y":390.0},{"x":1092.0,"y":390.0},{"x":1091.0,"y":389.0},{"x":1091.0,"y":387.0},{"x":1089.0,"y":387.0},{"x":1088.0,"y":386.0},{"x":1088.0,"y":384.0},{"x":1083.0,"y":384.0},{"x":1082.0,"y":383.0},{"x":1082.0,"y":381.0},{"x":1080.0,"y":381.0},{"x":1079.0,"y":380.0},{"x":1079.0,"y":375.0},{"x":1074.0,"y":375.0},{"x":1073.0,"y":374.0},{"x":1073.0,"y":372.0},{"x":1065.0,"y":372.0},{"x":1064.0,"y":371.0},{"x":1064.0,"y":369.0},{"x":1059.0,"y":369.0},{"x":1058.0,"y":368.0},{"x":1058.0,"y":366.0},{"x":1050.0,"y":366.0},{"x":1049.0,"y":365.0},{"x":1049.0,"y":363.0},{"x":1032.0,"y":363.0},{"x":1031.0,"y":362.0},{"x":1031.0,"y":360.0},{"x":1002.0,"y":360.0},{"x":1001.0,"y":359.0},{"x":1001.0,"y":357.0},{"x":990.0,"y":357.0},{"x":989.0,"y":356.0},{"x":989.0,"y":354.0},{"x":981.0,"y":354.0},{"x":980.0,"y":353.0},{"x":980.0,"y":351.0},{"x":978.0,"y":351.0},{"x":977.0,"y":350.0},{"x":977.0,"y":348.0},{"x":972.0,"y":348.0},{"x":971.0,"y":347.0},{"x":971.0,"y":345.0},{"x":966.0,"y":345.0},{"x":965.0,"y":344.0},{"x":965.0,"y":342.0},{"x":954.0,"y":342.0},{"x":953.0,"y":341.0},{"x":953.0,"y":339.0},{"x":930.0,"y":339.0},{"x":929.0,"y":338.0},{"x":929.0,"y":336.0}]
      ]
    }
  ],
  "image": { "width": 1280, "height": 720 }
}

2. Systemkonfigurationsschnittstelle (Config)

Wird verwendet, um Schwellenwerte fuer Echtzeit-Videostreams und Standardinferenz dynamisch anzupassen.

Aktuelle Konfiguration abrufen

  • Endpunkt: GET /api/config
  • Antwort: {"obj_thresh": 0.25, "nms_thresh": 0.45}

Systemkonfiguration aktualisieren

  • Endpunkt: POST /api/config
  • Anfrage-Body (JSON): {"obj_thresh": 0.3, "nms_thresh": 0.5}
  • Antwort: {"status": "success"}

3. Echtzeit-Videostream-Schnittstelle (Video Feed)

Echtzeit-MJPEG-Videostream mit eingezeichneten Erkennungsboxen und Segmentierungsmasken abrufen, kann direkt in HTML <img>-Tags eingebettet werden.

  • Endpunkt: GET /api/video_feed
  • Verwendungsbeispiel: <img src="http://<Board_IP>:8000/api/video_feed">

🛠️ Entwicklerhandbuch (Produktionsempfehlungen)

Codebeschreibung

  • web_detection.py:
    • Dual-Mode-Unterstuetzung: Integriert FastAPI und unterstuetzt sowohl lokales Rendering als auch MJPEG-Streaming-Ausgabe.
    • Umgebungsadaptiv: Erkennt automatisch die DISPLAY-Umgebungsvariable und ueberspringt stillschweigend die GUI-Initialisierung, wenn nicht vorhanden.
    • RKNN-Inferenz: Kapselt RKNN-Initialisierung, Modellladung und Multi-Core-Inferenzlogik.
    • Dynamisches Laden: Unterstuetzt dynamisches Laden von Klassenkonfigurationen ueber --class_path.
    • Nachbearbeitung: Hochleistungs-Numpy-basierte Bounding-Box-Dekodierung, NMS und Konturextraktion (cv2.findContours).

Modelle aendern

  1. Legen Sie das trainierte und konvertierte .rknn-Modell im model/-Verzeichnis ab.
  2. Fuegen Sie das --model_path-Argument zum Ausfuehrungsbefehl hinzu, um auf das neue Modell zu verweisen.