CV / YOLO-World

YOLO-World

Change detection categories at runtime with English natural-language prompts without rebuilding the model.

4 downloads
Precisie
INT8 detector / FP16 text encoder

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Implementeren
sudo docker run --rm --privileged -p 8000:8000 \
  -v /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolo_world:latest \
  python3 web_detection.py --platform rk3576 \
  --model_path /app/model/yolo_world_v2s_i8.rknn \
  --text_model /app/model/clip_text_fp16.rknn \
  --text_features /app/model/coco_text_outp.npy \
  --vocab_path /app/model/clip_vocab.txt --class_path /app/model/detect_classes.txt \
  --camera_id -1 --host 0.0.0.0 --port 8000

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

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

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

Modeldetails

YOLO-World op reComputer RK3576 en RK3588

Dit project biedt open-vocabulaire detectie uit reComputer-RK-CV. Zowel de INT8 YOLO-World-detector als de FP16 CLIP-tekstencoder draait op de NPU, zodat categorieën kunnen veranderen zonder de detector opnieuw te bouwen.

Het meegeleverde CLIP-model is voornamelijk met Engels getraind. Korte Engelse naamwoordgroepen zoals person, red bus en traffic light worden aanbevolen.

Modelinformatie

ComponentBestand
Detector/app/model/yolo_world_v2s_i8.rknn
Tekstencoder/app/model/clip_text_fp16.rknn
Initiële COCO-kenmerken/app/model/coco_text_outp.npy
BPE-woordenlijst/app/model/clip_vocab.txt
Standaardlabels/app/model/detect_classes.txt

De service uitvoeren

Gebruik de image die bij het bord past en stel --platform op dezelfde waarde in.

RK3576

bash
sudo docker run --rm --privileged -p 8000:8000 \
  -v /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolo_world:latest \
  python3 web_detection.py --platform rk3576 \
  --model_path /app/model/yolo_world_v2s_i8.rknn \
  --text_model /app/model/clip_text_fp16.rknn \
  --text_features /app/model/coco_text_outp.npy \
  --vocab_path /app/model/clip_vocab.txt \
  --class_path /app/model/detect_classes.txt \
  --video_path /app/video/test.mp4 --host 0.0.0.0 --port 8000

RK3588

bash
sudo docker run --rm --privileged -p 8000:8000 \
  -v /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolo_world:latest \
  python3 web_detection.py --platform rk3588 \
  --model_path /app/model/yolo_world_v2s_i8.rknn \
  --text_model /app/model/clip_text_fp16.rknn \
  --text_features /app/model/coco_text_outp.npy \
  --vocab_path /app/model/clip_vocab.txt \
  --class_path /app/model/detect_classes.txt \
  --video_path /app/video/test.mp4 --host 0.0.0.0 --port 8000

Open http://<BOARD_IP>:8000. Gebruik --prompts "person|red bus|bicycle" om opstartprompts in te stellen. Er worden 1 tot 80 niet-lege, met verticale strepen gescheiden prompts ondersteund; elke prompt wordt afgekapt op 20 CLIP-tokens.

Opstartargumenten

ArgumentStandaardBeschrijving
--platformVereistDoel-NPU, rk3576 of rk3588.
--model_pathVereistGekwantiseerde YOLO-World-detector.
--text_modelmodel/clip_text_fp16.rknnCLIP-tekstencoder voor dynamische prompts.
--text_featuresmodel/coco_text_outp.npyInitiële (1,80,512) COCO-kenmerken.
--vocab_pathmodel/clip_vocab.txtOffline CLIP BPE-woordenlijst.
--class_pathIngebouwde COCO-labelsLabels die overeenkomen met de initiële kenmerkrijen.
--prompts80 COCO-klassenInitiële promptgroepen, gescheiden door verticale strepen.
--video_pathGeenLokale MP4 in een lus; overschrijft de camera.
--camera_id1Camera-index; -1 schakelt alleen analyse in.
--host / --port0.0.0.0 / 8000Serviceadres en poort.

API’s voor prompts en voorspellingen

bash
curl -X POST "http://<BOARD_IP>:8000/api/prompts" \
  -H "Content-Type: application/json" \
  -d '{"text":"person|red bus|traffic light"}'

curl -X POST "http://<BOARD_IP>:8000/api/models/yolo_world/predict" \
  -F "file=@bus.jpg" -F "text=person|bus|red vehicle" \
  -F "conf=0.25" -F "iou=0.45"

Het veld text wijzigt prompts alleen voor die voorspelling; /api/prompts wijzigt de actieve streamprompts. Promptembeddings worden in het geheugen gecachet. Dynamische embeddings vullen de eerste rijen van de vaste tekstinvoer met 80 rijen; opvulrijen worden bij nabewerking genegeerd.

GET /api/prompts leest de actieve prompts. Ook zijn endpoints voor status, drempelconfiguratie, MJPEG, video-upload, asynchrone analyse, status, lijst en download beschikbaar. Door de offline BPE-woordenlijst downloadt de runtime geen tokenizerbestanden van Hugging Face.

Beperkingen bij modelvervanging

Detector en tekstencoder vormen een afgestemde pipeline. Vervangingen moeten de tekstkenmerkinvoer met 80 rijen, de breedte van de CLIP-embedding, compatibele tokenisatie en de verwachte uitvoerindeling behouden.

Lokaal bouwen

bash
docker build -f docker/rk3576/yolo_world.dockerfile \
  -t rk3576-yolo-world:local src/rk3576_yolo_world

docker build -f docker/rk3588/yolo_world.dockerfile \
  -t rk3588-yolo-world:local src/rk3588_yolo_world

Invoer en uitvoer

Input: image, video frame, or camera frame plus up to 80 prompts. Output: prompt-matched boxes and confidence scores.