CV / YOLO-World
YOLO-World
Change detection categories at runtime with English natural-language prompts without rebuilding the model.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
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 8000REST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "yolo-world-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'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 busentraffic lightworden aanbevolen.
Modelinformatie
| Component | Bestand |
|---|---|
| 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
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 8000RK3588
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 8000Open 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
| Argument | Standaard | Beschrijving |
|---|---|---|
--platform | Vereist | Doel-NPU, rk3576 of rk3588. |
--model_path | Vereist | Gekwantiseerde YOLO-World-detector. |
--text_model | model/clip_text_fp16.rknn | CLIP-tekstencoder voor dynamische prompts. |
--text_features | model/coco_text_outp.npy | Initiële (1,80,512) COCO-kenmerken. |
--vocab_path | model/clip_vocab.txt | Offline CLIP BPE-woordenlijst. |
--class_path | Ingebouwde COCO-labels | Labels die overeenkomen met de initiële kenmerkrijen. |
--prompts | 80 COCO-klassen | Initiële promptgroepen, gescheiden door verticale strepen. |
--video_path | Geen | Lokale MP4 in een lus; overschrijft de camera. |
--camera_id | 1 | Camera-index; -1 schakelt alleen analyse in. |
--host / --port | 0.0.0.0 / 8000 | Serviceadres en poort. |
API’s voor prompts en voorspellingen
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
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_worldInvoer en uitvoer
Input: image, video frame, or camera frame plus up to 80 prompts. Output: prompt-matched boxes and confidence scores.