Parker Hu2026-07-17

Fußballspieler-Tracking-Analyse mit reComputer RK3576

Nutzen Sie die RGA 2D-Hardwarebeschleunigung und VPU MPP-Beschleunigung des reComputer RK3576. Führen Sie das YOLOv8n-Modell aus, um Fußballspieler zu erkennen und Echtzeitanalysen zu ermöglichen.

reComputer-RKrk3576yolotrackingfootballGithub

reComputer RK3576 Fußballspieler-Tracking-Analyse

Ein intelligentes Fußballfeld-Analyseprojekt basierend auf RK3576 / RKNN / MPP / RGA / ZLMediaKit.

Den Quellcode des Projekts finden Sie unter diesem Link: https://github.com/litxaohu/football_project

Alternativ können Sie die kompilierte Version herunterladen, um das Projekt lokal auf Ihrem reComputer RK3576 auszuführen:

Hinweis: Dieses Projekt hat geringe Speicheranforderungen, aber eine hohe CPU-Auslastung. Eine Optimierung der CPU-Auslastung wird in Zukunft erwogen.

bash
wget -O rk3576_football_demo-linux-aarch64.tar.gz https://github.com/litxaohu/football_project/releases/download/v1.0.0/rk3576_football_demo-linux-aarch64.tar.gz
tar -xzvf rk3576_football_demo-linux-aarch64.tar.gz

cd install
export LD_LIBRARY_PATH="$(pwd)/lib:${LD_LIBRARY_PATH}"

Sie können lokale Videos zur Analyse und Verarbeitung auf das Gerät hochladen oder eine RTSP-Videoquelle für die Echtzeitanalyse hinzufügen:

Lokale Videoanalyse:

bash
sudo ./bin/rk3576_football_demo \
  --source localvideo \
  --localvideo ./video/football.mp4 \ #Change it to the local path of your video file
  --model model/yolov8n_rk3576.rknn \
  --output-width 1280 \
  --output-height 720 \
  --fps 30 \
  --http-port 8000 \
  --streams ai \
  --ai-conf-threshold 0.25

RTSP-Videoanalyse:

bash
sudo ./bin/rk3576_football_demo \
  --source rtsp \
  --rtsp-input-url "rtsp://192.168.100.101:554/live" \
  --rtsp-username admin \
  --rtsp-password 123456 \
  --model model/yolov8n_rk3576.rknn \
  --output-width 1280 \
  --output-height 720 \
  --fps 30 \
  --http-port 8000 \
  --streams ai \
  --ai-conf-threshold 0.25

Vorschau:

  • Seitenaufruf http://<board-ip>:8000/

Projektfunktionen

Aktuelle Fähigkeiten

  • Eingabequellen:
    • v4l2
    • rtsp
    • localvideo
  • Ausgabestreams:
    • Hauptstream rtsp://<board-ip>:8554/live/camera
    • Substream rtsp://<board-ip>:8554/live/camera_sub
    • KI-Debug-Stream rtsp://<board-ip>:8554/live/camera_ai
  • Web:
    • Seitenaufruf http://<board-ip>:8000/
    • HLS-Status-Endpunkt /api/hls/status
    • HLS-Playlist /api/hls/playlist.m3u8
    • Live-Erkennungs-Endpunkt /api/live_state
  • KI:
    • feste NPU-Eingabe 640x640
    • Standarderkennungsziel Person
    • --enable-ball aktiviert die Ausgabe für Ball
    • --ball-trail aktiviert das Zeichnen der Balltrajektorie im KI-Debug-Stream
  • Tracking:
    • stabile track_id-Ausgabe
    • JSON liefert track_id, appear_frames, first_seen_sec, last_seen_sec

Web-Wiedergabe

Derzeit verwendet:

  • Protokoll: HLS
  • Codec: H.264
  • Bildrate: 30 FPS
  • Auflösung: 1280x720

Build und Ausführung

GitHub CI und Release-Paketierung

Dieses Repository enthält einen GitHub Actions Workflow, der:

  • das Projekt bei Push oder Pull Request automatisch baut
  • dasselbe Build-Skript wie lokal verwendet: ./scripts/build-linux.sh
  • ein Release-Archiv für Linux/aarch64 unter dist/ erzeugt
  • das Archiv als GitHub Release veröffentlicht, wenn ein Tag wie v1.0.0 gepusht wird

Zur Verwendung:

  1. Erstellen Sie ein GitHub-Repository und pushen Sie das Projekt dorthin.
  2. Fügen Sie das Repository zu GitHub Actions hinzu.
  3. Pushen Sie einen Tag wie git tag v1.0.0 && git push origin v1.0.0, um ein verpacktes Release auszulösen.

Abhängigkeiten

  • RK3576 Board-Laufzeitumgebung
  • RKNN Runtime
  • Rockchip MPP
  • RGA
  • ZLMediaKit
  • FFmpeg

Build

bash
cd rk3576_football_demo
chmod +x scripts/build-linux.sh
./scripts/build-linux.sh

Vorbereitung vor der Ausführung

bash
cd install
export LD_LIBRARY_PATH="$(pwd)/lib:${LD_LIBRARY_PATH}"

Modellverzeichnis

text
model/
  yolov8n_rk3576.rknn
  yolov8s_rk3576.rknn
  yolov8m_rk3576.rknn

Wenn --model nicht explizit angegeben wird, werden automatisch die oben genannten Standardmodellnamen verwendet.

Startbeispiele

RTSP Live-Fußballanalyse + Web

bash
./bin/rk3576_football_demo \
  --source rtsp \
  --rtsp-input-url "rtsp://192.168.100.101:554/live" \
  --rtsp-username admin \
  --rtsp-password 123456 \
  --model model/yolov8n_rk3576.rknn \
  --output-width 1280 \
  --output-height 720 \
  --fps 30 \
  --http-port 8000 \
  --streams main,sub,ai
bash
sudo ./bin/rk3576_football_demo \
  --source localvideo \
  --localvideo ./video/football.mp4 \
  --model model/yolov8n_rk3576.rknn \
  --output-width 1280 \
  --output-height 720 \
  --fps 30 \
  --http-port 8000 \
  --streams ai \
  --ai-conf-threshold 0.15

Nur KI-Debug-Stream + Web

bash
./bin/rk3576_football_demo \
  --source rtsp \
  --rtsp-input-url "rtsp://192.168.100.101:554/live" \
  --rtsp-username admin \
  --rtsp-password 123456 \
  --model model/yolov8n_rk3576.rknn \
  --streams ai \
  --http-port 8000

Ballerkennung und Trajektorie aktivieren

bash
./bin/rk3576_football_demo \
  --source rtsp \
  --rtsp-input-url "rtsp://192.168.100.101:554/live" \
  --model model/yolov8n_rk3576.rknn \
  --enable-ball \
  --ball-trail \
  --ball-trail-length 20

Debugging von Zielen mit niedriger Konfidenz

bash
./bin/rk3576_football_demo \
  --source localvideo \
  --localvideo /home/rk76/CPP_yolov8/video/football.mp4 \
  --model model/yolov8n_rk3576.rknn \
  --streams ai \
  --ai-conf-threshold 0.15 \
  --detail-info

NPU-Eingabebilder exportieren

bash
./bin/rk3576_football_demo \
  --source localvideo \
  --localvideo /home/rk76/CPP_yolov8/video/football.mp4 \
  --model model/yolov8n_rk3576.rknn \
  --streams ai \
  --dump-ai-input-dir ./debug_ai_input \
  --dump-ai-input-every 30 \
  --detail-info

Hilfe anzeigen

bash
./bin/rk3576_football_demo --help

Web-API

Live-Status

  • GET /api/live_state

Antwortbeispiel:

json
{
  "success": true,
  "message": "",
  "stream_type": "hls",
  "detect_fps": 28.7,
  "updated_at": 1720851200,
  "source": "live frame",
  "image": {
    "width": 1280,
    "height": 720
  },
  "predictions": [
    {
      "class": "person",
      "confidence": 0.92,
      "track_id": "#12",
      "track_numeric": 12,
      "appear_frames": 35,
      "first_seen_sec": 3,
      "last_seen_sec": 5,
      "box": {
        "x1": 100,
        "y1": 200,
        "x2": 300,
        "y2": 500
      }
    }
  ]
}

HLS-Status

  • GET /api/hls/status

HLS-Wiedergabe

  • GET /api/hls/playlist.m3u8

Upload/Datei-API

  • POST /api/video/upload
  • GET /api/video/list
  • GET /api/video/download/<filename>

Hinweise:

  • Diese Version priorisiert Echtzeit-Web/HLS und Live-JSON.
  • POST /api/video/analyze und vollständige Offline-Analyse-Aufgabenverwaltung sind für zukünftige Erweiterungen reserviert.

Wichtige Parameter

  • --streams <main,sub,ai>: Auswahl der zu aktivierenden Ausgabestreams
  • --ai-width <value> / --ai-height <value>: Ausgabegröße des KI-Debug-Streams
  • --http-host <value>: Web-Listening-Adresse
  • --http-port <value>: Web-Listening-Port, Standard 8000
  • --web-root <path>: Stammverzeichnis für statische Ressourcen
  • --hls-dir <path>: HLS-Ausgabeverzeichnis
  • --uploads-dir <path>: Upload-Verzeichnis
  • --results-dir <path>: Ergebnisverzeichnis
  • --enable-ball: Aktiviert die Fußballerkennungsausgabe
  • --ball-trail: Aktiviert das Zeichnen der Balltrajektorie
  • --ball-trail-length <value>: Anzahl der zu behaltenden Trajektorienpunkte
  • --ai-conf-threshold <value>: KI-Erkennungskonfidenzschwelle, Standard 0.25
  • --disable-web: Deaktiviert den integrierten Web-/HLS-Dienst
  • --detail-info: Aktiviert ausführliche Protokolle

Projektstruktur

text
rk3576_football_demo
├── CMakeLists.txt
├── football_players.html
├── static
│   └── hls.min.js
├── include
│   └── rk3576_yolo_demo
│       ├── ai
│       ├── app
│       ├── branch
│       ├── common
│       ├── tracking
│       └── web
├── src
│   ├── ai
│   ├── app
│   ├── branch
│   ├── common
│   ├── tracking
│   ├── web
│   └── ...
└── third_party

KI-Inferenz-Erweiterungen

  • Der RKNN-Einstiegspunkt befindet sich in src/ai/yolov8_engine.cpp
  • Die Vorverarbeitung verwendet hauptsächlich RGA
  • Erkennungsergebnisse werden im DetectionFrame-Cache gespeichert und dann vom KI-Zweig basierend auf PTS abgeglichen und zusammengeführt

Protokollierung und Debugging

  • Standardmäßig wird nur die Startzusammenfassung ausgegeben
  • 通过 --detail-info 启用详细的运行时日志
  • 记录器位于 include/rk3576_yolo_demo/common/logger.hpp

部署建议

  • 对于生产环境部署,请配置 /dev/rga、视频设备及相关运行时库的权限
  • 建议将模型、运行时库和配置文件与 install/ 一起打包
  • RTSP 输入首选 libavformat;较旧环境会自动回退到 ffmpeg pipe
  • 为保障长期稳定运行,请使用 systemd 或 supervisor 进行进程管理与自动重启

已知限制

  • camera_ai 的边界框绘制与水印叠加仍会产生一些 CPU 开销
  • e2e 并非完整的端到端延迟,它仅代表内部分支耗时
  • localvideo 当前使用压缩流读取路径,主要用于离线验证和循环推理