Immich + cn-clip + RapidOCR + InsightFace
~~Toekomstige plannen om te migreren naar ente-io/ente, omdat ik s3 nodig heb voor het opslaan van foto's~~
ente heeft toch te weinig functionaliteit
Omschakelen naar het gebruik van juicedata/juicefs om s3 te mounten
Projectoverzicht
Dit project is een AI-capaciteiten uitbreidingsoplossing voor het Immich foto managementsysteem. De native functionaliteiten van Immich zijn uitgebreid met de volgende componenten:
- inference-gateway: Een gatewayservice geschreven in Go, verantwoordelijk voor het intelligent routeren van de machine learning verzoeken van Immich
- mt-photos-ai: Een AI-service gebaseerd op Python en FastAPI, integreert RapidOCR en het cn-clip model
- Functionaliteitsuitbreiding voor Immich, waaronder OCR tekstherkenning en zoeken, AI-herverwerking van enkele media, volledige OCR-tekst en CLIP-vector scoring en gemengde ranking
- Toevoeging van zhparser Chinese segmentatie aan PostgreSQL
Belangrijkste functionaliteiten
1. OCR Tekstherkenning en Zoeken
- Herken tekst in afbeeldingen met RapidOCR
- Ondersteunt gemengde Chinees-Engelse tekstdetectie
- Implementeert zoeken op basis van tekstinhoud in afbeeldingen
2. CLIP Afbeeldingsvectorverwerking
- Nauwkeurigere Chinese afbeelding-tekst matching op basis van het cn-clip model
- Ondersteunt semantisch zoeken voor een hogere zoeknauwkeurigheid
3. AI-herverwerking van enkele media
- Ondersteunt het opnieuw genereren van OCR-gegevens voor een enkele afbeelding/video
- Ondersteunt het opnieuw genereren van CLIP-vectorgegevens voor een enkele afbeelding/video
- Biedt handmatige verversingsmogelijkheid wanneer herkenningsresultaten onnauwkeurig zijn
Systeemarchitectuur
┌─────────────┐ ┌──────────────────┐ ┌───────────────┐
│ │ │ │ │ │
│ Immich │─────▶│ inference-gateway│─────▶│ Immich ML │
│ Server │ │ (Go网关) │ │ Server │
│ │ │ │ │ │
└─────────────┘ └──────────────────┘ └───────────────┘
│
│ OCR/CLIP请求
▼
┌──────────────────┐
│ │
│ mt-photos-ai │
│ (Python服务) │
│ │
└──────────────────┘
Componenten Gedetailleerd Uitgelegd
inference-gateway
Gateway-service geschreven in Go, met de volgende hoofdtaken:
- Ontvangen van machine learning-verzoeken van Immich
- Doorsturen van OCR- en CLIP-verzoeken naar de mt-photos-ai-service op basis van het type verzoek
- Doorsturen van andere machine learning-verzoeken (zoals gezichtsherkenning) naar de native machine learning-service van Immich
- Afhandelen van authenticatie en gegevensformaatconversie
mt-photos-ai
AI-service geschreven in Python en FastAPI, biedt:
- OCR-tekstherkennings-API (gebaseerd op RapidOCR)
- CLIP-vectorverwerkings-API (gebaseerd op cn-clip)
- Ondersteuning voor GPU-versnelling
Deploy-instructies
Vereisten voor de omgeving
- Docker en Docker Compose
- NVIDIA GPU (optioneel, maar aanbevolen voor snellere verwerking)
- Voldoende opslagruimte
Configuratie-instructies
- inference-gateway configuratie
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 # 网关监听端口
- mt-photos-ai configuratie
CLIP_MODEL=ViT-B-16 # CLIP模型名称
CLIP_DOWNLOAD_ROOT=./models/clip # 模型下载路径
DEVICE=cuda # 或 cpu,推理设备
HTTP_PORT=8060 # 服务监听端口
Implementatiestappen
- Repository klonen:
git clone https://github.com/你的用户名/immich-all-in-one.git
cd immich-all-in-one
- Start de service:
docker-compose up -d
Gebruiksaanwijzing
- Stel Immich in om een aangepaste ML-service te gebruiken
MACHINE_LEARNING_URL=http://inference-gateway:8080
- OCR-zoekfunctie gebruiken
- Gebruik de prefix
ocr:in de zoekbalk van Immich om op OCR te zoeken - Bijvoorbeeld:
ocr:factuurzoekt naar foto's met het woord "factuur" in de afbeelding - AI-gegevens van één media-item opnieuw verwerken
- Ga naar de detailpagina van de foto en klik op het menu
- Kies "OCR-gegevens opnieuw genereren" of "CLIP-vector opnieuw genereren"
- Het systeem zal de AI-gegevens van deze foto opnieuw verwerken
Ontwikkelaarsgids
inference-gateway (Go)
Compileren en uitvoeren:
cd inference-gateway
go build
./inference-gateway
mt-photos-ai (Python)
Instellen van de ontwikkelomgeving:
cd mt-photos-ai
pip install -r requirements.txt
python -m app.main
Licentie
Dit project is open source onder de MIT-licentie.
Dankbetuigingen
- Immich - Open source, zelfgehoste foto- en videoback-upoplossing
- RapidOCR - Cross-platform OCR-bibliotheek gebaseerd op PaddleOCR
- cn-clip - Chinees multimodaal contrastief leren pre-trainingsmodel