raytune as docker
Some checks failed
build_docker / essential (pull_request) Successful in 1s
build_docker / build_cpu (pull_request) Successful in 4m14s
build_docker / build_easyocr (pull_request) Successful in 12m19s
build_docker / build_easyocr_gpu (pull_request) Successful in 14m2s
build_docker / build_doctr (pull_request) Successful in 12m24s
build_docker / build_doctr_gpu (pull_request) Successful in 13m10s
build_docker / build_raytune (pull_request) Successful in 1m50s
build_docker / build_gpu (pull_request) Has been cancelled

This commit is contained in:
2026-01-19 16:32:45 +01:00
parent d67cbd4677
commit 94b25f9752
20 changed files with 7214 additions and 112 deletions

View File

@@ -34,6 +34,11 @@ Se seleccionaron tres soluciones OCR de código abierto representativas del esta
*Fuente: Elaboración propia.*
**Imágenes Docker disponibles en el registro del proyecto:**
- PaddleOCR: `seryus.ddns.net/unir/paddle-ocr-gpu`, `seryus.ddns.net/unir/paddle-ocr-cpu`
- EasyOCR: `seryus.ddns.net/unir/easyocr-gpu`
- DocTR: `seryus.ddns.net/unir/doctr-gpu`
### Criterios de Éxito
Los criterios establecidos para evaluar las soluciones fueron:
@@ -322,7 +327,7 @@ Esta sección ha presentado:
### Introducción
Esta sección describe el proceso de optimización de hiperparámetros de PaddleOCR utilizando Ray Tune con el algoritmo de búsqueda Optuna. Los experimentos fueron implementados en el notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb` y los resultados se almacenaron en `src/raytune_paddle_subproc_results_20251207_192320.csv`.
Esta sección describe el proceso de optimización de hiperparámetros de PaddleOCR utilizando Ray Tune con el algoritmo de búsqueda Optuna. Los experimentos fueron implementados en [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py) con la librería de utilidades [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py), y los resultados se almacenaron en [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results).
La optimización de hiperparámetros representa una alternativa al fine-tuning tradicional que no requiere:
- Acceso a GPU dedicada
@@ -339,17 +344,17 @@ El experimento se ejecutó en el siguiente entorno:
| Componente | Versión/Especificación |
|------------|------------------------|
| Sistema operativo | Windows 10/11 |
| Python | 3.11.9 |
| Sistema operativo | Ubuntu 24.04.3 LTS |
| Python | 3.12.3 |
| PaddlePaddle | 3.2.2 |
| PaddleOCR | 3.3.2 |
| Ray | 2.52.1 |
| Optuna | 4.6.0 |
| CPU | Intel Core (multinúcleo) |
| RAM | 16 GB |
| GPU | No disponible (ejecución CPU) |
| Optuna | 4.7.0 |
| CPU | AMD Ryzen 7 5800H |
| RAM | 16 GB DDR4 |
| GPU | NVIDIA RTX 3060 Laptop (5.66 GB VRAM) |
*Fuente: Outputs del notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`.*
*Fuente: Configuración del entorno de ejecución. Resultados en `src/results/` generados por `src/run_tuning.py`.*
#### Arquitectura de Ejecución
@@ -613,7 +618,7 @@ Configuración óptima:
| text_det_unclip_ratio | 0.0 | 1.5 | -1.5 (fijado) |
| text_rec_score_thresh | **0.6350** | 0.5 | +0.135 |
*Fuente: Análisis del notebook.*
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
#### Análisis de Correlación
@@ -628,7 +633,7 @@ Se calculó la correlación de Pearson entre los parámetros continuos y las mé
| `text_rec_score_thresh` | -0.161 | Correlación débil negativa |
| `text_det_unclip_ratio` | NaN | Varianza cero (valor fijo) |
*Fuente: Análisis del notebook.*
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
**Tabla 24.** *Correlación de parámetros con WER.*
@@ -638,7 +643,7 @@ Se calculó la correlación de Pearson entre los parámetros continuos y las mé
| `text_det_box_thresh` | +0.227 | Correlación débil positiva |
| `text_rec_score_thresh` | -0.173 | Correlación débil negativa |
*Fuente: Análisis del notebook.*
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
**Hallazgo clave**: El parámetro `text_det_thresh` muestra la correlación más fuerte (-0.52 con ambas métricas), indicando que valores más altos de este umbral tienden a reducir el error. Este umbral controla qué píxeles se consideran "texto" en el mapa de probabilidad del detector.
@@ -653,7 +658,7 @@ El parámetro booleano `textline_orientation` demostró tener el mayor impacto e
| True | 3.76% | 7.12% | 12.73% | 32 |
| False | 12.40% | 14.93% | 21.71% | 32 |
*Fuente: Análisis del notebook.*
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
**Interpretación:**
@@ -741,7 +746,7 @@ optimized_config = {
| PaddleOCR (Baseline) | 7.78% | 92.22% | 14.94% | 85.06% |
| PaddleOCR-HyperAdjust | **1.49%** | **98.51%** | **7.62%** | **92.38%** |
*Fuente: Ejecución final en notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`.*
*Fuente: Validación final. Código en [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py), resultados en [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results).*
#### Métricas de Mejora
@@ -823,9 +828,9 @@ Esta sección ha presentado:
4. **Mejora final**: CER reducido de 7.78% a 1.49% (reducción del 80.9%)
**Fuentes de datos:**
- `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: Código del experimento
- `src/raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de 64 trials
- `src/paddle_ocr_tuning.py`: Script de evaluación
- [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py): Script principal de optimización
- [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py): Librería de utilidades Ray Tune
- [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results): Resultados CSV de los trials
## Discusión y análisis de resultados
@@ -1066,8 +1071,13 @@ Este capítulo ha presentado el desarrollo completo de la contribución:
**Resultado principal**: Se logró alcanzar el objetivo de CER < 2% mediante optimización de hiperparámetros, sin requerir fine-tuning ni recursos GPU.
**Fuentes de datos:**
- `src/raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de 64 trials
- `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: Notebook principal del experimento
- [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py): Script principal de optimización
- [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results): Resultados CSV de los trials
**Imágenes Docker:**
- `seryus.ddns.net/unir/paddle-ocr-gpu`: PaddleOCR con soporte GPU
- `seryus.ddns.net/unir/easyocr-gpu`: EasyOCR con soporte GPU
- `seryus.ddns.net/unir/doctr-gpu`: DocTR con soporte GPU
### Validación con Aceleración GPU