# EL Defect Detection — Training Package Train a **U-Net++ with EfficientNet-B4 encoder** for solar cell EL defect segmentation. ## Quick Start (RTX 4060 / any CUDA GPU) ```bash # 1. Clone this repo git clone https://huggingface.co/nithishbasireddy/el-defect-training cd el-defect-training # 2. Install dependencies pip install -r requirements.txt # 3. Verify setup python test_setup.py # 4. Train (auto-downloads E-SCDD dataset) python train.py ``` Training takes ~2-3 hours on RTX 4060. Model saves to `output/best_model.pth`. ## After Training ```bash # Run the Streamlit app with your trained model streamlit run app.py # → Set model path to "output/best_model.pth" in sidebar ``` ## Architecture - **Model**: U-Net++ + EfficientNet-B4 + scSE attention (20.9M params) - **Dataset**: E-SCDD (903 images, 512×512, 30→5 class remap) - **Loss**: 0.5 × Dice + 0.5 × Focal (γ=2.0) — handles severe class imbalance - **Optimizer**: AdamW with differential LR (encoder 1e-4, decoder 5e-4) - **AMP**: Mixed precision for 8GB VRAM GPUs ## Classes (5) | ID | Name | E-SCDD Labels | Color | |----|------|---------------|-------| | 0 | background | 0-8, 21-24, 29 | Black | | 1 | busbar | 9 | Green | | 2 | crack | 10, 14 | Blue | | 3 | dark/inactive | 11, 17, 20 | Red | | 4 | other_defect | 12,13,15,16,18,19,25-28 | Yellow | ## Why U-Net++ over U-Net? U-Net++ has **dense skip connections** between encoder and decoder. For thin structures like cracks (often <10px wide), these nested connections preserve fine details that plain U-Net's single skip connections lose. Validated in medical imaging (thin vessels) and industrial inspection.