Immich + cn-clip + RapidOCR + InsightFace
~~In futuro prevedo di migrare a ente-io/ente, poiché ho bisogno di s3 per archiviare le foto~~
ente ha ancora troppe poche funzionalità
Cambiato in utilizzo di juicedata/juicefs per montare s3
Introduzione al progetto
Questo progetto è una soluzione di potenziamento AI per il sistema di gestione foto Immich. Estende principalmente le funzionalità native di Immich tramite i seguenti componenti:
- inference-gateway: servizio gateway scritto in Go, responsabile dell'instradamento intelligente delle richieste di machine learning di Immich
- mt-photos-ai: servizio AI basato su Python e FastAPI, integra i modelli RapidOCR e cn-clip
- Estensione delle funzionalità Immich, inclusa la ricerca testo OCR e la rielaborazione dei dati AI su singoli media, ranking misto di vettori testo OCR e vettori CLIP
- Aggiunta di zhparser per la segmentazione cinese su PostgreSQL
Funzionalità principali
1. Riconoscimento e ricerca testo OCR
- Utilizza RapidOCR per il riconoscimento del testo nelle immagini
- Supporta il riconoscimento di testo misto cinese e inglese
- Implementa la ricerca basata sul contenuto testuale delle immagini
2. Elaborazione vettori immagine CLIP
- Implementa un matching immagine-testo più accurato in cinese tramite il modello cn-clip
- Supporta ricerca semantica, migliorando la precisione dei risultati
3. Rielaborazione dati AI su singolo media
- Supporta la rigenerazione dei dati OCR per singole immagini/video
- Supporta la rigenerazione dei vettori CLIP per singole immagini/video
- Fornisce la possibilità di aggiornamento manuale in caso di riconoscimento non accurato
Architettura di sistema
┌─────────────┐ ┌──────────────────┐ ┌───────────────┐
│ │ │ │ │ │
│ Immich │─────▶│ inference-gateway│─────▶│ Immich ML │
│ Server │ │ (Go网关) │ │ Server │
│ │ │ │ │ │
└─────────────┘ └──────────────────┘ └───────────────┘
│
│ OCR/CLIP请求
▼
┌──────────────────┐
│ │
│ mt-photos-ai │
│ (Python服务) │
│ │
└──────────────────┘
Dettagli dei componenti
inference-gateway
Servizio gateway scritto in Go, responsabilità principali:
- Riceve le richieste di machine learning da Immich
- In base al tipo di richiesta, inoltra le richieste OCR e CLIP al servizio mt-photos-ai
- Inoltra altre richieste di machine learning (come il riconoscimento facciale) al servizio di machine learning nativo di Immich
- Gestisce autenticazione e conversione dei formati dati
mt-photos-ai
Servizio AI scritto in Python e FastAPI, offre:
- API di riconoscimento testo OCR (basata su RapidOCR)
- API di elaborazione vettoriale CLIP (basata su cn-clip)
- Supporto per accelerazione GPU
Istruzioni di deploy
Requisiti ambientali
- Docker e Docker Compose
- GPU NVIDIA (opzionale, ma consigliata per accelerare l'elaborazione)
- Spazio di archiviazione sufficiente
Istruzioni di configurazione
- Configurazione di inference-gateway
IMMICH_API=http://localhost:3003 # Immich API地址
MT_PHOTOS_API=http://localhost:8060 # mt-photos-ai服务地址
MT_PHOTOS_API_KEY=mt_photos_ai_extra # API密钥
PORT=8080 # 网关监听端口
- Configurazione di mt-photos-ai
CLIP_MODEL=ViT-B-16 # CLIP模型名称
CLIP_DOWNLOAD_ROOT=./models/clip # 模型下载路径
DEVICE=cuda # 或 cpu,推理设备
HTTP_PORT=8060 # 服务监听端口
Passaggi di distribuzione
- Clona il repository:
git clone https://github.com/你的用户名/immich-all-in-one.git
cd immich-all-in-one
- Avviare il servizio:
docker-compose up -d
Istruzioni per l'uso
- Configurare Immich per utilizzare un servizio ML personalizzato
MACHINE_LEARNING_URL=http://inference-gateway:8080
- Utilizzo della ricerca OCR
- Utilizzare il prefisso
ocr:nella barra di ricerca di Immich per effettuare una ricerca OCR - Ad esempio:
ocr:fatturacercherà le foto che contengono la parola "fattura" nell'immagine - Rielaborazione dei dati AI di un singolo media
- Nella pagina dei dettagli della foto, cliccare sulle opzioni del menu
- Selezionare "Rigenera dati OCR" o "Rigenera vettori CLIP"
- Il sistema rielaborerà i dati AI di quella foto
Guida allo sviluppo
inference-gateway (Go)
Compilazione ed esecuzione:
cd inference-gateway
go build
./inference-gateway
mt-photos-ai (Python)
Impostazione dell'ambiente di sviluppo:
cd mt-photos-ai
pip install -r requirements.txt
python -m app.main
Licenza
Questo progetto è open source sotto licenza MIT.
Ringraziamenti
- Immich - Soluzione open source per il backup self-hosted di foto e video
- RapidOCR - Libreria OCR cross-platform basata su PaddleOCR
- cn-clip - Modello pre-addestrato di apprendimento contrastivo multimodale in cinese