Drops face recognition, OCR, object detection, and semantic embeddings. The sole remaining vision task is a CLIP-based binary classifier (photography vs other); photos in "other" get needs_review=true so screenshots, documents, memes and scans can be triaged from a new filter pill in the UI. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
587 B
Python
26 lines
587 B
Python
"""
|
|
Abstract base classes for the vision backend.
|
|
|
|
The pipeline is now a single binary classifier: photography vs other.
|
|
Feature extraction is an internal detail of the classifier and is not
|
|
exposed as a separate service.
|
|
"""
|
|
from abc import ABC, abstractmethod
|
|
from dataclasses import dataclass
|
|
|
|
import numpy as np
|
|
|
|
|
|
@dataclass
|
|
class ClassificationResult:
|
|
label: str
|
|
confidence: float
|
|
|
|
|
|
class ContentClassifier(ABC):
|
|
"""Classifies an image into 'photography' or 'other'."""
|
|
|
|
@abstractmethod
|
|
def classify(self, image: np.ndarray) -> ClassificationResult:
|
|
...
|