edsr_basicsr
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (4.4%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: JuanHoKKeR
- License: apache-2.0
- Language: Python
- Default Branch: main
- Size: 4.4 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
EDSR for Histopathology Super-Resolution
Una implementacin especializada de Enhanced Deep Super-Resolution Network (EDSR) optimizada para imgenes de histopatologa de cncer de mama. Este proyecto forma parte de un Trabajo de Grado enfocado en super-resolucin para aplicaciones mdicas mediante arquitecturas CNN residuales.
Objetivo del Proyecto
Adaptar y evaluar EDSR, una arquitectura CNN residual consolidada y estable, para super-resolucin de imgenes de microscopia histopatolgica, aprovechando su simplicidad arquitectural y robustez en el entrenamiento.
Caractersticas Principales
- ** Especializado en Histopatologa**: Optimizado para imgenes de cncer de mama
- ** Arquitectura CNN Residual**: Utiliza bloques residuales profundos para mejor reconstruccin
- ** Estabilidad Excepcional**: Entrenamiento robusto sin mode collapse o inestabilidades
- ** Simplicidad Efectiva**: Arquitectura limpia y bien documentada
- ** Referencia Confiable**: Excelente baseline para comparaciones experimentales
- ** Sistema de Evaluacin Comprehensive**: Mtricas especializadas para imgenes mdicas
Diferencias con el Proyecto Original
Este repositorio est basado en BasicSR pero incluye adaptaciones especficas:
| Aspecto | BasicSR Original | Esta Implementacin | |---------|------------------|-------------------| | Dominio | Imgenes naturales (DIV2K) | Histopatologa especfica | | Dataset | Datasets estndar | Dataset histopatolgico especializado | | Configuracin | Configuraciones generales | Optimizadas para imgenes mdicas | | Evaluacin | Mtricas bsicas | Sistema comprehensive mdico | | Entrenamiento | Multi-escala estndar | Enfoque en factores especficos | | Aplicacin | Uso general | Diagnstico mdico asistido |
Inicio Rpido
Prerequisitos
- Python 3.9+
- PyTorch 1.13+
- CUDA 11.2+ (recomendado)
- GPU con 8GB+ VRAM para entrenamiento
1. Clonar el Repositorio
bash
git clone https://github.com/JuanHoKKeR/EDSR_BasicSR.git
cd EDSR_BasicSR
2. Instalacin de Dependencias
```bash
Instalar BasicSR y dependencias
pip install basicsr pip install -r requirements.txt
Instalar en modo desarrollo (recomendado)
python setup.py develop ```
3. Preparar el Dataset
Organiza tu dataset con la siguiente estructura:
datasets/
histopatologia/
train/
hr/ # Imgenes de alta resolucin
lr/ # Imgenes de baja resolucin
val/
hr/
lr/
test/
hr/
lr/
4. Configurar el Entrenamiento
Edita el archivo de configuracin YAML en options/train/EDSR/:
```yaml
Configuracin general
name: EDSRhistopatologiax2f256b32 modeltype: SRModel scale: 2 numgpu: 1 manual_seed: 0
Dataset configuration
datasets: train: name: histopatologiatrain type: PairedImageDataset datarootgt: datasets/histopatologia/train/hr datarootlq: datasets/histopatologia/train/lr filenametmpl: '{}' io_backend: type: disk
gt_size: 256
use_hflip: true
use_rot: true
# Data loader
use_shuffle: true
num_worker_per_gpu: 8
batch_size_per_gpu: 4
dataset_enlarge_ratio: 1
prefetch_mode: ~
val: name: histopatologiaval type: PairedImageDataset datarootgt: datasets/histopatologia/val/hr datarootlq: datasets/histopatologia/val/lr iobackend: type: disk
Network structures
networkg: type: EDSR numinch: 3 numoutch: 3 numfeat: 256 # Nmero de caractersticas numblock: 32 # Nmero de bloques residuales upscale: 2 resscale: 0.1 imgrange: 255. rgbmean: [0.4488, 0.4371, 0.4040]
Training settings
train: emadecay: 0.999 optimg: type: Adam lr: !!float 1e-4 weight_decay: 0 betas: [0.9, 0.99]
scheduler: type: MultiStepLR milestones: [200000, 400000, 600000, 800000] gamma: 0.5
totaliter: 1000000 warmupiter: -1 # Sin warmup
# Losses pixelopt: type: L1Loss lossweight: 1.0 reduction: mean ```
5. Ejecutar Entrenamiento
```bash
Entrenamiento bsico
python basicsr/train.py -opt options/train/EDSR/trainEDSRhistopatologia_x2.yml
Con logging detallado
python basicsr/train.py -opt options/train/EDSR/trainEDSRhistopatologia_x2.yml --debug ```
Estructura del Proyecto
EDSR_BasicSR/
basicsr/ # Framework BasicSR
archs/ # Arquitecturas de redes
edsr_arch.py # Implementacin EDSR
arch_util.py # Utilidades de arquitectura
data/ # Manejo de datasets
paired_image_dataset.py # Dataset pareado LR-HR
transforms.py # Transformaciones de datos
models/ # Modelos de entrenamiento
sr_model.py # Modelo base de super-resolucin
base_model.py # Modelo base
losses/ # Funciones de prdida
basic_loss.py # L1, L2, etc.
perceptual_loss.py # Prdida perceptual
train.py # Script principal de entrenamiento
options/ # Archivos de configuracin
train/EDSR/ # Configuraciones de entrenamiento
train_EDSR_histopatologia_x2.yml
train_EDSR_histopatologia_x4.yml
train_EDSR_custom.yml
test/EDSR/ # Configuraciones de testing
experiments/ # Resultados experimentales
[experiment_name]/
models/ # Checkpoints del modelo
training_states/ # Estados del optimizador
visualization/ # Imgenes de validacin
train_[timestamp].log # Logs de entrenamiento
datasets/ # Datasets organizados
results/ # Resultados de testing
requirements.txt # Dependencias
Arquitectura EDSR
Enhanced Deep Super-Resolution Network
EDSR elimina las capas de normalizacin batch de ResNet original y utiliza:
```python
Arquitectura base en basicsr/archs/edsr_arch.py
class EDSR(nn.Module): def init(self, numinch=3, numoutch=3, numfeat=256, numblock=32, upscale=2, resscale=0.1, imgrange=255.):
# Extraccin de caractersticas inicial
self.conv_first = nn.Conv2d(num_in_ch, num_feat, 3, 1, 1)
# Bloques residuales principales
self.body = make_layer(ResidualBlockNoBN, num_block,
num_feat=num_feat, res_scale=res_scale)
# Convolucin antes del upsampling
self.conv_after_body = nn.Conv2d(num_feat, num_feat, 3, 1, 1)
# Upsampling
self.upsample = Upsample(upscale, num_feat)
# Reconstruccin final
self.conv_last = nn.Conv2d(num_feat, num_out_ch, 3, 1, 1)
```
Configuraciones por Resolucin
128256 (2) - Configuracin Estndar
```yaml networkg: type: EDSR numfeat: 256 numblock: 32 upscale: 2 resscale: 0.1
train: totaliter: 300000 batchsizepergpu: 16 ```
256512 (2) - Configuracin Intermedia
```yaml networkg: type: EDSR numfeat: 256 numblock: 32 upscale: 2 resscale: 0.1
train: totaliter: 500000 batchsizepergpu: 8 ```
5121024 (2) - Alta Resolucin
```yaml networkg: type: EDSR numfeat: 256 numblock: 32 upscale: 2 resscale: 0.1
train: totaliter: 800000 batchsizepergpu: 4 ```
Scripts Principales
1. Entrenamiento
Entrenamiento Bsico
bash
python basicsr/train.py -opt options/train/EDSR/train_EDSR_histopatologia_x2.yml
Entrenamiento con Validacin Automtica
bash
python basicsr/train.py \
-opt options/train/EDSR/train_EDSR_histopatologia_x2.yml \
--auto_resume \
--debug
Reanudar Entrenamiento
bash
python basicsr/train.py \
-opt options/train/EDSR/train_EDSR_histopatologia_x2.yml \
--auto_resume
2. Testing y Evaluacin
Testing Bsico
bash
python basicsr/test.py -opt options/test/EDSR/test_EDSR_histopatologia_x2.yml
Configuracin de Testing
```yaml
testEDSRhistopatologia_x2.yml
name: EDSRhistopatologiax2test modeltype: SRModel scale: 2 num_gpu: 1
datasets: test1: name: histopatologiatest type: PairedImageDataset datarootgt: datasets/histopatologia/test/hr datarootlq: datasets/histopatologia/test/lr io_backend: type: disk
networkg: type: EDSR numinch: 3 numoutch: 3 numfeat: 256 numblock: 32 upscale: 2 resscale: 0.1 img_range: 255.
path: pretrainnetworkg: experiments/EDSRhistopatologiax2/models/netglatest.pth strictloadg: true
val: save_img: true suffix: ~ # Sin sufijo en nombre de archivo
metrics: psnr: # Peak signal-to-noise ratio type: calculatepsnr cropborder: 2 testychannel: false
ssim: # Structural similarity
type: calculate_ssim
crop_border: 2
test_y_channel: false
```
Configuracin Avanzada
Optimizacin de Memoria
Para GPUs con memoria limitada:
```yaml
Reducir batch size
train: batchsizeper_gpu: 2 # En lugar de 4 o ms
Usar gradient checkpointing (si est disponible)
networkg: type: EDSR usecheckpoint: true # Para ahorrar memoria
Ajustar workers
datasets: train: numworkerper_gpu: 4 # Reducir si hay problemas de memoria ```
Aceleracin de Entrenamiento
```yaml
Usar precisin mixta (AMP)
train: use_amp: true
Optimizar DataLoader
datasets: train: prefetchmode: cuda # Precarga en GPU pinmemory: true
Scheduler optimizado
train: scheduler: type: CosineAnnealingRestartLR periods: [250000, 250000, 250000, 250000] restartweights: [1, 0.5, 0.5, 0.5] etamin: !!float 1e-7 ```
Data Augmentation para Histopatologa
```yaml datasets: train: # Augmentaciones bsicas usehflip: true # Flip horizontal userot: true # Rotaciones 90
# Augmentaciones de color (cuidadoso en histopatologa)
color_jitter_prob: 0.1
color_jitter_shift: 20
# Cropping inteligente
gt_size: 256
crop_type: center # center, random
# Normalizacin especfica para histopatologa
mean: [0.485, 0.456, 0.406] # Valores tpicos
std: [0.229, 0.224, 0.225]
```
Resultados y Rendimiento
Modelos Implementados
| Modelo | Resolucin | Parmetros | Tiempo Entrenamiento* | Estabilidad | |--------|------------|------------|----------------------|-------------| | 128256 | 128128 256256 | ~43M | ~2 das | Excelente | | 256512 | 256256 512512 | ~43M | ~3 das | Excelente | | 5121024 | 512512 10241024 | ~43M | ~4 das | Excelente |
*Tiempo estimado en RTX 4090
Caractersticas Tcnicas
Ventajas de EDSR:
Arquitectura probada: CNN residual consolidada y estable
Entrenamiento robusto: Sin problemas de convergencia
Implementacin limpia: Cdigo bien estructurado y mantenible
Reproducibilidad: Resultados consistentes entre ejecuciones
Escalabilidad: Mantiene arquitectura constante entre resoluciones
Simplicidad: Sin componentes adversariales complejos
Caractersticas Tcnicas:
Funcin de prdida: L1 Loss nicamente
Optimizador: Adam con learning rate scheduling
Normalizacin: Sin Batch Normalization (clave del diseo)
Activacin: ReLU en bloques residuales
Upsampling: Sub-pixel convolution (PixelShuffle)
Comparacin de Estabilidad
| Aspecto | EDSR | ESRGAN | SwinIR | |---------|------|--------|--------| | Convergencia | Montona | Oscilante | Estable | | Tiempo entrenamiento | Largo | Moderado | Largo | | Reproducibilidad | Excelente | Variable | Buena | | Simplicidad | Mxima | Compleja | Compleja |
Herramientas y Utilidades
Monitoreo de Entrenamiento
```bash
Visualizar logs
tensorboard --logdir experiments/EDSRhistopatologiax2/tb_logger
Mtricas automticas disponibles:
- l_pix: Prdida L1
- psnr: PSNR en validacin
- ssim: SSIM en validacin
- lr: Learning rate actual
```
Gestin de Experimentos
```yaml
Configuracin de logging
logger: printfreq: 100 # Frecuencia de logs en consola savecheckpointfreq: 5000 # Guardar modelo cada 5k iter usetblogger: true # TensorBoard logging wandb: # Weights & Biases (opcional) project: EDSRhistopatologia resume_id: ~ ```
Validacin Automtica
```yaml
Validacin durante entrenamiento
val: valfreq: !!float 5e3 # Validar cada 5k iteraciones saveimg: false # No guardar imgenes (ahorra espacio)
metrics: psnr: type: calculatepsnr cropborder: 2 testychannel: false ssim: type: calculatessim cropborder: 2 testychannel: false ```
Personalizacin y Extensiones
Modificar Arquitectura
```python
En basicsr/archs/edsr_arch.py
class CustomEDSR(nn.Module): def init(self, numinch=3, numoutch=3, numfeat=256, numblock=32, upscale=2, res_scale=0.1):
# Modificar nmero de caractersticas
self.conv_first = nn.Conv2d(num_in_ch, num_feat, 3, 1, 1)
# Ajustar nmero de bloques residuales
self.body = make_layer(ResidualBlockNoBN, num_block,
num_feat=num_feat, res_scale=res_scale)
```
Funciones de Prdida Personalizadas
```python
En basicsr/losses/custom_loss.py
class HistopathologyLoss(nn.Module): def init(self, lossweight=1.0): super().init() self.lossweight = lossweight self.l1loss = nn.L1Loss()
def forward(self, pred, target):
# Prdida L1 base
l1_loss = self.l1_loss(pred, target)
# Agregar prdidas especficas para histopatologa
# (preservacin de bordes, texturas, etc.)
return l1_loss * self.loss_weight
```
Casos de Uso y Aplicaciones
Diagnstico Mdico Asistido
- Mejora de imgenes histopatolgicas de baja calidad
- Preparacin de imgenes para anlisis automatizado
- Standardizacin de calidad en diferentes equipos de microscopa
Investigacin Cientfica
- Baseline confiable para comparaciones experimentales
- Arquitectura de referencia para nuevos mtodos
- Validacin de tcnicas de evaluacin
Anlisis de Estructuras Celulares
- Preservacin fiel de morfologa tisular
- Reconstruccin estable de patrones histolgicos
- Anlisis detallado de arquitectura glandular
Contribucin
Este proyecto es parte de un Trabajo de Grado enfocado en super-resolucin mdica. Las contribuciones son bienvenidas siguiendo las mejores prcticas de BasicSR.
Licencia
Este proyecto est licenciado bajo la Licencia MIT - ver el archivo LICENSE para detalles.
Reconocimientos
- Framework Original: BasicSR por XPixel Group
- EDSR Paper: Lim, Bee, et al. "Enhanced deep residual networks for single image super-resolution." CVPRW 2017.
- ResNet: He, Kaiming, et al. "Deep residual learning for image recognition." CVPR 2016.
- BasicSR Team: Por el excelente framework de super-resolucin
Contacto
- Autor: Juan David Cruz Useche
- Proyecto: Trabajo de Grado - Super-Resolucin para Histopatologa
- GitHub: @JuanHoKKeR
- Repositorio: EDSR_BasicSR
Referencias
```bibtex @inproceedings{lim2017enhanced, title={Enhanced deep residual networks for single image super-resolution}, author={Lim, Bee and Son, Sanghyun and Kim, Heewon and Nah, Seungjun and Mu Lee, Kyoung}, booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition workshops}, pages={136--144}, year={2017} }
@misc{wang2020basicsr, title={BasicSR: Open Source Image and Video Restoration Toolbox}, author={Xintao Wang and Liangbin Xie and Chao Dong and Ying Shan}, howpublished={\url{https://github.com/XPixelGroup/BasicSR}}, year={2020} }
@inproceedings{he2016deep, title={Deep residual learning for image recognition}, author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian}, booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, pages={770--778}, year={2016} } ```
** Si este proyecto te resulta til para tu investigacin en super-resolucin mdica, considera darle una estrella!**
Owner
- Name: Juan Cruz
- Login: JuanHoKKeR
- Kind: user
- Repositories: 2
- Profile: https://github.com/JuanHoKKeR
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this project, please cite it as below."
title: "BasicSR: Open Source Image and Video Restoration Toolbox"
version: 1.3.5
date-released: 2022-02-16
url: "https://github.com/XPixelGroup/BasicSR"
license: Apache-2.0
authors:
- family-names: Wang
given-names: Xintao
- family-names: Xie
given-names: Liangbin
- family-names: Yu
given-names: Ke
- family-names: Chan
given-names: Kelvin C.K.
- family-names: Loy
given-names: Chen Change
- family-names: Dong
given-names: Chao
GitHub Events
Total
- Watch event: 1
- Member event: 1
- Push event: 6
- Create event: 1
Last Year
- Watch event: 1
- Member event: 1
- Push event: 6
- Create event: 1
Dependencies
- Pillow *
- addict *
- future *
- lmdb *
- numpy *
- opencv-python *
- pyyaml *
- recommonmark *
- requests *
- scikit-image *
- scipy *
- sphinx *
- sphinx_intl *
- sphinx_markdown_tables *
- sphinx_rtd_theme *
- tb-nightly *
- torch >=1.7
- torchvision *
- tqdm *
- yapf *
- Pillow *
- addict *
- future *
- lmdb *
- numpy >=1.17
- opencv-python *
- pytorch-msssim *
- pyyaml *
- requests *
- scikit-image *
- scipy *
- tb-nightly *
- torch >=1.7
- torchvision *
- tqdm *
- yapf *