Introduce the app/services/vision/ module with ABC interfaces, ONNX Runtime backend, model registry, and per-task implementations: - OpenCLIP ViT-B/32 embedder (image + text, 512-d) - RapidOCR engine (PP-OCRv4 via ONNX, no PaddlePaddle) - YOLOv8n object detector (raw ONNX, no ultralytics runtime) - YuNet + SFace face processor (Apache 2.0, opencv_zoo, 128-d) - DBSCAN face clustering helper Add VisionSettings to config (mulita.yml + Pydantic), bootstrap_models.py for first-boot weight downloads, models_data Docker volume, and ROCm backend stub for future GPU acceleration. No Celery tasks wired yet — models load but nothing invokes them. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
1001 B
Python
26 lines
1001 B
Python
"""
|
|
ROCm backend — GPU-accelerated inference for Radeon 760M-class hardware.
|
|
|
|
Stub: raises NotImplementedError on all factory methods. To enable,
|
|
set `vision.backend: rocm` in mulita.yml once ROCm support is implemented.
|
|
"""
|
|
from app.config import VisionSettings
|
|
from app.services.vision.base import Embedder, OCREngine, ObjectDetector, FaceProcessor
|
|
|
|
|
|
class ROCmBackend:
|
|
def __init__(self, vision_settings: VisionSettings):
|
|
self._settings = vision_settings
|
|
|
|
def create_embedder(self) -> Embedder:
|
|
raise NotImplementedError("ROCm backend not yet implemented — use 'onnx'")
|
|
|
|
def create_ocr(self) -> OCREngine:
|
|
raise NotImplementedError("ROCm backend not yet implemented — use 'onnx'")
|
|
|
|
def create_detector(self) -> ObjectDetector:
|
|
raise NotImplementedError("ROCm backend not yet implemented — use 'onnx'")
|
|
|
|
def create_face_processor(self) -> FaceProcessor:
|
|
raise NotImplementedError("ROCm backend not yet implemented — use 'onnx'")
|