File size: 1,660 Bytes
217bde8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | # 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.
|