CV / YOLO-World
YOLO-World
Open-vocabulary YOLO-World detection with RKNN detector and CLIP text encoder.
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
Snel aan de slag
1. Docker installeren
Voer de volgende opdrachten op het ontwikkelbord uit om Docker te installeren:
# 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 docker2. Het project uitvoeren (één opdracht, voorbeeld in twee modi)
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 |
Stap A: Images ophalen
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolo_world:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolo_world:latestStap B: Met één klik uitvoeren
Gebruik de image die bij het bord past en stel --platform op dezelfde waarde in.
Voor 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 8000Voor RK3588:
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.
🔌 API-documentatie
1. Promptconfiguratie
Endpoint: POST /api/prompts
Aanvraagparameters (JSON):
text: Eén tot 80 niet-lege promptzinnen, gescheiden door|.
Gebruiksvoorbeelden:
curl -X POST "http://<BOARD_IP>:8000/api/prompts" \
-H "Content-Type: application/json" \
-d '{"text":"person|red bus|traffic light"}'
2. Interface voor modelinferentie (Predict)
Endpoint: POST /api/models/yolo_world/predict
Aanvraagparameters (Multipart/Form-Data):
Beschikbaar zijn file, video, timestamp, realtime, conf en iou; de standaarddrempels zijn 0.25 en 0.45.
Gebruiksvoorbeelden:
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.
3. Interface voor systeemconfiguratie (Config)
GET /api/config / POST /api/config.
4. Opdrachtregelargumenten
| 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. |
Realtime videostream (Video Feed)
Haal de nieuwste geannoteerde MJPEG-stream op voor de browserweergave:
- Endpoint:
GET /api/video_feed - Voorbeeldgebruik:
<img src="http://<BOARD_IP>:8000/api/video_feed">
🛠️ Ontwikkelaarshandleiding (aanbevelingen voor productie)
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.