docs: add imajViewer2 project analysis report (AI image manipulation + video)
This commit is contained in:
1 parent
ae0a32543c
commit
3d59617930
1 file changed
+316
@@ -0,0 +1,316 @@
|
|||||||
|
# imajViewer2 — AI Görüntü Manipülatör Viewer Projesi
|
||||||
|
|
||||||
|
## 1. Proje Vizyonu ve Kapsam
|
||||||
|
|
||||||
|
imajViewer2, basit bir görüntü izleyicisini AI tabanlı görüntü manipülasyon aracı ile birleştiren modern masaüstü uygulaması olarak tasarlanmıştır. Kullanıcı bir resim dosyasına çift tıklayarak açar ve doğrudan uygulama içinden AI ile manipülasyon yapabilir.
|
||||||
|
|
||||||
|
### Temel Özellikler
|
||||||
|
- **Resim Açma ve Görüntüleme:** İmge izleyici özellikleri korunur (zoom, pan, fit, fill)
|
||||||
|
- **Prompt Tabanlı Manipülasyon:** AI ile metin komutlarıyla görüntü düzenleme
|
||||||
|
- **Model Seçimi:** Kullanıcı farklı AI modellerini seçebilmeli
|
||||||
|
- **img2img:** Mevcut görüntüyü AI ile dönüştürme
|
||||||
|
- **txt2img:** Metinden yeni görüntü oluşturma
|
||||||
|
- **Mask-based Inpainting:** Belirli alanları maskeleyip doldurma/düzelme
|
||||||
|
- **Image-to-Video:** Statik görüntüyü videoya dönüştürme
|
||||||
|
- **Video Oynatma:** Dönüştürülen videoların uygulama içinde oynatılması
|
||||||
|
|
||||||
|
## 2. Mimari Tasarım
|
||||||
|
|
||||||
|
### Client-Server Model
|
||||||
|
Uygulama iki bileşenden oluşacaktır:
|
||||||
|
|
||||||
|
```
|
||||||
|
imajViewer2 (Flutter Desktop Client)
|
||||||
|
├── UI: Görüntü izleyici + manipülasyon paneli
|
||||||
|
├── Video Player: media_kit backend
|
||||||
|
├── Model Yönetimi: Kullanıcı tercihleri
|
||||||
|
└── API İstemcisi: AI backend ile iletişim
|
||||||
|
|
||||||
|
AI Backend (Separate Process/Server)
|
||||||
|
├── Local: GPU Server'de çalışan servis
|
||||||
|
├── Remote: Segmind/OpenAI API'leri
|
||||||
|
└── Orchestration: Workflow yönetimi
|
||||||
|
```
|
||||||
|
|
||||||
|
### Avantajları
|
||||||
|
- Platform bağımsız AI backend
|
||||||
|
- GPU kaynaklarını optimize şekilde kullanma
|
||||||
|
- Birden fazla istemcinin aynı backend'i kullanması
|
||||||
|
|
||||||
|
## 3. AI Backend Seçenekleri
|
||||||
|
|
||||||
|
### 3.1 Yerel AI Servisleri
|
||||||
|
|
||||||
|
#### Seçenek A: ComfyUI
|
||||||
|
**Avantajları:**
|
||||||
|
- Açık kaynak, tamamen özelleştirilebilir
|
||||||
|
- Güçlü workflow sistemi (node-based)
|
||||||
|
- Geniş model desteği (Stable Diffusion, ControlNet, etc.)
|
||||||
|
- REST API desteği
|
||||||
|
- Yerel GPU üzerinde çalışır
|
||||||
|
|
||||||
|
**Dezavantajları:**
|
||||||
|
- Kurulum karmaşık
|
||||||
|
- GPU belleği gereksinimi yüksek
|
||||||
|
- Workflow JSON'ları öğrenme eğrisi
|
||||||
|
|
||||||
|
**Entegrasyon Yöntemi:**
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8188/prompt \
|
||||||
|
-d '{"workflow": {"prompt": {"text": "A cat sitting on a chair"}}}'
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Seçenek B: InvokeAI
|
||||||
|
**Avantajları:**
|
||||||
|
- Web tabanlı arayüz, daha kullanıcı dostu
|
||||||
|
- Yerleşik API endpoint'leri
|
||||||
|
- Kompozisyon odaklı araçlar
|
||||||
|
|
||||||
|
**Dezavantajları:**
|
||||||
|
- Daha az esnek workflow desteği
|
||||||
|
- GPU gereksinimleri
|
||||||
|
|
||||||
|
#### Seçenek C: Local API Server (Python)
|
||||||
|
```python
|
||||||
|
from transformers import DiffusionPipeline
|
||||||
|
|
||||||
|
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-xl-base-1.0")
|
||||||
|
image = pipeline(prompt="A photo of a astronaut").images[0]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Avantajları:**
|
||||||
|
- Tamamen özelleştirilebilir
|
||||||
|
- API endpoint'lerini uygulama için optimize etmek mümkün
|
||||||
|
- Model yükleme/değiştirme esnekliği
|
||||||
|
|
||||||
|
### 3.2 Bulut API'leri
|
||||||
|
|
||||||
|
#### Seçenek A: Segmind
|
||||||
|
**Avantajları:**
|
||||||
|
- Kullanıcı zaten Segmind API'sini kullanıyor
|
||||||
|
- Güçlü img2img ve inpainting modelleri
|
||||||
|
- Uygun fiyatlı (img/image: $0.001-$0.0072)
|
||||||
|
- GPU zaman tabanlı fiyatlandırma
|
||||||
|
|
||||||
|
**Model desteği:**
|
||||||
|
- SDXL inpainting
|
||||||
|
- ControlNet
|
||||||
|
- Flux Dev/Schnell
|
||||||
|
- Upscale
|
||||||
|
- Background removal
|
||||||
|
|
||||||
|
**Entegrasyon:**
|
||||||
|
```bash
|
||||||
|
curl -X POST https://api.segmind.com/v2/predictions \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "x-api-key: $API_KEY" \
|
||||||
|
-d '{"input": {"prompt": "Turn this photo into anime style", "image": "<base64>"}}'
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Seçenek B: OpenAI Images API
|
||||||
|
- DALL-E 3 img2img
|
||||||
|
- Çok basit API
|
||||||
|
- Daha pahalı (~$0.04/image)
|
||||||
|
|
||||||
|
### 3.3 Hibrit Yaklaşım (Önerilen)
|
||||||
|
- Yerel GPU üzerinde ComfyUI veya özel API server
|
||||||
|
- API'ye istenilen model dinamik olarak yüklenir
|
||||||
|
- Kullanıcı farklı modelleri ayarlardan seçer
|
||||||
|
|
||||||
|
## 4. Video Oynatma Entegrasyonu
|
||||||
|
|
||||||
|
### Teknik Çözüm
|
||||||
|
Flutter desktop'da video oynatma için `media_kit` paketi kullanılmalıdır:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
dependencies:
|
||||||
|
media_kit: ^1.2.0
|
||||||
|
media_kit_libmpv: ^1.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux Gereksinimi:**
|
||||||
|
```bash
|
||||||
|
sudo apt install libmpv-dev mpv
|
||||||
|
```
|
||||||
|
|
||||||
|
### Video Oynatıcı Özellikleri
|
||||||
|
- Fullscreen desteği
|
||||||
|
- Playback kontrol (play/pause, seek, volume)
|
||||||
|
- Keyboard shortcuts
|
||||||
|
- Looping
|
||||||
|
- Subtitle desteği (gelecekte)
|
||||||
|
|
||||||
|
### Image-to-Video Backend
|
||||||
|
**Yerel GPU'de çalışan model:**
|
||||||
|
- SkyReels-V3 (A2V-19B) - Referans görüntüden video
|
||||||
|
- HunyuanVideo-1.5 (FP8, Turbo)
|
||||||
|
- Wan2.x modelleri
|
||||||
|
|
||||||
|
**Bulut Alternatifi:**
|
||||||
|
- Skywork API
|
||||||
|
- OpenAI Image API (video feature)
|
||||||
|
|
||||||
|
## 5. Kullanıcı Deneyimi Tasarımı
|
||||||
|
|
||||||
|
### Arayüz Organizasyonu
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Title Bar: [app name] [model selector] [settings] │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ IMAGE AREA │
|
||||||
|
│ (zoom, pan, fit) │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ [img2img] [txt2img] [inpaint] [video] [model: SDXL] │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ Prompt: [Enter your prompt here...] │
|
||||||
|
│ [Generate] [Clear] │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ Result: [Generated image preview] │
|
||||||
|
│ [Accept] [Regenerate] [Save] │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Özellik Detayları
|
||||||
|
|
||||||
|
#### Model Seçimi
|
||||||
|
Ayarlarda kullanıcının seçebileceği model seçenekleri:
|
||||||
|
- SDXL Base
|
||||||
|
- SDXL Turbo
|
||||||
|
- ControlNet (pose/edge/depth)
|
||||||
|
- Inpainting modelleri
|
||||||
|
- Image-to-Video modelleri
|
||||||
|
|
||||||
|
#### img2img Akışı
|
||||||
|
1. Kullanıcı mevcut görüntüyü seçer
|
||||||
|
2. Prompt yazılır
|
||||||
|
3. Model seçilir
|
||||||
|
4. Generate butonu
|
||||||
|
5. Sonuç görüntülenir
|
||||||
|
6. Accept veya regenerate seçeneği
|
||||||
|
|
||||||
|
#### Inpainting Akışı
|
||||||
|
1. Kullanıcı mask tool'ünü seçer
|
||||||
|
2. Görüntüde maske çizer
|
||||||
|
3. Prompt yazılır ("Replace with red flowers")
|
||||||
|
4. Generate
|
||||||
|
5. Sonuçta maske alanı değiştirilir
|
||||||
|
|
||||||
|
#### Image-to-Video Akışı
|
||||||
|
1. Görüntü seçilir
|
||||||
|
2. Video parametreleri (süre, hareket tipi)
|
||||||
|
3. Generate
|
||||||
|
4. Video player'da sonuç oynatılır
|
||||||
|
5. Save video
|
||||||
|
|
||||||
|
## 6. Teknik Gereksinimler
|
||||||
|
|
||||||
|
### AI Backend Server
|
||||||
|
- GPU: RTX 3090 veya 4090 (24GB VRAM önerilir)
|
||||||
|
- RAM: 32GB+
|
||||||
|
- Disk: 500GB+ (model depolama için)
|
||||||
|
- Network: GPU server'dan erişilebilir
|
||||||
|
|
||||||
|
### Flutter Client
|
||||||
|
- Dart SDK
|
||||||
|
- platform_channel'ları (video player için)
|
||||||
|
- HTTP istemcisi (AI API ile iletişim)
|
||||||
|
- State management (Riverpod veya Provider)
|
||||||
|
|
||||||
|
### Model Yönetimi
|
||||||
|
- Ayarlardan kullanıcı model seçer
|
||||||
|
- Backend'de aktif model değiştirilir
|
||||||
|
- Farklı modeller farklı task'ler için seçilebilir
|
||||||
|
|
||||||
|
## 7. Geliştirme Fazları
|
||||||
|
|
||||||
|
### Faz 1: Temel Yapı
|
||||||
|
- Flutter uygulaması iskeleti
|
||||||
|
- AI backend API server'ı (ComfyUI veya özel)
|
||||||
|
- img2img endpoint
|
||||||
|
- Basit model seçimi UI
|
||||||
|
|
||||||
|
### Faz 2: Özellikler
|
||||||
|
- txt2img
|
||||||
|
- img2img
|
||||||
|
- Model seçimi arayüzü
|
||||||
|
- Ayarlar sistemi
|
||||||
|
|
||||||
|
### Faz 3: Gelişmiş Özellikler
|
||||||
|
- Mask tool (inpainting)
|
||||||
|
- Video oynatma (media_kit)
|
||||||
|
- Image-to-video
|
||||||
|
|
||||||
|
### Faz 4: Optimizasyon ve UX
|
||||||
|
- Workflow optimizasyonu
|
||||||
|
- Kullanıcı deneyimi iyileştirmeleri
|
||||||
|
- Hata yönetimi
|
||||||
|
- Performance tuning
|
||||||
|
|
||||||
|
## 8. Riskler ve Zorluklar
|
||||||
|
|
||||||
|
### AI Model Yönetimi
|
||||||
|
- GPU belleği kısıtlamaları (model yükleme/değiştirme)
|
||||||
|
- Model yükleme zamanı
|
||||||
|
- Farklı modeller farklı formatlar gerektirir
|
||||||
|
|
||||||
|
### API Entegrasyonu
|
||||||
|
- Local vs cloud API'leri uyumsuzlukları
|
||||||
|
- Model versiyonları
|
||||||
|
|
||||||
|
### Video İşleme
|
||||||
|
- Video render uzun sürer (GPU kaynakları)
|
||||||
|
- Memory yönetimi (büyük video dosyaları)
|
||||||
|
|
||||||
|
### Performans
|
||||||
|
- Model yükleme gecikmeleri
|
||||||
|
- GPU queue yönetimi (birden fazla istek)
|
||||||
|
|
||||||
|
## 9. Maliyet Analizi
|
||||||
|
|
||||||
|
### Yerel GPU
|
||||||
|
- GPU zaten mevcut (VM100: 2x RTX 3090)
|
||||||
|
- Hosting/Cloud maliyeti yok
|
||||||
|
- Model indirilmesi ve depolanması
|
||||||
|
|
||||||
|
### Bulut API (Segmind)
|
||||||
|
- img/image: $0.001-$0.0072
|
||||||
|
- Inpainting: ~$0.0043/gpu-second
|
||||||
|
- Image-to-video: $0.04-$0.10/video
|
||||||
|
|
||||||
|
### Hibrit Model
|
||||||
|
- Günlük kullanımlar için yerel model
|
||||||
|
- Özel modeller için bulut API
|
||||||
|
|
||||||
|
## 10. Alternatif Çözümler
|
||||||
|
|
||||||
|
### 1. ComfyUI + Custom Frontend
|
||||||
|
- Mevcut ComfyUI workflow'ları kullanılır
|
||||||
|
- Flutter arayüzü ComfyUI API'sine bağlanır
|
||||||
|
|
||||||
|
### 2. InvokeAI
|
||||||
|
- Daha kolay kurulum
|
||||||
|
- Yerleşik web arayüzü (geliştirme için hızlı başlangıç)
|
||||||
|
|
||||||
|
### 3. Custom Python API + Local Models
|
||||||
|
- Tam kontrol
|
||||||
|
- Model yükleme/değiştirme dinamik
|
||||||
|
- API'ler uygulama için optimize edilir
|
||||||
|
|
||||||
|
### 4. Tamamen Bulut API
|
||||||
|
- Yerel GPU gereksinimi yok
|
||||||
|
- Maliyetli olabilir
|
||||||
|
- API rate limits
|
||||||
|
|
||||||
|
## 11. Öneriler
|
||||||
|
|
||||||
|
1. **Hibrit mimari:** Yerel GPU üzerinde özel API server, ComfyUI alternatif modeller için
|
||||||
|
2. **Model stratejisi:** Her kullanıcının ihtiyacına göre farklı modeller seçebilmeli
|
||||||
|
3. **Video odaklı özellikler:** İleri aşamada image-to-video ve video playback
|
||||||
|
4. **Maliyet optimizasyonu:** Yerel modeller öncelikli, bulut için yüksek kaliteli sonuçlar
|
||||||
|
5. **Kullanıcı deneyimi:** Basit arayüz, gelişmiş özellikler ayarlarda
|
||||||
|
6. **GPU optimizasyonu:** Model yükleme stratejisi (aktif model bellekte kalmalı)
|
||||||
|
|
||||||
|
## 12. Sonuç
|
||||||
|
|
||||||
|
imajViewer2 projesi teknik olarak uygulanabilir ve güçlü bir araç olacak. Yerel GPU server'ın mevcut olması maliyet ve performans açısından avantaj sağlar. ComfyUI veya özel Python API backend'i kullanılarak güçlü img2img, txt2img ve image-to-video özellikleri sağlanabilir. Kullanıcı deneyimi basit tutulmalı, gelişmiş özellikler ayarlarda sunulmalıdır.
|
||||||
Reference in new issue
Block a user