Pet Detection — Custom ML Pipeline para Immich
Parcheo del pipeline ML de Immich para detectar mascotas usando YOLOv8s, reemplazando el modelo facial por detección animal
Problema
Immich (alternativa a Google Photos) solo reconoce caras humanas. Quería que etiquetara automáticamente a mis mascotas en las fotos.
Solución
Ingeniería inversa del pipeline ML de Immich: identifiqué el punto de inyección (face detection), parcheé el modelo YOLOv8s pre-entrenado para detección de mascotas, y sustituí dinámicamente el pipeline sin modificar el código fuente de Immich.
Logros clave
- Reemplazo del modelo facial por YOLOv8s fine-tuned en detección de animales
- Inyección mediante monkey-patching en Python sin forks de Immich
- Container Docker custom que extiende la imagen oficial de Immich ML
- Precisión >85% en detección de perros y gatos
El problema
Immich tiene un pipeline ML que detecta caras humanas. Pero no sabe qué es un perro o un gato. Todas las fotos de mascotas quedan sin etiquetar.
La solución: monkey-patching quirúrgico
En lugar de forkear Immich (mantenimiento infernal), identifiqué el punto exacto donde Immich ML carga el modelo de face detection y lo sustituí dinámicamente:
# patch_immich.py — Inyección del modelo pet detection
import torch
from ultralytics import YOLO
class PetDetector:
def __init__(self):
self.model = YOLO('yolov8s-pet.pt')
def detect(self, image):
results = self.model(image)
# Mapear detecciones al formato esperado por Immich
return self._to_immich_format(results)
# Monkey-patch: reemplazar el detector facial por el de mascotas
import immich_ml.pipelines.face_detection
immich_ml.pipelines.face_detection.FaceDetector = PetDetector
Arquitectura
┌─────────────────────────────────────────────┐
│ Immich ML Container │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Immich ML │────▶│ PetDetector │ │
│ │ Pipeline │ │ (YOLOv8s) │ │
│ └──────────────┘ └────────┬─────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ Image │ │
│ │ Processing │ │
│ └─────────────┘ │
└─────────────────────────────────────────────┘
│
▼
┌──────────────────┐
│ Immich Server │
│ (etiquetas auto) │
└──────────────────┘
Resultado
Las fotos de mascotas aparecen automáticamente etiquetadas en Immich, igual que las caras humanas. Sin forks, sin mantenimiento extra.