Parker Hu2026-07-17

Voetbalspeler Tracking Analyse met reComputer RK3576

Maak gebruik van reComputer RK3576 RGA 2D hardwareversnelling en VPU MPP-versnelling. Gebruik het YOLOv8n-model om voetbalspelers te detecteren en realtime analyse te realiseren.

reComputer-RKrk3576yolotrackingfootballGithub

reComputer RK3576 Voetbalspelers volganalyse

Een intelligent voetbalveldanalyseproject gebaseerd op RK3576 / RKNN / MPP / RGA / ZLMediaKit.

U kunt de broncode van het project bekijken via deze link: https://github.com/litxaohu/football_project

U kunt ook de gecompileerde versie downloaden om het project lokaal op uw reComputer RK3576 uit te voeren:

opmerking: dit project heeft een laag geheugengebruik, maar een hoog CPU-verbruik. Optimalisatie van het CPU-verbruik wordt in de toekomst overwogen.

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

U kunt lokale video's naar het apparaat uploaden voor analyse en verwerking, of een RTSP-videobron toevoegen voor realtime analyse:

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

Voorbeeldweergave:

  • pagina-ingang http://<board-ip>:8000/

Projectfuncties

Huidige mogelijkheden

  • Invoerbronnen:
    • v4l2
    • rtsp
    • localvideo
  • Uitvoerstreams:
    • hoofdstream rtsp://<board-ip>:8554/live/camera
    • substream rtsp://<board-ip>:8554/live/camera_sub
    • AI-debugstream rtsp://<board-ip>:8554/live/camera_ai
  • Web:
    • pagina-ingang http://<board-ip>:8000/
    • HLS-status-eindpunt /api/hls/status
    • HLS-afspeellijst /api/hls/playlist.m3u8
    • live detectie-eindpunt /api/live_state
  • AI:
    • vaste NPU-invoer 640x640
    • standaard detectiedoel person
    • --enable-ball schakelt ball uitvoer in
    • --ball-trail schakelt balbaantekening in op de AI-debugstream
  • Tracking:
    • stabiele track_id uitvoer
    • JSON retourneert track_id, appear_frames, first_seen_sec, last_seen_sec

Web-weergave

Momenteel gebruikt:

  • protocol: HLS
  • codec: H.264
  • beeldsnelheid: 30 FPS
  • resolutie: 1280x720

Bouwen en uitvoeren

GitHub CI en release-packaging

Deze repository bevat een GitHub Actions-workflow die:

  • het project automatisch bouwt bij push of pull request
  • hetzelfde bouwscript gebruikt dat lokaal wordt gebruikt: ./scripts/build-linux.sh
  • een release-archief produceert voor Linux/aarch64 in dist/
  • het archief publiceert als een GitHub-release wanneer een tag zoals v1.0.0 wordt gepusht

Om het te gebruiken:

  1. Maak een GitHub-repository aan en push het project ernaartoe.
  2. Voeg de repository toe aan GitHub Actions.
  3. Push een tag zoals git tag v1.0.0 && git push origin v1.0.0 om een verpakte release te activeren.

Afhankelijkheden

  • RK3576 board runtime-omgeving
  • RKNN Runtime
  • Rockchip MPP
  • RGA
  • ZLMediaKit
  • FFmpeg

Bouwen

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

Voorbereiding voor het uitvoeren

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

Modeldirectory

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

Als --model niet expliciet wordt opgegeven, worden de bovenstaande standaard modelnamen automatisch geprobeerd.

Opstartvoorbeelden

RTSP live voetbalanalyse + 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

AI-debugstream + alleen 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

Baldetectie en -baan inschakelen

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

Debuggen van doelen met lage betrouwbaarheid

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

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

Help weergeven

bash
./bin/rk3576_football_demo --help

Web-API

Live-status

  • GET /api/live_state

Voorbeeld van antwoord:

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

  • GET /api/hls/playlist.m3u8

Upload-/bestands-API

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

Opmerkingen:

  • Deze versie geeft prioriteit aan realtime Web/HLS en live JSON.
  • POST /api/video/analyze en volledige offline-analyse taakbeheer zijn gereserveerd voor toekomstige uitbreiding.

Belangrijke parameters

  • --streams <main,sub,ai>: selecteer welke uitvoerstreams moeten worden ingeschakeld
  • --ai-width <value> / --ai-height <value>: AI-debugstream uitvoergrootte
  • --http-host <value>: Web-luisteradres
  • --http-port <value>: Web-luisterpoort, standaard 8000
  • --web-root <path>: statische bron-hoofdmap
  • --hls-dir <path>: HLS-uitvoermap
  • --uploads-dir <path>: uploadmap
  • --results-dir <path>: resultatenmap
  • --enable-ball: schakel voetbaldetectie-uitvoer in
  • --ball-trail: schakel balbaantekening in
  • --ball-trail-length <value>: aantal bij te houden baanpunten
  • --ai-conf-threshold <value>: AI-detectie betrouwbaarheidsdrempel, standaard 0.25
  • --disable-web: schakel ingebouwde Web/HLS-service uit
  • --detail-info: schakel gedetailleerde logboeken in

Projectstructuur

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

AI-inferentie-uitbreidingen

  • Het RKNN-invoerpunt bevindt zich in src/ai/yolov8_engine.cpp
  • Voorbewerking maakt voornamelijk gebruik van RGA
  • Detectieresultaten worden opgeslagen in de DetectionFrame-cache en vervolgens door de AI-tak gematcht en samengevoegd op basis van PTS

Logboekregistratie en debugging

  • standaard wordt alleen de opstartoverzicht afgedrukt
  • gedetailleerde runtime-logboeken worden ingeschakeld met --detail-info
  • de logger bevindt zich in include/rk3576_yolo_demo/common/logger.hpp

Implementatie-aanbevelingen

  • voor productie-implementatie configureert u de machtigingen voor /dev/rga, videoapparaten en gerelateerde runtime-bibliotheken
  • het wordt aanbevolen om modellen, runtime-bibliotheken en configuratiebestanden samen te verpakken met install/
  • RTSP-invoer heeft de voorkeur voor libavformat; oudere omgevingen schakelen automatisch terug naar ffmpeg pipe
  • voor langdurige stabiele werking, gebruik systemd of supervisor voor procesbeheer en herstarts

Bekende beperkingen

  • camera_ai weergave van begrenzingsvakken en watermerk-overlay zorgen nog steeds voor enige CPU-overhead
  • e2e is niet de volledige end-to-end latentie; het vertegenwoordigt alleen de interne taktijd
  • localvideo gebruikt momenteel het pad voor het lezen van gecomprimeerde streams, voornamelijk voor offline validatie en herhaalde inferentie