Skip to content

A comprehensive framework for hyperspectral image analysis implementing deep learning architectures (ResNet18, ViT, 3D-CNN, Hybrid CNN-Transformer, U-Net, FCN) with spectral attention mechanisms. Features complete pipeline for classification and segmentation tasks on standard hyperspectral datasets.

Notifications You must be signed in to change notification settings

LankeSathwik7/Hyperspectral-Deep-Learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 

Repository files navigation

Hyperspectral-Deep-Learning

๐Ÿ” Hyperspectral Image Classification and Segmentation

A comprehensive implementation of deep learning models for hyperspectral image classification and segmentation using PyTorch. The project implements various architectures and techniques in a single streamlined pipeline.

๐Ÿ“š Table of Contents

  1. ๐Ÿ”„ Data Acquisition and Preprocessing

    • ๐Ÿ“ฅ Downloading Datasets
    • ๐Ÿ”ƒ Data Format Conversion and Organization
    • โœ‚๏ธ Dataset Splitting (80/10/10)
    • ๐Ÿ“Š Band Quality Assessment
    • ๐Ÿงน Noise Removal
  2. ๐Ÿ“ˆ Data Exploration and Visualization

    • ๐Ÿ“‰ Spectral Signatures Visualization
    • ๐Ÿ”— Band Correlation Analysis
    • ๐Ÿ“Š Class Distribution Analysis
    • ๐ŸŽฒ 3D Datacube Visualizations
  3. ๐ŸŽฏ Dimensionality Reduction and Feature Selection

    • ๐Ÿงฎ PCA, ICA, LDA Analysis
    • ๐ŸŽฏ Band Selection Methods
    • โœจ Reduced Representations Evaluation
  4. ๐Ÿ”„ Data Augmentation Strategies

    • ๐ŸŒŠ Spectral Augmentation
    • ๐ŸŒ Spatial Augmentation
    • ๐Ÿ”„ Combined Spectral-Spatial Augmentation
  5. ๐Ÿ—๏ธ Model Architecture Design

    • ๐Ÿ“‹ Classification Models
      • ๐Ÿ”ฅ ResNet18 with Spectral Attention
      • ๐Ÿค– Vision Transformer (ViT)
      • ๐ŸงŠ 3D CNN
      • ๐Ÿ”„ Hybrid CNN-Transformer
    • ๐ŸŽจ Segmentation Models
      • ๐ŸŒˆ U-Net with Spectral Attention
      • ๐ŸŽฒ 3D U-Net
      • ๐ŸŽฏ FCN with Spectral Attention
  6. โš™๏ธ Training Pipeline Implementation

    • ๐Ÿ“‰ Loss Functions
      • ๐Ÿ’ซ Cross-entropy with Class Weights
      • ๐ŸŽฏ Dice Loss for Segmentation
    • ๐Ÿ”ง Optimization
      • โšก Adam Optimizer
      • ๐Ÿ“ˆ Learning Rate Scheduling
    • ๐Ÿ”’ Regularization
      • ๐ŸŽญ Spectral Dropout
      • ๐Ÿ‹๏ธ L1/L2 Regularization
  7. ๐Ÿ“Š Model Training and Monitoring

    • ๐ŸŽฏ Model Selection
    • ๐Ÿƒโ€โ™‚๏ธ Training and Validation
    • ๐Ÿ’พ Checkpoint Management
    • ๐Ÿ›ก๏ธ Overfitting Handling
  8. ๐Ÿ“Š Results and Visualization

    • ๐Ÿ“ˆ Performance Charts
    • ๐ŸŽจ Color-graded and Normalized Visualizations

โœจ Features

๐Ÿ“š Supported Datasets

  • ๐ŸŒพ Indian Pines
  • ๐Ÿ›๏ธ Pavia University
  • ๐ŸŒฑ Salinas Scene

๐Ÿ› ๏ธ Core Functionality

  • ๐Ÿ”„ Automatic dataset downloading and processing
  • ๐Ÿ“Š Band quality assessment and noise removal
  • ๐Ÿ”„ Spectral and spatial data augmentation
  • ๐Ÿ“‰ Dimensionality reduction techniques
  • โšก Advanced training features with regularization
  • ๐Ÿ“Š Comprehensive visualization and evaluation tools

๐Ÿ“‹ Requirements

torch>=1.8.0
numpy>=1.19.2
pandas>=1.2.0
scipy>=1.6.0
scikit-learn>=0.24.0
matplotlib>=3.3.4
seaborn>=0.11.1
tqdm>=4.59.0
plotly>=4.14.0

๐Ÿš€ Usage

  1. Install the required dependencies:
pip install torch numpy pandas scipy scikit-learn matplotlib seaborn tqdm plotly
  1. Run the main training pipeline:
# Select dataset and models
SELECTED_DATASET = ['indian_pines']  # Options: 'indian_pines', 'pavia_university', 'salinas'
models = ['fcn']  # Options: 'resnet', 'vit', '3dcnn', 'hybrid', 'unet', 'fcn'
# Training will automatically:
# - Download and process the dataset
# - Train the selected models
# - Generate visualizations and metrics

๐Ÿ”‘ Key Components

๐Ÿ“Š Data Processing

# Load and preprocess dataset
loader = HyperspectralDataLoader(dataset_name)
data, ground_truth = loader.load_dataset()
# Analyze band quality
analyzer = BandQualityAnalyzer(data, dataset_name)
noisy_bands = analyzer.identify_noisy_bands()

๐Ÿƒโ€โ™‚๏ธ Model Training

# Create model
model = create_model(dataset_name)  # For classification
# or
model = create_fcn_model(dataset_name)  # For segmentation
# Train
trainer = Trainer(config, task_config)
trainer.train()

๐Ÿ“ˆ Visualization

# Plot results
plot_confusion_matrix(dataset_name, classification_models, device)
plot_segmentation_maps(dataset_name, segmentation_models, device)
plot_training_curves(metrics, dataset_name, model_type)

๐Ÿ“Š Results

The code includes comprehensive evaluation tools that generate:

  • ๐Ÿ“ˆ Classification accuracy metrics
  • ๐ŸŽฏ Segmentation IoU/Dice scores
  • ๐Ÿ“Š Confusion matrices
  • ๐Ÿ“‰ ROC curves
  • ๐Ÿ” Error analysis
  • ๐Ÿ“Š Band quality visualization
  • ๐Ÿ“ˆ Training progress curves

About

A comprehensive framework for hyperspectral image analysis implementing deep learning architectures (ResNet18, ViT, 3D-CNN, Hybrid CNN-Transformer, U-Net, FCN) with spectral attention mechanisms. Features complete pipeline for classification and segmentation tasks on standard hyperspectral datasets.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages