99 lines
3.0 KiB
HTML
99 lines
3.0 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="es">
|
||
|
|
<head>
|
||
|
|
<meta charset="utf-8">
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
|
<title>TFM - Optimización de Hiperparámetros OCR con Ray Tune</title>
|
||
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.0.4/dist/reveal.min.css">
|
||
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.0.4/dist/theme/white.min.css">
|
||
|
|
<link rel="stylesheet" href="styles.css">
|
||
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4"></script>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<div class="reveal">
|
||
|
|
<div class="slides" id="slides-container">
|
||
|
|
<!-- Slides are loaded dynamically from slides/ folder -->
|
||
|
|
</div>
|
||
|
|
<!-- Fixed bottom accent bar -->
|
||
|
|
<div id="bottom-bar"></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<script src="https://cdn.jsdelivr.net/npm/reveal.js@5.0.4/dist/reveal.min.js"></script>
|
||
|
|
<script src="charts.js"></script>
|
||
|
|
<script>
|
||
|
|
// Slide files in order - edit this list to add/remove/reorder slides
|
||
|
|
const slideFiles = [
|
||
|
|
'slides/01_title.html',
|
||
|
|
'slides/02_agenda.html',
|
||
|
|
'slides/03_motivation.html',
|
||
|
|
'slides/04_problem.html',
|
||
|
|
'slides/05_objectives.html',
|
||
|
|
'slides/06_state_of_art.html',
|
||
|
|
'slides/07_methodology.html',
|
||
|
|
'slides/08_architecture.html',
|
||
|
|
'slides/09_search_space.html',
|
||
|
|
'slides/10_benchmark.html',
|
||
|
|
'slides/11_trials.html',
|
||
|
|
'slides/12_key_finding.html',
|
||
|
|
'slides/13_correlations.html',
|
||
|
|
'slides/14_validation.html',
|
||
|
|
'slides/15_gpu.html',
|
||
|
|
'slides/16_optimal_config.html',
|
||
|
|
'slides/17_conclusions.html',
|
||
|
|
'slides/18_future_work.html',
|
||
|
|
'slides/19_thanks.html',
|
||
|
|
];
|
||
|
|
|
||
|
|
// Load all slides then initialize Reveal
|
||
|
|
async function loadSlides() {
|
||
|
|
const container = document.getElementById('slides-container');
|
||
|
|
|
||
|
|
for (const file of slideFiles) {
|
||
|
|
try {
|
||
|
|
const response = await fetch(file);
|
||
|
|
if (!response.ok) throw new Error(`Failed to load ${file}: ${response.status}`);
|
||
|
|
const html = await response.text();
|
||
|
|
container.insertAdjacentHTML('beforeend', html);
|
||
|
|
} catch (err) {
|
||
|
|
console.error(err);
|
||
|
|
container.insertAdjacentHTML('beforeend',
|
||
|
|
`<section><h2 style="color:red;">Error loading ${file}</h2><p>${err.message}</p></section>`
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Initialize Reveal.js after all slides are loaded
|
||
|
|
Reveal.initialize({
|
||
|
|
hash: true,
|
||
|
|
slideNumber: 'c/t',
|
||
|
|
transition: 'slide',
|
||
|
|
transitionSpeed: 'default',
|
||
|
|
width: 1280,
|
||
|
|
height: 720,
|
||
|
|
margin: 0.06,
|
||
|
|
center: false,
|
||
|
|
controlsTutorial: false
|
||
|
|
});
|
||
|
|
|
||
|
|
// Create charts on slide change
|
||
|
|
Reveal.on('slidechanged', (event) => {
|
||
|
|
const chartType = event.currentSlide.dataset.chart;
|
||
|
|
if (chartType && chartCreators[chartType]) {
|
||
|
|
setTimeout(() => chartCreators[chartType](), 100);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// Check initial slide
|
||
|
|
Reveal.on('ready', (event) => {
|
||
|
|
const chartType = event.currentSlide.dataset.chart;
|
||
|
|
if (chartType && chartCreators[chartType]) {
|
||
|
|
setTimeout(() => chartCreators[chartType](), 300);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
loadSlides();
|
||
|
|
</script>
|
||
|
|
</body>
|
||
|
|
</html>
|