RK3588

cropped-2.8.1.png
51miz-P1371254-FUV9P8GX-3840x1711

Der RK3588 von Rockchip ist ein leistungsstarker System-on-Chip (SoC), der sich durch seine Vielseitigkeit und hohe Rechenleistung in intelligenten Gateways und Edge-Servern auszeichnet. Mit einem Octa-Core-Prozessor (4x Cortex-A76 und 4x Cortex-A55), einer 6 TOPS Neural Processing Unit (NPU) und Unterstützung für 8K-Video-Codierung/Decodierung ist der RK3588 ideal für Anwendungen, die KI-Inferenz, Videoverarbeitung und IoT-Konnektivität erfordern.

Die Implementierung konzentriert sich auf drei Hauptanwendungsfälle:

  1. KI-Inferenz: Objekterkennung mit YOLOv5 auf der NPU des RK3588.

  2. Videoverarbeitung: Dekodierung und Streaming von 8K-Videos.

  3. IoT-Gateway: Verwaltung von Sensordaten über MQTT für Edge-to-Cloud-Kommunikation.

Der begleitende Code ist modular aufgebaut, nutzt die Hardware-Beschleuniger des RK3588 und ist für den Einsatz auf Entwicklungsboards wie dem Geniatech DB3588V2 oder Forlinx FET3588-C optimiert.

Hardware- und Softwarevoraussetzungen

Hardware

Der RK3588 bietet eine beeindruckende Kombination aus Rechenleistung und Konnektivität:

  • CPU: Octa-Core (4x Cortex-A76 @ 2.4 GHz, 4x Cortex-A55 @ 1.8 GHz).

  • NPU: 6 TOPS für KI-Inferenz, unterstützt Frameworks wie TensorFlow und PyTorch.

  • GPU: Mali-G610 MP4 für grafikintensive Anwendungen.

  • Video: Unterstützt 8K@60fps H.265/VP9-Decodierung und 8K@30fps H.265/H.264-Codierung.

  • Schnittstellen: Gigabit-Ethernet, WiFi6, PCIe 3.0, USB 3.0, HDMI 2.1, MIPI-CSI/DSI.

  • RAM/Speicher: Typischerweise 8–32 GB LPDDR4/5 und eMMC/SSD-Speicher.

Empfohlene Entwicklungsboards wie der Geniatech APC3588 oder Dusun DSGW-380 bieten robuste Plattformen für die Entwicklung und den Einsatz.

Software

  • Betriebssystem: Ubuntu 22.04 oder Debian 11, die weit verbreitete Unterstützung für RK3588 bieten. Android 12 ist ebenfalls kompatibel, erfordert jedoch Anpassungen.

  • Abhängigkeiten:

    • RKNN-Toolkit2: Für die NPU-basierte KI-Inferenz.

    • OpenCV: Für die Videoverarbeitung.

    • Paho-MQTT: Für die IoT-Kommunikation.

  • Modellumwandlung: Ein vortrainiertes YOLOv5-Modell muss mit dem RKNN-Toolkit2 in das .rknn-Format konvertiert werden.

Installation

Die folgenden Schritte richten die Entwicklungsumgebung ein:

sudo apt update
sudo apt install python3-opencv python3-pip
pip3 install paho-mqtt numpy

Das RKNN-Toolkit2 ist über das offizielle Rockchip-Repository (Rockchip-Linux) verfügbar. Die Installation und Modellumwandlung folgen den Anweisungen im RKNN-Benutzerhandbuch.

Implementierung

Die vorgestellte Implementierung integriert KI-Inferenz, Videoverarbeitung und IoT-Konnektivität in einer modularen Python-Anwendung. Der Code ist für die Ausführung auf dem RK3588 optimiert und berücksichtigt die Pyodide-Kompatibilität für browserbasierte Umgebungen.

KI-Inferenz mit YOLOv5

Die NPU des RK3588 ermöglicht effiziente KI-Inferenz. Der Code lädt ein vortrainiertes YOLOv5-Modell im .rknn-Format und führt Objekterkennung auf Videobildern durch. Die wichtigsten Schritte sind:

  1. Modellinitialisierung: Laden des RKNN-Modells und Initialisierung der Laufzeitumgebung.

  2. Vorverarbeitung: Anpassen der Bildgröße auf 640×640 Pixel und Normalisierung der Pixelwerte.

  3. Inferenz: Ausführen der Objekterkennung auf der NPU.

  4. Nachverarbeitung: Extrahieren von Bounding-Boxen und Klassifizierungen (nicht im Beispielcode enthalten, kann aber erweitert werden).

Videoverarbeitung

Der RK3588 unterstützt hardwarebeschleunigte Videodekodierung (H.265/VP9) für bis zu 8K@60fps. Der Code erfasst einen RTSP-Stream, dekodiert die Frames und bereitet sie für die KI-Inferenz vor. Optional können die verarbeiteten Frames gestreamt oder angezeigt werden. Die Verwendung von OpenCV gewährleistet eine effiziente Bildverarbeitung.

IoT-Gateway mit MQTT

Für die Edge-to-Cloud-Kommunikation wird das MQTT-Protokoll verwendet. Der Code:

  • Verbindet sich mit einem MQTT-Broker (z. B. HiveMQ).

  • Veröffentlicht Erkennungsergebnisse oder Sensordaten auf einem spezifizierten Topic.

  • Abonniert Sensordaten für die bidirektionale Kommunikation.

Asynchrone Struktur

Um die Kompatibilität mit Pyodide zu gewährleisten, verwendet der Code asyncio zur Steuerung der Framerate und Vermeidung von Endlosschleifen. Die Struktur prüft auf Emscripten, um die Ausführung in browserbasierten Umgebungen zu unterstützen.

Beispielcode

Der folgende Code ist eine vollständige Implementierung, die die oben beschriebenen Komponenten integriert:

import cv2
import numpy as np
from rknn.api import RKNN
import paho.mqtt.client as mqtt
import json
import asyncio
import platform

# Konfiguration
MQTT_BROKER = "broker.hivemq.com"
MQTT_PORT = 1883
MQTT_TOPIC = "rk3588/sensors"
VIDEO_SOURCE = "rtsp://example.com/stream"  # Mit tatsächlichem RTSP-Stream ersetzen
MODEL_PATH = "./yolov5.rknn"  # Vorkonvertiertes YOLOv5-Modell für RK3588 NPU
FPS = 30

# RKNN für NPU initialisieren
def init_rknn_model():
    rknn = RKNN()
    ret = rknn.load_rknn(MODEL_PATH)
    if ret != 0:
        print("Fehler beim Laden des RKNN-Modells")
        exit(ret)
    ret = rknn.init_runtime()
    if ret != 0:
        print("Fehler bei der Initialisierung der RKNN-Laufzeit")
        exit(ret)
    return rknn

# YOLOv5-Inferenz auf NPU durchführen
def run_inference(rknn, frame):
    # Bildvorverarbeitung
    img = cv2.resize(frame, (640, 640))
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img = img.astype(np.float32) / 255.0
    img = np.expand_dims(img, axis=0)

    # Inferenz durchführen
    outputs = rknn.inference(inputs=[img])
    return outputs  # Ergebnisse nach Bedarf verarbeiten (z. B. Bounding-Boxen)

# MQTT-Callback-Funktionen
def on_connect(client, userdata, flags, rc):
    print(f"Mit MQTT-Broker verbunden, Code {rc}")
    client.subscribe(MQTT_TOPIC)

def on_message(client, userdata, msg):
    print(f"Empfangen: {msg.payload.decode()} auf Topic {msg.topic}")

# MQTT-Client initialisieren
def init_mqtt():
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.connect(MQTT_BROKER, MQTT_PORT, 60)
    client.loop_start()
    return client

# Videostream verarbeiten
async def process_video(rknn, mqtt_client):
    cap = cv2.VideoCapture(VIDEO_SOURCE)
    if not cap.isOpened():
        print("Fehler beim Öffnen der Videoquelle")
        return

    while True:
        ret, frame = cap.read()
        if not ret:
            print("Fehler beim Lesen des Frames")
            break

        # KI-Inferenz durchführen
        detections = run_inference(rknn, frame)
        # Erkennungsergebnisse über MQTT senden
        mqtt_client.publish(MQTT_TOPIC, json.dumps({"detections": "Objekte_erkannt"}))

        await asyncio.sleep(1.0 / FPS)

    cap.release()

# Hauptfunktion
async def main():
    # Komponenten initialisieren
    rknn = init_rknn_model()
    mqtt_client = init_mqtt()

    # Videoverarbeitung starten
    await process_video(rknn, mqtt_client)

    # Aufräumen
    rknn.release()
    mqtt_client.loop_stop()
    mqtt_client.disconnect()

# Anwendung ausführen
if platform.system() == "Emscripten":
    asyncio.ensure_future(main())
else:
    if __name__ == "__main__":
        asyncio.run(main())

Bereitstellungsempfehlungen

Hardwarekonfiguration

  • RAM: Mindestens 8 GB LPDDR4/5 für KI- und Videoverarbeitung.

  • Speicher: 32 GB eMMC oder SSD für Betriebssystem und Modelle.

  • Netzwerk: Gigabit-Ethernet oder WiFi6 für stabile IoT-Konnektivität.

Skalierbarkeit

Die Implementierung kann erweitert werden, um:

  • Weitere Protokolle wie LoRaWAN oder BLE zu unterstützen.

  • Multi-Threading für parallele RKNN-Inferenz zu nutzen.

  • Edge-Analytik durch Hinzufügen von Datenaggregation und Vorverarbeitung zu verbessern.

Leistungsoptimierung

  • NPU-Nutzung: Optimieren Sie die Modellumwandlung mit RKNN-Toolkit2, um die Latenz zu minimieren.

  • Video-Streaming: Verwenden Sie GStreamer für effizienteres Streaming mit hardwarebeschleunigter Kodierung.

  • Energieeffizienz: Passen Sie die CPU/NPU-Frequenz an, um den Stromverbrauch für Edge-Umgebungen zu reduzieren.

Anwendungsfälle

Die Implementierung ist vielseitig und kann in verschiedenen Szenarien eingesetzt werden:

  • Intelligente Gateways: Verwaltung von IoT-Geräten in Smart Homes oder Industrieanlagen.

  • Edge-Server: Echtzeit-Videoanalyse für Überwachungssysteme.

  • KI-gestützte Automatisierung: Objekterkennung für Robotik oder Logistik.

 

Der RK3588 ist eine hervorragende Plattform für intelligente Gateways und Edge-Server, dank seiner leistungsstarken CPU, NPU und Video-Hardware. Die vorgestellte Implementierung bietet eine robuste Grundlage für Anwendungen, die KI-Inferenz, Videoverarbeitung und IoT-Konnektivität kombinieren. Durch die Nutzung des RKNN-Toolkit2, OpenCV und MQTT wird eine skalierbare und effiziente Lösung geschaffen, die sich leicht an spezifische Anforderungen anpassen lässt.

Entwickler können den Code als Ausgangspunkt nutzen und durch Hinzufügen von Funktionen wie Multi-Modell-Inferenz, erweiterten IoT-Protokollen oder benutzerdefinierten Analysen weiterentwickeln. Mit der richtigen Hardware- und Softwarekonfiguration bietet der RK3588 eine zukunftssichere Plattform für Edge-Computing-Anwendungen.

 

  • Geniatech APC3588 und DB3588V2 Dokumentation

  • Dusun DSGW-380 für Edge-AI-Gateway-Anwendungen

  • Rockchip RK3588 Linux SDK und RKNN-Toolkit2

  • Forlinx FET3588-C Entwicklungsboard-Ressourcen

滚动至顶部