10 KiB
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:
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)
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:
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:
dependencies:
media_kit: ^1.2.0
media_kit_libmpv: ^1.0.0
Linux Gereksinimi:
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ışı
- Kullanıcı mevcut görüntüyü seçer
- Prompt yazılır
- Model seçilir
- Generate butonu
- Sonuç görüntülenir
- Accept veya regenerate seçeneği
Inpainting Akışı
- Kullanıcı mask tool'ünü seçer
- Görüntüde maske çizer
- Prompt yazılır ("Replace with red flowers")
- Generate
- Sonuçta maske alanı değiştirilir
Image-to-Video Akışı
- Görüntü seçilir
- Video parametreleri (süre, hareket tipi)
- Generate
- Video player'da sonuç oynatılır
- 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
- Hibrit mimari: Yerel GPU üzerinde özel API server, ComfyUI alternatif modeller için
- Model stratejisi: Her kullanıcının ihtiyacına göre farklı modeller seçebilmeli
- Video odaklı özellikler: İleri aşamada image-to-video ve video playback
- Maliyet optimizasyonu: Yerel modeller öncelikli, bulut için yüksek kaliteli sonuçlar
- Kullanıcı deneyimi: Basit arayüz, gelişmiş özellikler ayarlarda
- 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.