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.