CV / YOLOX

YOLOX

YOLOX COCO object detection on reComputer RK3576, RK3588, and CM5 with Hailo-8 or Hailo-10H.

34 téléchargements
Précision
RKNN / Hailo HEF

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Pour commencer

Déployer
sudo docker run --rm --privileged --net=host --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolox:latest \
  python3 web_detection.py --platform rk3576 --model_path model/yolox_s.rknn \
  --class_path model/coco_80_labels_list.txt --video_path video/test.mp4

API REST

Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "yolox-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "yolox-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

Détails du modèle

reComputer RK

Démarrage rapide

1. Installer Docker

Exécutez les commandes suivantes sur la carte de développement pour installer Docker :

bash
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyun
sudo sh get-docker.sh --mirror Aliyun
# systemd
sudo systemctl enable docker
sudo systemctl start docker

2. Exécuter le projet (une commande, aperçu double mode)

Cette page repose sur les services YOLOX de reComputer-RK-CV. Le runtime effectue l’inférence RKNN, le décodage des branches YOLOX, la fusion des scores d’objectivité/classe et la NMS par classe.

Informations sur le modèle

PropriétéValeur
TâcheDétection d’objets COCO à 80 classes
EntréeRGB letterbox 640 x 640
Variantesyolox_s.rknn, yolox_m.rknn
Valeur par défautmodel/yolox_s.rknn
Étiquettesmodel/coco_80_labels_list.txt

Étape A : télécharger les images

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolox:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolox:latest

Étape B : exécuter en un clic

Pour RK3576:

bash
sudo docker run --rm --privileged --net=host \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolox:latest \
  python3 web_detection.py --platform rk3576 \
  --model_path model/yolox_s.rknn \
  --class_path model/coco_80_labels_list.txt --video_path video/test.mp4

Pour RK3588:

bash
sudo docker run --rm --privileged --net=host \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolox:latest \
  python3 web_detection.py --platform rk3588 \
  --model_path model/yolox_s.rknn \
  --class_path model/coco_80_labels_list.txt --video_path video/test.mp4

Utilisez model/yolox_m.rknn pour la variante moyenne. Conservez l’argument du chemin des classes lors du changement de modèle. Ouvrez http://<BOARD_IP>:8000 ou /docs.


🔌 Documentation de l’API

1. Interface d’inférence du modèle (Predict)

Endpoint : POST /api/models/yolox/predict

Paramètres de requête (Multipart/Form-Data) :

Vous pouvez fournir file, video, timestamp, realtime, conf et iou ; les seuils par défaut sont 0.25 et 0.45.

Exemples d’utilisation :

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/yolox/predict" \
  -F "file=@bus.jpg" -F "conf=0.25" -F "iou=0.45"

Format de réponse (JSON) :

json
{
  "success": true,
  "source": "uploaded image",
  "predictions": [
    {
      "class": "bus",
      "confidence": 0.91,
      "box": {"x1": 100, "y1": 120, "x2": 520, "y2": 430}
    }
  ],
  "image": {"width": 640, "height": 480}
}

2. Interface de configuration système (Config)

Le service accepte les requêtes d’image, d’image vidéo téléversée et de source courante. GET/POST /api/config contrôle obj_thresh et nms_thresh ; les valeurs conf et iou de la requête les remplacent. Les endpoints d’état, MJPEG, téléversement, analyse asynchrone, état, liste et téléchargement sont également disponibles.

L’entrée est letterboxée, convertie en RGB, décodée par branche puis traitée par fusion objectivité/classe et NMS par classe. Les modèles de remplacement doivent correspondre au décodeur YOLOX et à la configuration des classes fournis.

3. Arguments de ligne de commande

ArgumentValeur par défautDescription
--platformObligatoirerk3576 ou rk3588.
--model_pathObligatoireFichier RKNN YOLOX-S ou YOLOX-M.
--class_pathObligatoire dans la commande fournieFichier des noms de classes COCO.
--camera_id1Indice de caméra ; -1 active uniquement les téléversements.
--video_pathAucunMP4 local en boucle ; remplace la caméra.
--host / --port0.0.0.0 / 8000Adresse et port du service.

Interface de flux vidéo en temps réel (Video Feed)

Obtenez le dernier flux MJPEG annoté pour l’aperçu dans le navigateur :

  • Endpoint: GET /api/video_feed
  • Exemple d’utilisation: <img src="http://<BOARD_IP>:8000/api/video_feed">

🛠️ Guide du développeur (recommandations de production)

Compiler localement

bash
docker build -f docker/rk3576/yolox.dockerfile \
  -t rk3576-yolox:local src/rk3576_yolox

docker build -f docker/rk3588/yolox.dockerfile \
  -t rk3588-yolox:local src/rk3588_yolox

Entrées et sorties

Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.