CV / MobileSAM
MobileSAM
Segment objects using a box or foreground/background point prompts in the Web UI or REST API.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
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
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
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())Modeldetails
MobileSAM op reComputer RK3576 en RK3588
Deze implementatie verpakt Mobile Segment Anything uit reComputer-RK-CV. De afbeeldingsencoder en vaste decoder met twee prompts draaien beide als RKNN-modellen.
Modelinformatie
| Component | Bestand |
|---|---|
| Afbeeldingsencoder | model/mobilesam_encoder.rknn |
| Promptdecoder | model/mobilesam_decoder.rknn |
| Voorverwerking van invoer | 448 x 448 |
| Prompts | Vak of voorgrond-/achtergrondpunten |
| Uitvoer | Masker, index van geselecteerd masker, kwaliteitsscore en aantal pixels |
De service uitvoeren
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 8000Open http://<BOARD_IP>:8000 om een afbeelding te uploaden en een vak te tekenen of voorgrond-/achtergrondpunten toe te voegen. De huidige prompt wordt gedeeld door beeld-, camera-, lokale-video- en uploadvideo-inferentie totdat deze wordt gewijzigd.
Invoermodi en opstartargumenten
| Argument | Standaard | Beschrijving |
|---|---|---|
--platform | Vereist | rk3576 of rk3588. |
--model_dir | model | Map voor encoder, decoder en opwarmingsafbeelding. |
--camera_id | -1 | Camera-index; -1 schakelt alleen uploads in. |
--video, --video_path | Geen | Lokale video in een lus; overschrijft de camera. |
--host / --port | 0.0.0.0 / 8000 | Serviceadres en poort. |
De webinterface ondersteunt een getekend vak, positief punt, negatief punt en prompt voor de volledige afbeelding. Een promptwijziging beïnvloedt volgende stream- en uploadvideoframes zonder de container opnieuw te starten.
REST API
Endpoint: POST /api/models/mobilesam/predict
Het multipart-verzoek accepteert file, point_coords en point_labels. point_coords moet exact twee coördinaten in de bronafbeelding bevatten. SAM-labels zijn 0 voor een negatief punt, 1 voor een positief punt, 2 voor de linkerbovenhoek en 3 voor de rechteronderhoek.
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]'De runtime schaalt promptcoördinaten naar de encoderinvoer, voert encoder en decoder uit, selecteert het gevraagde of best scorende masker en herstelt het op de bronafbeelding. Ook status-, configuratie-, MJPEG- en asynchrone video-interfaces zijn beschikbaar.
Het antwoord bevat iou_scores, selected_mask, mask_pixels en de effectieve prompt. GET /api/config geeft de blijvende streamprompt terug; POST /api/config accepteert point_coords en point_labels, of beide als null om volledige-afbeeldingsmodus te herstellen. Algemene waarden threshold en topk veranderen de maskerselectie niet.
Geüploade video’s gebruiken de blijvende prompt die actief is wanneer de analyse start. De standaardendpoints /api/video/* bieden upload, analyse, voortgang, lijst en download.
Encoder en decoder zijn pipelinefasen, geen alternatieve modelgroottes. Beide bestanden moeten compatibel blijven wanneer een model wordt vervangen. De encoder behoudt de beeldverhouding, schaalt de lange zijde naar 448 en vult aan tot 448 x 448; de vaste decoder vereist exact twee promptcoördinaten en labels.
Lokaal bouwen
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_mobilesamInvoer en uitvoer
Input: image plus box or point prompts. Output: segmentation mask, mask score, and overlay.