Volver a proyectos
2026 · ML & IA · Activo

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

Python YOLOv8 PyTorch Docker ONNX Immich Código

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.