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.
-
๐ Data Acquisition and Preprocessing
- ๐ฅ Downloading Datasets
- ๐ Data Format Conversion and Organization
- โ๏ธ Dataset Splitting (80/10/10)
- ๐ Band Quality Assessment
- ๐งน Noise Removal
-
๐ Data Exploration and Visualization
- ๐ Spectral Signatures Visualization
- ๐ Band Correlation Analysis
- ๐ Class Distribution Analysis
- ๐ฒ 3D Datacube Visualizations
-
๐ฏ Dimensionality Reduction and Feature Selection
- ๐งฎ PCA, ICA, LDA Analysis
- ๐ฏ Band Selection Methods
- โจ Reduced Representations Evaluation
-
๐ Data Augmentation Strategies
- ๐ Spectral Augmentation
- ๐ Spatial Augmentation
- ๐ Combined Spectral-Spatial Augmentation
-
๐๏ธ 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
- ๐ Classification Models
-
โ๏ธ 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
- ๐ Loss Functions
-
๐ Model Training and Monitoring
- ๐ฏ Model Selection
- ๐โโ๏ธ Training and Validation
- ๐พ Checkpoint Management
- ๐ก๏ธ Overfitting Handling
-
๐ Results and Visualization
- ๐ Performance Charts
- ๐จ Color-graded and Normalized Visualizations
- ๐พ Indian Pines
- ๐๏ธ Pavia University
- ๐ฑ Salinas Scene
- ๐ 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
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
- Install the required dependencies:
pip install torch numpy pandas scipy scikit-learn matplotlib seaborn tqdm plotly- 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# 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()# 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()# 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)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