CV / MobileSAM
MobileSAM
Segment objects using a box or foreground/background point prompts in the Web UI or REST API.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-mobilesam:latest \
python web_service.py --platform rk3576 --model_dir /app/model --camera_id -1 --host 0.0.0.0 --port 8000REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "mobilesam-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "mobilesam-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Modelldetails
MobileSAM auf reComputer RK3576 und RK3588
Diese Bereitstellung paketiert Mobile Segment Anything aus reComputer-RK-CV. Bildencoder und fester Zwei-Prompt-Decoder laufen beide als RKNN-Modelle.
Modellinformationen
| Komponente | Datei |
|---|---|
| Bildencoder | model/mobilesam_encoder.rknn |
| Prompt-Decoder | model/mobilesam_decoder.rknn |
| Eingabevorverarbeitung | 448 x 448 |
| Prompts | Box oder Vordergrund-/Hintergrundpunkte |
| Ausgabe | Maske, Index der gewählten Maske, Qualitätswert und Pixelanzahl |
Dienst starten
RK3576
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-mobilesam:latest \
python web_service.py --platform rk3576 --model_dir /app/model \
--camera_id -1 --host 0.0.0.0 --port 8000RK3588
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-mobilesam:latest \
python web_service.py --platform rk3588 --model_dir /app/model \
--camera_id -1 --host 0.0.0.0 --port 8000Öffnen Sie http://<BOARD_IP>:8000, laden Sie ein Bild hoch und zeichnen Sie eine Box oder setzen Sie Vordergrund-/Hintergrundpunkte. Der aktuelle Prompt wird bis zu einer Änderung für Bild-, Kamera-, lokale Video- und Uploadvideo-Inferenz gemeinsam verwendet.
Eingabemodi und Startargumente
| Argument | Standard | Beschreibung |
|---|---|---|
--platform | Erforderlich | rk3576 oder rk3588. |
--model_dir | model | Verzeichnis für Encoder, Decoder und Aufwärmbild. |
--camera_id | -1 | Kameraindex; -1 aktiviert nur Uploads. |
--video, --video_path | Kein Wert | Lokales Video in Schleife; überschreibt die Kamera. |
--host / --port | 0.0.0.0 / 8000 | Dienstadresse und Port. |
Die Weboberfläche unterstützt gezogene Box, positiven Punkt, negativen Punkt und Vollbild-Prompt. Änderungen wirken ohne Containerneustart auf nachfolgende Stream- und Uploadvideo-Frames.
REST API
Endpunkt: POST /api/models/mobilesam/predict
Die Multipart-Anfrage akzeptiert file, point_coords und point_labels. point_coords muss genau zwei Koordinaten im Quellbild enthalten. SAM-Labels sind 0 für einen negativen Punkt, 1 für einen positiven Punkt, 2 für die linke obere und 3 für die rechte untere Ecke.
curl -X POST "http://<BOARD_IP>:8000/api/models/mobilesam/predict" \
-F "file=@picture.jpg" \
-F 'point_coords=[[190,70],[460,280]]' \
-F 'point_labels=[2,3]'Die Laufzeit skaliert Prompt-Koordinaten zur Encodereingabe, führt Encoder und Decoder aus, wählt die angeforderte oder bestbewertete Maske und stellt sie im Quellbild wieder her. Zustands-, Konfigurations-, MJPEG- und asynchrone Videoschnittstellen sind ebenfalls verfügbar.
Die Antwort enthält iou_scores, selected_mask, mask_pixels und den wirksamen Prompt. GET /api/config liefert den persistenten Stream-Prompt; POST /api/config akzeptiert point_coords und point_labels, oder beide als null für Vollbildmodus. Allgemeine Werte threshold und topk ändern die Maskenauswahl nicht.
Hochgeladene Videos verwenden den beim Analysestart aktiven persistenten Prompt. Die Standardendpunkte /api/video/* bieten Upload, Analyse, Fortschritt, Liste und Download.
Encoder und Decoder sind Pipeline-Stufen und keine Größenvarianten. Beim Ersetzen eines Modells müssen beide Dateien kompatibel bleiben. Der Encoder erhält das Seitenverhältnis, skaliert die lange Seite auf 448 und füllt auf 448 x 448 auf; der feste Decoder erfordert genau zwei Prompt-Koordinaten und Labels.
Lokal bauen
docker build -f docker/rk3576/mobilesam.dockerfile \
-t rk3576-mobilesam:local src/rk3576_mobilesam
docker build -f docker/rk3588/mobilesam.dockerfile \
-t rk3588-mobilesam:local src/rk3588_mobilesamEingaben und Ausgaben
Input: image plus box or point prompts. Output: segmentation mask, mask score, and overlay.