Loïc Berger

HE-Arc Ingénierie (HES-SO), Neuchâtel

Loïc Berger

Étudiant en informatique, spécialisation analyse de données

Je suis en Bachelor en informatique à la HE-Arc, avec une spécialisation en analyse de données, et titulaire d'un CFC en informatique. Ce portfolio rassemble les projets réalisés pendant mes études : apprentissage automatique, visualisation de données, applications web et développement C++.

Projets

Maquette de l'interface de démonstration

Projet IA, HES d'été ID3 · Été 2026

Détection d'émotions dans le texte

Classification multi-étiquettes de sept émotions avec RoBERTa et XLM-RoBERTa, et une application web de démonstration.

0,9841F1-macro RoBERTa, campagne v3

  • Python
  • PyTorch
  • Transformers
  • NLP
  • scikit-learn
Page d'accueil, saison 2025

P2 Développement et gestion de projet, Visualisation des données · Printemps 2026

Race Insights, dashboard Formule 1

Application web interactive qui rend les données de Formule 1 (saisons 2023 à 2026) lisibles pour un public amateur.

2023–2026saisons couvertes

  • JavaScript
  • ECharts
  • FastAPI
  • MongoDB
  • Docker
Interface Streamlit : filtres (ville, langue, format, genre, note) et films à l'affiche avec leurs séances

Génie logiciel 2 · 2025–2026

Wiki Cinéma Suisse

Pipeline complet qui récupère chaque jour les séances de cinéma sur cineman.ch, les stocke et les expose via une API et une interface web.

4étapes CI/CD : lint, build, test, deploy

  • Python
  • Scraping
  • FastAPI
  • MongoDB
  • Streamlit
Réseau routier de Neuchâtel, feux de signalisation en rouge

Algorithmes III · 2025–2026

Traffic Simulator Neuchâtel

Graphe du réseau routier de Neuchâtel extrait d'OpenStreetMap, avec ses feux de signalisation, et un visualiseur interactif.

898nœuds

  • Python
  • Graphes
  • networkx
  • OpenStreetMap
  • JavaScript
Random Forest : BPM réel (rouge) et BPM prédit (bleu)

HES d'été, Introduction aux données II · Été 2025

Estimation de la fréquence cardiaque

Estimation du rythme cardiaque à partir de signaux ECG et BVP, par traitement du signal et par régression.

≈ 0,85R², selon signal et modèle

  • Python
  • Traitement du signal
  • scikit-learn
  • Jupyter
Diagramme de classes UML

Projet fil rouge, cours de C++ (ISC1b) · 2024–2025

Jeu d'action 2D en C++

Projet fil rouge du cours de C++ : une boucle de jeu complète avec SDL 3, un personnage animé, un monstre qui tire et une difficulté progressive.

  • C++
  • SDL
  • POO
  • UML
En coursMaquettes des écrans : accueil, menu des modules, exercice Réflexe, bilan de séance, historique de progression

Projet P3 n° 214 · Automne 2026

MotriGame

Arcade de jeux de motricité pilotés par le geste, via le suivi MediaPipe par webcam.

3modes de jeu prévus

  • Python
  • MediaPipe
  • OpenCV
  • Pygame

Technologies utilisées

nombre de projets

  • Python×5
  • FastAPI×2
  • JavaScript×2
  • MongoDB×2
  • scikit-learn×2
  • C++
  • Dataviz
  • Docker
  • ECharts
  • GitLab CI
  • Graphes
  • Jupyter
  • MediaPipe
  • networkx
  • NLP
  • OpenCV
  • OpenStreetMap
  • POO
  • Pygame
  • PyTorch
  • Scraping
  • SDL
  • Starlette
  • Streamlit
  • Traitement du signal
  • Transformers
  • UML

Autres travaux de cours

← Tous les projets

Projet IA, HES d'été ID3 · Été 2026

Détection d'émotions dans le texte

Classification multi-étiquettes de sept émotions avec RoBERTa et XLM-RoBERTa, et une application web de démonstration.

Maquette de l'interface de démonstration
Afficher la capture entièreMaquette de l'interface de démonstration

En bref

Détection automatique des émotions exprimées dans un texte à l'aide de modèles transformers, avec une application web de démonstration. Le projet compare trois campagnes de jeux de données (v1, v2, v3) et mesure les modèles sur des phrases humaines réelles, pas seulement sur le jeu de test.

Chiffres clés

0,9841F1-macro RoBERTa, campagne v3
0,9665sur les phrases humaines réelles (v3)
7émotions détectées

Ce que fait le projet

  • Sept émotions : anger, fear, joy, love, neutral, sadness, surprise
  • Multi-étiquettes : un texte peut porter plusieurs émotions, une seule, ou aucune
  • Détection de langue : anglais vers RoBERTa, autre langue vers XLM-RoBERTa
  • Textes longs découpés en phrases, chacune analysée séparément
  • Confiance calibrée, et une réponse « pas d'émotion claire » quand rien ne se dégage
  • Chaîne complète rejouable : exploration, contrôle qualité, baseline TF-IDF, entraînement, calibration, seuils, évaluation

Technologies

ModèlesRoBERTa-base, XLM-RoBERTa-base (Hugging Face Transformers)
EntraînementPyTorch (CUDA 12.8), Accelerate, Datasets
Référencescikit-learn (baseline TF-IDF)
ApplicationStarlette, Uvicorn, HTML/CSS/JavaScript
Analysepandas, matplotlib, seaborn, Jupyter

Captures

← Tous les projets

P2 Développement et gestion de projet, Visualisation des données · Printemps 2026

Race Insights, dashboard Formule 1

Application web interactive qui rend les données de Formule 1 (saisons 2023 à 2026) lisibles pour un public amateur.

Page d'accueil, saison 2025

En bref

Application web interactive permettant d'explorer et de visualiser des données de Formule 1 (saisons 2023-2026) à partir de l'API publique OpenF1. L'objectif est de rendre accessibles des données complexes pour un public amateur, sans compétence technique en analyse de données. Les données sont récupérées une fois puis conservées dans MongoDB, qui sert de cache.

Chiffres clés

2023–2026saisons couvertes
7vues d'analyse
5visualisations dans la fiche pilote

Ce que fait le projet

  • Grille des pilotes et des écuries par saison
  • Statistiques détaillées d'un pilote : KPI, barres empilées, distribution, double axe, Sankey
  • Comparaison face-à-face de deux pilotes avec score composite
  • Analyse des pit stops : box plot, classements pilotes et constructeurs
  • Classements pilotes et constructeurs avec évolution sur la saison
  • Résultats de course : classement, écart au leader, distribution des points
  • Vue détaillée d'un Grand Prix : animation GPS, positions tour par tour, stratégies pneus, météo

Technologies

FrontendJavaScript ES2020 vanilla, HTML5, CSS3, ECharts 5
BackendPython 3.11, FastAPI (async), Pydantic
Base de donnéesMongoDB (driver async Motor)
Client HTTPhttpx (async, limité en débit)
ConteneurisationDocker, docker-compose
DonnéesAPI OpenF1

Captures

← Tous les projets

Génie logiciel 2 · 2025–2026

Wiki Cinéma Suisse

Pipeline complet qui récupère chaque jour les séances de cinéma sur cineman.ch, les stocke et les expose via une API et une interface web.

Interface Streamlit : filtres (ville, langue, format, genre, note) et films à l'affiche avec leurs séances
Afficher la capture entièreInterface Streamlit : filtres (ville, langue, format, genre, note) et films à l'affiche avec leurs séances

En bref

Application de consultation des séances de cinéma en Suisse, alimentée par un scraper automatique depuis cineman.ch. Le scraper normalise et déduplique les séances, un backend FastAPI les stocke dans MongoDB et les expose en REST, et une interface Streamlit permet de les filtrer. Un pipeline GitLab CI/CD contrôle, construit, teste et déploie le projet à chaque push.

Chiffres clés

4étapes CI/CD : lint, build, test, deploy
3services conteneurisés
02h00 UTCmise à jour quotidienne

Architecture

  1. cineman.ch
  2. Scraper (cron)
  3. MongoDB
  4. API FastAPI
  5. Streamlit

Ce que fait le projet

  • Scraping HTML avec BeautifulSoup : normalisation, déduplication, export JSON, retries et backoff
  • API REST FastAPI : endpoints GET/POST/DELETE, pagination et tri (alphabétique, date, note)
  • Interface Streamlit : filtres par ville, langue, format, genre et jour, recherche par titre, affiches
  • Mise à jour automatique par cron, chaque jour à 02h00 UTC
  • Pipeline CI/CD en quatre étapes : lint (flake8), build des images Docker, validation de la syntaxe et des imports, déploiement staging et production
  • Tests pytest des endpoints de l'API et des schémas Pydantic (backend/tests)
  • Déploiement reproductible avec Docker Compose (MongoDB, backend, scraper)

Technologies

ScraperPython 3.11, requests, BeautifulSoup 4, lxml
BackendFastAPI 0.120, Motor 3.7 (MongoDB async), Pydantic 2.12
Base de donnéesMongoDB 7.0
FrontendStreamlit, thème sombre personnalisé
CI/CDGitLab CI, flake8, Docker-in-Docker, GitLab Container Registry, pytest
InfrastructureDocker Compose, cron
← Tous les projets

Algorithmes III · 2025–2026

Traffic Simulator Neuchâtel

Graphe du réseau routier de Neuchâtel extrait d'OpenStreetMap, avec ses feux de signalisation, et un visualiseur interactif.

Réseau routier de Neuchâtel, feux de signalisation en rouge

En bref

Visualisation du réseau routier de Neuchâtel avec localisation des feux de signalisation, à partir des données OpenStreetMap. Un notebook Python construit le graphe routier voiture, rattache chaque feu au nœud le plus proche et exporte le résultat en JSON, relu par un visualiseur interactif en HTML et JavaScript.

Chiffres clés

898nœuds
1932arêtes
39feux de signalisation

Ce que fait le projet

  • Téléchargement du réseau routier voiture de Neuchâtel avec osmnx
  • Rattachement de chaque feu de signalisation OSM au nœud le plus proche du graphe
  • Export du graphe en JSON
  • Visualiseur interactif du réseau dans le navigateur

Technologies

ExtractionPython, osmnx, networkx, Jupyter
VisualisationHTML, JavaScript
DonnéesOpenStreetMap
← Tous les projets

HES d'été, Introduction aux données II · Été 2025

Estimation de la fréquence cardiaque

Estimation du rythme cardiaque à partir de signaux ECG et BVP, par traitement du signal et par régression.

Random Forest : BPM réel (rouge) et BPM prédit (bleu)

En bref

Exploration et analyse de signaux physiologiques (ECG, BVP…) issus d'un jeu de données, puis estimation de la fréquence cardiaque (BPM) par traitement du signal et par apprentissage automatique.

Chiffres clés

≈ 0,85R², selon signal et modèle
≈ 2–3BPM d'erreur absolue moyenne
≈ 0,90corrélation

Démarche

  1. Exploration du jeu de donnéesContrôle d'intégrité (valeurs manquantes, NaN, valeurs aberrantes), visualisation et corrélations par activité.
  2. Extraction de caractéristiquesFenêtrage et segmentation des signaux par activité, analyse fréquentielle par FFT.
  3. Estimation depuis l'ECGDétection des pics R, intervalles entre battements, puis BPM, comparés aux valeurs du jeu de données.
  4. Régression BVP vers BPMRégression linéaire puis non linéaire (Random Forest, scikit-learn), avec et sans mélange des données.

Technologies

SignalNumPy, SciPy (find_peaks, FFT)
Modèlesscikit-learn (régression linéaire, Random Forest), statsmodels
Analysepandas, matplotlib, seaborn, Jupyter

Captures

← Tous les projets

Projet fil rouge, cours de C++ (ISC1b) · 2024–2025

Jeu d'action 2D en C++

Projet fil rouge du cours de C++ : une boucle de jeu complète avec SDL 3, un personnage animé, un monstre qui tire et une difficulté progressive.

Diagramme de classes UML
Afficher la capture entièreDiagramme de classes UML

En bref

Exercice « fil rouge » développé par étapes pendant le semestre pour mettre en pratique les notions du cours dans un projet concret. Le jeu met en œuvre une boucle de jeu complète avec SDL : gestion des événements clavier, textures et animations du personnage, interactions avec un monstre et ses projectiles, score et journal des événements.

Ce que fait le projet

  • Personnage à états (attente, course, attaque, mort) avec animations par sprites
  • Déplacements ZQSD ou flèches, collisions avec les murs
  • Monstre qui tire des projectiles, invincibilité temporaire après un coup
  • Score affiché à l'écran et difficulté qui augmente avec le score
  • Journal horodaté des événements dans un fichier texte
  • Objets bonus par héritage et polymorphisme (classe abstraite Item, SpeedBoost, HealthPotion)

Technologies

LangageC++
GraphismeSDL 3
OutilsVisual Studio
← Tous les projets

Projet P3 n° 214 · Automne 2026

MotriGame

Arcade de jeux de motricité pilotés par le geste, via le suivi MediaPipe par webcam.

Maquettes des écrans : accueil, menu des modules, exercice Réflexe, bilan de séance, historique de progression

En bref

Application desktop multi-jeux pilotée à la main, utilisable en démonstration technique ou en rééducation motrice. Chaque jeu reprend un test moteur ou cognitif reconnu et restitue des métriques en fin de partie, pas seulement un score. Le cahier des charges est en cours ; le développement n'a pas encore démarré.

Chiffres clés

3modes de jeu prévus

Prévu

  • Réflexe et inhibition : cibles Go/No-Go, temps de réaction moyen et écart-type
  • Interception et esquive : objets à vitesse croissante, suivi corps entier
  • Équilibre : objet virtuel à maintenir sur la tête ou la main
  • Classement local par jeu et tableau de bord de progression

Technologies

Suivi du gesteMediaPipe (Tasks API)
ImageOpenCV
JeuPygame
DonnéesCSV ou SQLite embarqué