Immich + cn-clip + RapidOCR + InsightFace
~~Rencana selanjutnya migrasi ke ente-io/ente, karena saya membutuhkan s3 untuk menyimpan foto~~
ente masih terlalu minim fitur
Diganti menggunakan juicedata/juicefs untuk mounting s3
Ringkasan Proyek
Proyek ini adalah solusi peningkatan kemampuan AI untuk sistem manajemen foto Immich. Fungsi native Immich diperluas melalui komponen berikut:
- inference-gateway: Layanan gateway berbasis Go, bertanggung jawab untuk pembagian cerdas permintaan machine learning dari Immich
- mt-photos-ai: Layanan AI berbasis Python dan FastAPI, terintegrasi dengan RapidOCR dan model cn-clip
- Perluasan fungsi Immich, termasuk pencarian teks OCR, pemrosesan ulang data AI media tunggal, pengurutan campuran vektor fulltext OCR dan skor vektor CLIP
- PostgreSQL ditambah dengan zhparser untuk segmentasi kata bahasa Mandarin
Fitur Utama
1. Pengenalan dan Pencarian Teks OCR
- Menggunakan RapidOCR untuk mengenali teks dalam gambar
- Mendukung pengenalan teks campuran bahasa Mandarin dan Inggris
- Mewujudkan fungsi pencarian berdasarkan konten teks pada gambar
2. Pemrosesan Vektor Gambar CLIP
- Berdasarkan model cn-clip untuk pencocokan gambar-teks bahasa Mandarin yang lebih akurat
- Mendukung pencarian semantik, meningkatkan akurasi pencarian
3. Pemrosesan Ulang Data AI Media Tunggal
- Mendukung regenerasi data OCR pada gambar/video tunggal
- Mendukung regenerasi data vektor CLIP pada gambar/video tunggal
- Memberikan kemampuan refresh manual jika hasil pengenalan tidak akurat
Arsitektur Sistem
┌─────────────┐ ┌──────────────────┐ ┌───────────────┐
│ │ │ │ │ │
│ Immich │─────▶│ inference-gateway│─────▶│ Immich ML │
│ Server │ │ (Go网关) │ │ Server │
│ │ │ │ │ │
└─────────────┘ └──────────────────┘ └───────────────┘
│
│ OCR/CLIP请求
▼
┌──────────────────┐
│ │
│ mt-photos-ai │
│ (Python服务) │
│ │
└──────────────────┘
Komponen Penjelasan Detail
inference-gateway
Layanan gateway yang ditulis dengan bahasa Go, tugas utamanya:
- Menerima permintaan machine learning dari Immich
- Meneruskan permintaan OCR dan CLIP ke layanan mt-photos-ai sesuai jenis permintaan
- Meneruskan permintaan machine learning lain (seperti pengenalan wajah) ke layanan machine learning asli Immich
- Menangani otentikasi dan konversi format data
mt-photos-ai
Layanan AI yang ditulis dengan Python dan FastAPI, menyediakan:
- API pengenalan teks OCR (berbasis RapidOCR)
- API pemrosesan vektor CLIP (berbasis cn-clip)
- Mendukung akselerasi GPU
Petunjuk Deploy
Persyaratan Lingkungan
- Docker dan Docker Compose
- NVIDIA GPU (opsional, tetapi disarankan untuk mempercepat pemrosesan)
- Ruang penyimpanan yang cukup
Petunjuk Konfigurasi
- Konfigurasi 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 # 网关监听端口
- Konfigurasi mt-photos-ai
CLIP_MODEL=ViT-B-16 # CLIP模型名称
CLIP_DOWNLOAD_ROOT=./models/clip # 模型下载路径
DEVICE=cuda # 或 cpu,推理设备
HTTP_PORT=8060 # 服务监听端口
Langkah-langkah Deploy
- Klon repositori:
git clone https://github.com/你的用户名/immich-all-in-one.git
cd immich-all-in-one
- Memulai layanan:
docker-compose up -d
Petunjuk Penggunaan
- Konfigurasikan Immich untuk menggunakan layanan ML kustom
MACHINE_LEARNING_URL=http://inference-gateway:8080
- Penggunaan Pencarian OCR
- Gunakan awalan
ocr:di bilah pencarian Immich untuk melakukan pencarian OCR - Contoh:
ocr:invoiceakan mencari foto yang mengandung kata "invoice" di dalam gambar - Pemrosesan Ulang Data AI pada Media Tunggal
- Pada halaman detail foto, klik opsi menu
- Pilih "Regenerasi Data OCR" atau "Regenerasi Vektor CLIP"
- Sistem akan memproses ulang data AI untuk foto tersebut
Panduan Pengembangan
inference-gateway (Go)
Kompilasi dan jalankan:
cd inference-gateway
go build
./inference-gateway
mt-photos-ai (Python)
Pengaturan lingkungan pengembangan:
cd mt-photos-ai
pip install -r requirements.txt
python -m app.main
Lisensi
Proyek ini bersifat open source berdasarkan Lisensi MIT.
Penghargaan
- Immich - Solusi pencadangan foto dan video self-hosted open source
- RapidOCR - Pustaka OCR lintas platform berbasis PaddleOCR
- cn-clip - Model pra-latih pembelajaran perbandingan multimodal bahasa Tiongkok