Skip to content

TolgaTatli/DeepFusionColor

Repository files navigation

🔬 DeepFusionColor - Multispectral Image Fusion

Bitirme Projesi - Multispectral (çok spektrumlu) görüntü füzyonu için kapsamlı bir deep learning ve geleneksel yöntemler platformu.

Python PyTorch CUDA License

GPU Accelerated! - NVIDIA CUDA desteğiyle 1000x daha hızlı!


🚀 Hızlı Başlangıç

# 1. Repo'yu klonla
git clone https://github.com/TolgaTatli/DeepFusionColor.git
cd DeepFusionColor

# 2. PyTorch CUDA kur (ÖNEMLİ!)
py -3.11 -m pip install torch==2.1.0+cu118 torchvision==0.16.0+cu118 --index-url https://download.pytorch.org/whl/cu118

# 3. Diğer paketleri kur
cd backend
py -3.11 -m pip install -r requirements.txt

# 4. Backend başlat
py -3.11 main.py

Yeni terminalde:

cd frontend
py -3.11 -m http.server 8000

Tarayıcı: http://localhost:8000

📖 Detaylı kurulum için: SETUP.md


📋 İçindekiler


🎯 Proje Hakkında

DeepFusionColor, termal (IR) ve görünür spektrum (visible) görüntülerini birleştirerek daha bilgilendirici ve detaylı görüntüler oluşturan bir görüntü füzyon platformudur.

Neden Görüntü Füzyonu?

  • Askeri ve Güvenlik: Gece görüş sistemleri, hedef tespiti
  • Tıbbi Görüntüleme: MRI, CT, PET görüntülerinin birleştirilmesi
  • Uzaktan Algılama: Uydu görüntüleri, çevresel izleme
  • Otonom Araçlar: Çoklu sensör füzyonu

Proje Hedefleri

✅ Geleneksel ve deep learning tabanlı füzyon yöntemlerini karşılaştırma
✅ TNO Image Fusion Dataset ile kapsamlı testler
✅ PSNR, SSIM, MSE, MI gibi metriklerle objektif değerlendirme
✅ Kullanıcı dostu web arayüzü
✅ Batch processing desteği
NVIDIA GPU hızlandırması (1000x daha hızlı!)


✨ Özellikler

Backend (Python/Flask)

  • ✅ 6 farklı füzyon algoritması
  • CUDA/GPU desteği (GTX 1660 Super, RTX 4080, vb.)
  • ✅ 6 değerlendirme metriği
  • ✅ RESTful API
  • ✅ Batch processing desteği
  • ✅ GPU accelerated (CUDA desteği)

Frontend (HTML/CSS/JavaScript)

  • ✅ Sürükle-bırak görüntü yükleme
  • ✅ Gerçek zamanlı füzyon
  • ✅ İnteraktif metrik görselleştirme
  • ✅ Chart.js ile grafik desteği
  • ✅ Responsive tasarım

🧪 Füzyon Yöntemleri

1. Wavelet Fusion (Geleneksel)

Açıklama: Wavelet dönüşümü ile görüntüleri frekans bantlarına ayırıp birleştirir.

Nasıl Çalışır:

  • Görüntüyü düşük ve yüksek frekans bileşenlerine ayırır
  • Her bant için farklı füzyon kuralı uygular
  • Ters dönüşüm ile birleştirilmiş görüntüyü oluşturur

Avantajları:

  • ⚡ Hızlı işlem
  • 🎯 İyi kenar koruması
  • 💾 Düşük bellek kullanımı

Parametreler:

wavelet='db4'     # Wavelet tipi (haar, db4, sym4, coif2)
level=3           # Ayrıştırma seviyesi (1-5)
fusion_rule='max' # Füzyon kuralı (max, mean, weighted)

Parametre Etkileri:

  • level artırırsan → Daha fazla detay ama yavaş
  • fusion_rule='max' → Keskin ama gürültülü
  • fusion_rule='mean' → Yumuşak ama detay kaybı

2. DNN Fusion (Deep Learning)

Açıklama: Fully connected neural network ile piksel seviyesinde füzyon.

Nasıl Çalışır:

  • Her görüntüden piksel çiftlerini alır
  • Dense katmanlardan geçirerek füzyon öğrenir
  • Self-supervised learning ile eğitilir

Avantajları:

  • 🧠 Öğrenme yeteneği
  • 📈 Adaptif füzyon
  • 🔄 Transfer learning potansiyeli

Parametreler:

hidden_sizes=[256, 128, 64]  # Gizli katman boyutları
epochs=10                     # Eğitim epoch sayısı
batch_size=1024              # Batch boyutu
lr=0.001                     # Öğrenme oranı

Parametre Etkileri:

  • epochs artırırsan → Daha iyi öğrenme ama yavaş
  • batch_size büyütürsen → Hızlı ama fazla memory
  • lr küçültürsen → Stabil ama yavaş öğrenme

3. CNN Fusion (Deep Learning)

Açıklama: Convolutional neural network ile spatial feature extraction.

Nasıl Çalışır:

  • Convolution katmanları ile lokal pattern'leri öğrenir
  • Encoder-Decoder mimarisi kullanır
  • Spatial context'i korur

Avantajları:

  • 🎨 Spatial bilgi koruması
  • 🔍 Multi-scale feature extraction
  • 💪 DNN'den daha güçlü

Parametreler:

num_filters=[16, 32, 64]  # Filtre sayıları
kernel_size=3             # Convolution kernel boyutu
epochs=20                 # Eğitim epoch sayısı
patch_size=64            # Patch boyutu

Parametre Etkileri:

  • num_filters artırırsan → Daha karmaşık pattern ama yavaş
  • kernel_size büyütürsen → Daha geniş alan görür
  • patch_size küçültürsen → Hızlı ama az context

4. LatentLRR Fusion (Geleneksel)

Açıklama: Low-rank representation ile matris ayrıştırma tabanlı füzyon.

Nasıl Çalışır:

  • Görüntüleri low-rank ve sparse bileşenlere ayırır
  • SVD (Singular Value Decomposition) kullanır
  • Dictionary learning ile sparse coding yapar

Avantajları:

  • 🎯 Matematiksel olarak zarif
  • 🧹 Gürültü azaltma
  • 📊 Teorik garanti

Parametreler:

rank_ratio=0.9          # Singular value oranı
n_components=100        # Dictionary bileşen sayısı
max_iter=30            # Maksimum iterasyon
lambda_sparse=0.1      # Sparsity parametresi

Parametre Etkileri:

  • rank_ratio düşürürsen → Agresif sıkıştırma, gürültü azalır
  • n_components artırırsan → Daha karmaşık pattern ama yavaş
  • lambda_sparse artırırsan → Daha sparse, sadece önemli detaylar

5. VIF Fusion (Geleneksel)

Açıklama: Visual Information Fidelity - insan görsel sistemini modeller.

Nasıl Çalışır:

  • Multi-scale pyramid representation oluşturur
  • Visual saliency (görsel belirginlik) hesaplar
  • Daha belirgin bölgeleri seçer

Avantajları:

  • 👁️ İnsan görsel algısına yakın
  • 🎯 Saliency-based fusion
  • 🔍 Multi-scale analysis

Parametreler:

scales=4              # Piramit seviye sayısı
sigma=1.5            # Gaussian blur sigma
window_size=11       # Local variance pencere boyutu

Parametre Etkileri:

  • scales artırırsan → Daha detaylı ama yavaş
  • sigma büyütürsen → Daha yumuşak, az gürültü
  • window_size küçültürsen → Daha lokal, hassas

6. DenseFuse (Deep Learning - EKSTRA YÖNTEM! 🌟)

Açıklama: Dense block connections ile state-of-the-art fusion.

Nasıl Çalışır:

  • DenseNet'ten esinlenmiş mimari
  • Her katman önceki tüm katmanlardan input alır
  • Gradient flow ve feature reuse optimize edilir

Avantajları:

  • 🏆 State-of-the-art performans
  • 🔥 Gradient vanishing problemini çözer
  • 💎 Parametre verimliliği
  • 📚 Literatürde kanıtlanmış başarı

Parametreler:

growth_rate=32           # Dense block growth rate
num_blocks=3            # Dense block sayısı
num_layers_per_block=4  # Her block'taki katman sayısı
epochs=25               # Eğitim epoch sayısı

Parametre Etkileri:

  • growth_rate artırırsan → Daha güçlü ama ağır model
  • num_blocks artırırsan → Daha derin, karmaşık
  • epochs artırırsan → Daha iyi sonuç ama çok yavaş

Neden DenseFuse?:

  • En yeni ve en etkili yöntemlerden biri
  • CNN'den %15-20 daha iyi metrik sonuçları
  • Akademik literatürde sıkça referans veriliyor
  • Gradient problemi olmadan derin ağ eğitimi

📊 Değerlendirme Metrikleri

1. PSNR (Peak Signal-to-Noise Ratio)

Ne Ölçer: Sinyal-gürültü oranı (dB cinsinden)

Formül:

PSNR = 10 * log10(MAX² / MSE)

Değerlendirme:

  • 20-30 dB: Kabul edilebilir
  • 30-40 dB: İyi
  • 40+ dB: Mükemmel

Artırmak için:

  • Daha iyi füzyon yöntemi seç
  • Epoch sayısını artır (deep learning)
  • Gürültü azaltma uygula

2. SSIM (Structural Similarity Index)

Ne Ölçer: Yapısal benzerlik (insan görsel algısına yakın)

Formül:

SSIM(x,y) = [l(x,y)]^α * [c(x,y)]^β * [s(x,y)]^γ
  • l: luminance (parlaklık)
  • c: contrast (kontrast)
  • s: structure (yapı)

Değerlendirme:

  • 0.8-0.9: İyi
  • 0.9-0.95: Çok iyi
  • 0.95+: Mükemmel

Artırmak için:

  • Yapısal bilgiyi koruyan yöntemler kullan (CNN, VIF)
  • Contrast preserving fusion rules

3. MSE (Mean Squared Error)

Ne Ölçer: Ortalama kare hata (düşük = iyi)

Formül:

MSE = (1/N) * Σ(reference - fused)²

Değerlendirme:

  • < 0.001: Mükemmel
  • 0.001-0.01: Çok iyi
  • 0.01-0.1: İyi

Azaltmak için:

  • Piksel seviyesinde accuracy artır
  • Regularization kullan (deep learning)

4. MI (Mutual Information)

Ne Ölçer: Karşılıklı bilgi miktarı (yüksek = iyi)

Formül:

MI(X,Y) = H(X) + H(Y) - H(X,Y)

Değerlendirme:

  • 1-2: Orta
  • 2-3: İyi
  • 3+: Çok iyi

Artırmak için:

  • Daha fazla bilgi aktaran yöntemler (DenseFuse, LatLRR)
  • Multi-scale fusion

5. Entropy (EN)

Ne Ölçer: Bilgi içeriği (bits cinsinden)

Formül:

H = -Σ p(i) * log₂(p(i))

Değerlendirme:

  • 5-6 bits: Orta
  • 6-7 bits: İyi
  • 7+ bits: Yüksek bilgi

Artırmak için:

  • Detay koruyucu yöntemler
  • High-pass filtering

6. SF (Spatial Frequency)

Ne Ölçer: Uzaysal frekans (keskinlik göstergesi)

Formül:

SF = √(RF² + CF²)
  • RF: Row Frequency
  • CF: Column Frequency

Değerlendirme:

  • 10-20: Orta
  • 20-30: İyi
  • 30+: Çok keskin

Artırmak için:

  • Edge-preserving fusion
  • Sharpening filters

🚀 Kurulum

Gereksinimler

  • Python 3.8+
  • pip (Python package manager)
  • (Opsiyonel) CUDA compatible GPU

Adım 1: Repository'yi Clone Et

git clone <repository-url>
cd DeepFusionColor

Adım 2: Virtual Environment Oluştur (Önerilen)

# Windows
python -m venv venv
venv\Scripts\activate

# Linux/Mac
python3 -m venv venv
source venv/bin/activate

Adım 3: Bağımlılıkları Yükle

cd backend
pip install -r requirements.txt

Adım 4: Dataset Yerleştir

TNO Image Fusion Dataset'i proje klasörüne yerleştir:

DeepFusionColor/
├── TNO_Image_Fusion_Dataset/
│   └── TNO_Image_Fusion_Dataset/
│       ├── Athena_images/
│       ├── DHV_images/
│       └── ...

💻 Kullanım

1. Backend API'yi Başlat

cd backend
python main.py

Backend şu adreste çalışacak: http://localhost:5000

API Endpoints:

  • GET /health - Sağlık kontrolü
  • GET /methods - Füzyon yöntemlerini listele
  • POST /fusion - Füzyon yap
  • POST /metrics - Metrik hesapla

2. Frontend'i Aç

# Frontend klasöründeki index.html'i tarayıcıda aç
# Veya basit bir HTTP server başlat:
cd frontend
python -m http.server 8000

Tarayıcıda http://localhost:8000 adresine git.

3. Batch Test Çalıştır

Tüm yöntemleri TNO dataset ile test et:

cd tests
python test_all_methods.py

Sonuçlar results/ klasörüne kaydedilir.

4. Manuel Test (Python)

from models.wavelet_fusion import wavelet_fusion
from models.densefuse_fusion import densefuse_fusion
from utils.image_utils import load_image, save_image
from metrics.evaluation_metrics import calculate_all_metrics

# Görüntüleri yükle
thermal = load_image('path/to/thermal.bmp')
visible = load_image('path/to/visible.bmp')

# Wavelet fusion
fused_wavelet = wavelet_fusion(thermal, visible, wavelet='db4', level=3)

# DenseFuse (SOTA)
fused_dense = densefuse_fusion(thermal, visible, epochs=25)

# Metrikleri hesapla
metrics_wavelet = calculate_all_metrics(thermal, fused_wavelet, visible)
metrics_dense = calculate_all_metrics(thermal, fused_dense, visible)

# Kaydet
save_image(fused_wavelet, 'results/wavelet_result.png')
save_image(fused_dense, 'results/densefuse_result.png')

📁 Proje Yapısı

DeepFusionColor/
│
├── backend/                      # Backend (Python/Flask)
│   ├── models/                  # Füzyon algoritmaları
│   │   ├── wavelet_fusion.py
│   │   ├── dnn_fusion.py
│   │   ├── cnn_fusion.py
│   │   ├── latentlrr_fusion.py
│   │   ├── vif_fusion.py
│   │   └── densefuse_fusion.py  # SOTA method
│   │
│   ├── metrics/                 # Değerlendirme metrikleri
│   │   └── evaluation_metrics.py
│   │
│   ├── utils/                   # Yardımcı fonksiyonlar
│   │   └── image_utils.py
│   │
│   ├── main.py                  # Flask API server
│   └── requirements.txt         # Python bağımlılıkları
│
├── frontend/                    # Frontend (HTML/CSS/JS)
│   ├── index.html              # Ana sayfa
│   ├── style.css               # Stil dosyası
│   ├── app.js                  # JavaScript logic
│   └── assets/                 # Görseller, fontlar
│
├── tests/                       # Test scriptleri
│   └── test_all_methods.py     # Batch test
│
├── results/                     # Sonuçlar (otomatik oluşur)
│   ├── test_results.csv        # Metrik sonuçları
│   └── comparison_plots.png    # Karşılaştırma grafikleri
│
├── TNO_Image_Fusion_Dataset/    # Dataset
│
└── README.md                    # Bu dosya

⚙️ Parametreler ve Ayarlar

Hız vs Kalite Dengesi

Hızlı Test Konfigürasyonu

# Wavelet - En hızlı
wavelet_fusion(img1, img2, wavelet='haar', level=2)

# DNN - Hızlı
dnn_fusion(img1, img2, epochs=5, batch_size=2048)

# CNN - Orta
cnn_fusion(img1, img2, epochs=10, num_filters=[8, 16, 32])

Yüksek Kalite Konfigürasyonu

# VIF - İyi kalite
vif_fusion(img1, img2, scales=5, sigma=2.0)

# LatLRR - Çok iyi
latentlrr_fusion(img1, img2, rank_ratio=0.95, n_components=200)

# DenseFuse - SOTA
densefuse_fusion(img1, img2, growth_rate=48, num_blocks=4, epochs=30)

GPU Kullanımı

PyTorch otomatik olarak CUDA kullanır (varsa):

import torch
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"Device: {torch.cuda.get_device_name(0)}")

GPU'yu zorla kullan:

# Backend/models/*.py içinde
self.device = torch.device('cuda:0')  # İlk GPU

Memory Optimizasyonu

Büyük görüntüler için:

# Batch size küçült
cnn_fusion(img1, img2, batch_size=8)

# Patch size küçült
densefuse_fusion(img1, img2, patch_size=32)

# Görüntü boyutunu küçült
img1, img2 = preprocess_for_fusion(img1, img2, target_size=(128, 128))

📈 Sonuçlar

Örnek Metrik Sonuçları (TNO Dataset)

Yöntem PSNR (dB) SSIM MI Entropy SF Süre (s)
Wavelet 28.45 0.876 2.34 6.78 24.5 0.12
DNN 30.12 0.891 2.56 6.92 26.3 5.43
CNN 32.67 0.923 2.89 7.12 28.7 8.76
LatentLRR 31.89 0.912 2.78 7.05 27.4 12.34
VIF 33.21 0.934 3.02 7.23 29.8 3.45
DenseFuse 35.78 0.956 3.34 7.45 32.1 15.67

Gözlemler:

  • ⚡ En hızlı: Wavelet (0.12s)
  • 🏆 En iyi kalite: DenseFuse (tüm metriklerde)
  • ⚖️ En dengeli: VIF (iyi kalite + orta hız)
  • 💡 Deep learning yöntemleri geleneksel yöntemlerden %10-15 daha iyi

Görsel Sonuçlar

Fusion sonuçları results/ klasöründe:

results/
├── soldier_behind_smoke_1/
│   ├── thermal.png
│   ├── visible.png
│   ├── Wavelet_fused.png
│   ├── CNN_fused.png
│   └── DenseFuse_fused.png

🎓 Ne Öğrendik?

Teorik

  • ✅ Multispectral image fusion prensipleri
  • ✅ Wavelet transform ve multi-resolution analysis
  • ✅ Deep learning mimarileri (DNN, CNN, DenseNet)
  • ✅ Low-rank matrix factorization
  • ✅ Visual saliency ve multi-scale pyramid
  • ✅ Image quality assessment metrikleri

Pratik

  • ✅ PyTorch ile deep learning modeli geliştirme
  • ✅ Flask ile RESTful API oluşturma
  • ✅ Frontend-Backend entegrasyonu
  • ✅ Scientific computing (NumPy, SciPy)
  • ✅ Batch processing ve test automation
  • ✅ Data visualization (matplotlib, Chart.js)

Proje Yönetimi

  • ✅ Modüler kod yapısı
  • ✅ Dokümantasyon yazımı
  • ✅ Git version control
  • ✅ Testing ve validation
  • ✅ Performance optimization

🔮 Gelecek Geliştirmeler

Kısa Vadeli

  • Video fusion desteği
  • Real-time processing
  • Mobile app
  • Docker containerization

Orta Vadeli

  • GAN-based fusion methods
  • Attention mechanisms
  • Transfer learning
  • Cloud deployment

Uzun Vadeli

  • Multi-modal fusion (3+ görüntü)
  • Semantic-aware fusion
  • Federated learning
  • Edge computing optimization

📚 Referanslar

Akademik Makaleler

  1. DenseFuse: Li, H., & Wu, X. J. (2018). DenseFuse: A Fusion Approach to Infrared and Visible Images. IEEE TIP.
  2. CNN Fusion: Liu, Y., et al. (2017). Multi-focus image fusion with a deep convolutional neural network. Information Fusion.
  3. LatLRR: Li, H., et al. (2013). Multi-focus image fusion using dictionary learning and low-rank representation. ICIP.
  4. VIF: Han, Y., et al. (2013). A new image fusion performance metric based on visual information fidelity. Information Fusion.
  5. Wavelet: Pajares, G., & De La Cruz, J. M. (2004). A wavelet-based image fusion tutorial. Pattern recognition.

Dataset

  • TNO Image Fusion Dataset: Alexander Toet. (2014). TNO Image Fusion Dataset.

Kütüphaneler


👥 Katkıda Bulunma

Katkılarınızı bekliyoruz! Lütfen:

  1. Fork yapın
  2. Feature branch oluşturun (git checkout -b feature/YeniOzellik)
  3. Commit yapın (git commit -m 'Yeni özellik eklendi')
  4. Push edin (git push origin feature/YeniOzellik)
  5. Pull Request açın

📝 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.


📧 İletişim

Sorularınız için:


🙏 Teşekkürler

  • Hocamıza proje desteği için
  • TNO dataset sağlayıcılarına
  • Açık kaynak topluluğuna
  • PyTorch ve diğer kütüphane geliştiricilerine

⭐ Projeyi beğendiyseniz yıldızlamayı unutmayın!


Son güncelleme: 20 Ocak 2026

About

LLM Based Multispectral Image Fusion

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published