Files
vision/README.md
2026-03-21 09:09:28 +01:00

3.5 KiB
Raw Blame History

Skinbase Vision Stack (CLIP + BLIP + YOLO + Qdrant) Dockerized FastAPI

This repository provides four standalone vision services (CLIP / BLIP / YOLO / Qdrant) and a Gateway API that can call them individually or together.

Services & Ports

  • gateway (exposed): https://vision.klevze.net
  • clip: internal only
  • blip: internal only
  • yolo: internal only
  • qdrant: vector DB (port 6333 exposed for direct access)
  • qdrant-svc: internal Qdrant API wrapper

Run

docker compose up -d --build

Health

curl https://vision.klevze.net/health

Universal analyze (ALL)

With URL

curl -X POST https://vision.klevze.net/analyze/all \
  -H "Content-Type: application/json" \
  -d '{"url":"https://files.skinbase.org/img/aa/bb/cc/md.webp","limit":5}'

With file upload (multipart)

curl -X POST https://vision.klevze.net/analyze/all/file \
  -F "file=@/path/to/image.webp" \
  -F "limit=5"

Individual services (via gateway)

CLIP tags

curl -X POST https://vision.klevze.net/analyze/clip -H "Content-Type: application/json" \
  -d '{"url":"https://files.skinbase.org/img/aa/bb/cc/md.webp","limit":5}'

CLIP tags (file)

curl -X POST https://vision.klevze.net/analyze/clip/file \
  -F "file=@/path/to/image.webp" \
  -F "limit=5"

BLIP caption

curl -X POST https://vision.klevze.net/analyze/blip -H "Content-Type: application/json" \
  -d '{"url":"https://files.skinbase.org/img/aa/bb/cc/md.webp","variants":3}'

BLIP caption (file)

curl -X POST https://vision.klevze.net/analyze/blip/file \
  -F "file=@/path/to/image.webp" \
  -F "variants=3" \
  -F "max_length=60"

YOLO detect

curl -X POST https://vision.klevze.net/analyze/yolo -H "Content-Type: application/json" \
  -d '{"url":"https://files.skinbase.org/img/aa/bb/cc/md.webp","conf":0.25}'

YOLO detect (file)

curl -X POST https://vision.klevze.net/analyze/yolo/file \
  -F "file=@/path/to/image.webp" \
  -F "conf=0.25"

Vector DB (Qdrant) via gateway

Store image embedding by URL

curl -X POST https://vision.klevze.net/vectors/upsert \
  -H "Content-Type: application/json" \
  -d '{"url":"https://files.skinbase.org/img/aa/bb/cc/md.webp","id":"img-001","metadata":{"category":"wallpaper"}}'

Store image embedding by file upload

curl -X POST https://vision.klevze.net/vectors/upsert/file \
  -F "file=@/path/to/image.webp" \
  -F 'id=img-002' \
  -F 'metadata_json={"category":"photo"}'

Search similar images by URL

curl -X POST https://vision.klevze.net/vectors/search \
  -H "Content-Type: application/json" \
  -d '{"url":"https://files.skinbase.org/img/aa/bb/cc/md.webp","limit":5}'

Search similar images by file upload

curl -X POST https://vision.klevze.net/vectors/search/file \
  -F "file=@/path/to/image.webp" \
  -F "limit=5"

List collections

curl https://vision.klevze.net/vectors/collections

Get collection info

curl https://vision.klevze.net/vectors/collections/images

Delete points

curl -X POST https://vision.klevze.net/vectors/delete \
  -H "Content-Type: application/json" \
  -d '{"ids":["img-001","img-002"]}'

Notes

  • This is a starter scaffold. Models are loaded at service startup.
  • Qdrant data is persisted via a Docker volume (qdrant_data).
  • For production: add auth, rate limits, and restrict gateway exposure (private network).
  • GPU: you can add NVIDIA runtime later (compose profiles) if needed.