projet-fin-etude-rapport/src/paper.tex

429 lines
29 KiB
TeX
Raw Normal View History

2023-06-06 18:47:56 +00:00
\documentclass[
11pt,
a4paper,
twoside,
openany
]{book}
% Packages
\usepackage{fontspec}
\usepackage{libertinus-otf}
\usepackage[a4paper, hmargin=2cm, vmargin=3cm]{geometry}
\usepackage{graphicx}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage[numbers]{natbib}
\usepackage[french]{babel}
\usepackage{glossaries}
\usepackage{nomencl}
2023-06-07 18:47:28 +00:00
\usepackage{caption}
2023-06-06 18:47:56 +00:00
% pdfx loads both hyperref and xcolor internally
% \usepackage{hyperref}
% \usepackage{xcolor}
\usepackage[a-3u]{pdfx}
% We use \hypersetup to pass options to hyperref
\hypersetup{
colorlinks = true,
breaklinks = true,
}
% paragraph settings
\setlength{\parindent}{0cm}
\setlength{\parskip}{7pt}%
% assets path
\graphicspath{{../assets/}}
% header and footer settings
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\fancyhf{}
\cfoot{}
\rfoot{\hypersetup{hidelinks}\thepage/\pageref{LastPage}}
\title{
\huge \textbf{Rapport de Projet de Fin d'Études}
}
\author{
Laurent Fainsin \\
{\tt laurent@fainsin.bzh}
}
\date{
\vspace{10.5cm}
Département Sciences du Numérique \\
Troisième année \\
2022 — 2023
}
\newacronym{ssa}{Safran S.A.}{Safran Société Anonyme}
\newacronym{n7}{ENSEEIHT}{École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunications}
\newacronym{pfe}{PFE}{Projet de Fin d'Études}
\newacronym{gnn}{GNN}{Graph Neural Networks}
\newacronym{cnn}{CNN}{Convolutional Neural Network}
\newacronym{arm}{ARM}{Auto-Regressive Model}
\newacronym{nf}{NF}{Normalizing Flows}
\newacronym{vdm}{VDM}{Variational Diffusion Models}
2023-06-06 18:47:56 +00:00
\newacronym{ldm}{LDM}{Latent Diffusion Models}
\newacronym{ddpm}{DDPM}{Denoising Diffusion Probabilistic Models}
\newacronym{vae}{VAE}{Variational Auto-Encoder}
\newacronym{gan}{GAN}{Generative Adversarial Network}
\newacronym{nerf}{NeRF}{Neural Radiance Fields}
\newacronym{ml}{ML}{Machine Learning}
\newacronym{dl}{DL}{Deep Learning}
\newacronym{ai}{AI}{Artificial Intelligence}
\newacronym{pca}{PCA}{Principal Component Analysis}
\newacronym{pde}{PDE}{Partial Differential Equation}
\newacronym{cfd}{CFD}{Computational Fluid Dynamics}
\newacronym{ann}{ANN}{Artificial Neural Network}
\newacronym{mlp}{MLP}{Multi-Layer Perceptron}
\newacronym{relu}{ReLU}{Rectified Linear Unit}
\newacronym{mse}{MSE}{Mean Squared Error}
\newacronym{mae}{MAE}{Mean Absolute Error}
\newacronym{rmse}{RMSE}{Root Mean Squared Error}
\newacronym{mape}{MAPE}{Mean Absolute Percentage Error}
\makenoidxglossaries
% \nomenclature{DDPM}{test}
% \makenomenclature
\begin{document}
\frontmatter
\vbox{
\centering
\includegraphics[width=5cm]{inp_n7.jpg}
\hspace{1cm}
\includegraphics[width=5cm]{safran_logo.png}
\vspace{2cm}
\maketitle
}
{
\thispagestyle{empty}
\chapter*{Remerciements}
\addcontentsline{toc}{chapter}{Remerciements}
}
Je tiens à remercier Xavier Roynard, Michel Alessandro Bucci et Brian Staber, mes tuteurs de stage, ainsi que les équipes de \gls{ssa} pour leur accueil et leur accompagnement tout au long de ce stage.
J'aimerais également remercier l'ensemble de mes professeurs de l'\gls{n7}, pour m'avoir permis d'acquérir les connaissances nécessaires à la réalisation de ce projet.
\clearpage
{
\hypersetup{hidelinks}
\addcontentsline{toc}{chapter}{Table des matières}
\tableofcontents
}
\clearpage
{
\hypersetup{hidelinks}
\addcontentsline{toc}{chapter}{Table des figures}
\listoffigures
}
\clearpage
{
\hypersetup{hidelinks}
\addcontentsline{toc}{chapter}{Glossaire}
\printnoidxglossaries
}
% {
% \hypersetup{hidelinks}
% \addcontentsline{toc}{chapter}{Nomenclature}
% \printnomenclature
% }
% \listoftables
% \addcontentsline{toc}{chapter}{Liste des tableaux}
\mainmatter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Introduction}
\begin{figure}[h]
\centering
\includegraphics[width=16cm]{aube.jpg}
\caption{Aubes du moteur Leap-1A}
\end{figure}
Dans le domaine industriel, les codes de simulation numérique sont désormais un outil indispensable pour la conception de systèmes complexes, en particulier pour les modules de réacteurs d'avions ou d'hélicoptères.
De telles simulations sont par exemple utilisées pour évaluer les performances aérodynamiques d'un composant tel qu'une aube de turbine. En partant d'une géométrie de nominale, dans la phase d'optimisation, la pièce est progressivement modifiée afin d'optimiser certaines quantités d'intérêt.
Malheureusement, ce processus de conception itératif présente deux limites:
\begin{itemize}
\item Le coût de calcul d'une simulation numérique de type \gls{cfd} est lourd, plusieurs heures sont nécessaires pour un unique calcul.
\item Le nombre de degrés de liberté pour la géométrie d'un profil complexe discrétisée avec un maillage non structuré est important, ce qui rend impossible l'exploration complète de l'espace de recherche de la solution optimale.
\end{itemize}
\smallskip
Les approches d'optimisation assistées par surfaces de réponse permettent de répondre partiellement à ces difficultés. Cependant cette stratégie admet deux limitations intrinsèques:
\begin{itemize}
\item Elles nécessitent un long de travail de paramétrisation.
\item Elles souffrent grandement du fléau de la dimension, i.e. la taille des problèmes considérés est généralement limitée.
\end{itemize}
\smallskip
En particulier, une représentation latente parcimonieuse de la géométrie faciliterait l'exploration de l'espace de recherche et l'utilisation de métamodèles classiques pour la prédiction des quantités d'intérêt.
2023-06-08 18:53:29 +00:00
Récemment, les modèles génératifs profonds comme les \gls{vae} ou les \gls{gan} ont été appliqués avec succès à des données structurées (typiquement des images). Ceux-ci permettent de construire un espace latent représentatif d'un jeu de données donné et de générer de nouveaux échantillons qui partagent des caractéristiques importantes du jeu de données d'entraînement.
2023-06-06 18:47:56 +00:00
Cependant, dans le cas de la simulation numérique, les données prennent souvent la forme de graphes en raison de l'utilisation de maillages pour représenter les surfaces pièces à concevoir. Dans le contexte d'une application industrielle, il est donc crucial d'adapter les modèles susmentionnés afin de pouvoir utiliser des données non structurées en entrée. Les \gls{gnn} permettent de traiter des données non structurées telles que des maillages ou des nuages de points.
Différentes solutions pour ont été proposées dans la littérature pour réaliser des convolutions et agrégations sur graphes ou nuages de points. Cependant, peu d'entre elles conviennent à l'application des réseaux sur graphes sur des données générées par des simulations numériques.
Le but de ce stage est d'évaluer le potentiel de ces nouvelles méthodes sur des jeux de données réalisés en internes et représentatifs pour \gls{ssa}. Et éventuellement de proposer des améliorations spécifiques aux maillages utilisés en simulations numériques.
2023-06-08 18:53:29 +00:00
L'étude vise tout d'abord à étudier la bibliographie disponible d'un côté sur les modèles génératifs et d'un autre sur les réseaux convolutionnels sur graphes. L'objectif est, dans une première phase, de faire un benchmark des différentes solutions de modèles génératifs sur graphe de type \gls{vae} et \gls{gan} afin de créer une représentation latente des géométries d'aubes 3D. Pour cela un dataset avec quelques milliers d'échantillons d'aubes 3D et leurs performances aérodynamique est disponible à \gls{ssa}. Le modèle résultant sera ensuite testé pour générer de nouvelles géométries et pour prédire les quantités d'intérêt par le biais de métamodèles classiques. Enfin, si l'avancement sur les premières tâches le permet, d'autres modèles génératifs peuvent être considérés comme le \gls{nf} ou les \gls{ldm}.
2023-06-06 18:47:56 +00:00
\chapter{État de l'art}
Ce chapitre présente les différents concepts et méthodes nécessaires à la compréhension du travail réalisé durant ce stage.
2023-06-07 18:47:28 +00:00
Dans le cadre de cette étude, nous nous intéressons à la génération de géométries d'aubes de turbines. Ces géométries font parties d'une modalitées de données peu commune, les maillages (qui sont un type de graphes) ou les nuages de points. Ces modalités sont relativement peu étudiée dans la littérature de l'apprentissage automatique comparé aux modalités plus classique comme les images, le texte ou encore l'audio. En effet, ces données sont non structurées et il est donc nécessaire d'utiliser des méthodes spécifiques pour les traiter.
2023-06-06 18:47:56 +00:00
Il reste pertinent de noter que les méthodes présentées dans ce chapitre sont récentes et que la littérature évolue très rapidement. De plus, les méthodes présentées ici sont très nombreuses et il est impossible de toutes les présenter. Nous avons donc choisi de présenter les méthodes les plus pertinentes pour permettre une bonne compréhension globale du travail réalisé durant ce stage.
\cite{peng_shape_2021}
\cite{sulzer_deep_2022}
\glsreset{gnn}
\section{\gls{gnn}}
2023-06-07 18:47:28 +00:00
\subsection{Définition}
Les graphes sont des structures de données qui permettent de représenter des relations entre des entités. Un graphe est défini par un ensemble de nœuds et un ensemble d'arêtes. Les arêtes représentent des relations entre les nœuds. Ces relations peuvent être de différents types, comme des relations de parenté, de proximité ou encore de similarité. Les graphes peuvent être dirigés ou non. Dans le cas d'un graphe dirigé, les arêtes sont orientées et représentent une relation unidirectionnelle. Dans le cas d'un graphe non dirigé, les arêtes ne sont pas orientées et représentent une relation bidirectionnelle. Les graphes peuvent être pondérés ou non. Dans le cas d'un graphe pondéré, les arêtes sont associées à une valeur qui représente l'intensité de la relation entre les nœuds.
Les graphes permettent par exemple de représenter de manière intuitive des réseaux de communication, des réseaux sociaux, des molécules ou encore des maillages. Les graphes sont donc une modalité de données très commune dans le domaine de l'ingénierie.
\begin{figure}[h]
\centering
\includegraphics[width=14cm]{example-graphs.jpg}
\caption{Exemple de graphes}
\vspace*{-11pt}
2023-06-08 18:53:29 +00:00
\caption*{Source: \href{https://blogs.nvidia.com/blog/2022/10/24/what-are-graph-neural-networks/}{NVIDIA, 2022}}
2023-06-07 18:47:28 +00:00
\label{fig:graph_example}
\end{figure}
2023-06-08 18:53:29 +00:00
De manière plus générale, les graphes peuvent être vu comme une généralisation des données structurées comme les images ou les séries temporelles. En effet, les graphes peuvent être vus comme des données structurées où les relations entre les entités sont définies par la position des entités dans l'espace ou dans le temps. Les graphes peuvent donc être utilisés pour représenter des données structurées, mais aussi des données non structurées comme des maillages ou des nuages de points.
2023-06-07 18:47:28 +00:00
Les \gls{gnn} sont une famille de modèles qui permettent de traiter ce type de structures. Ces modèles sont basés sur des opérations de convolution et d'agrégation, similairement aux opérations de convolution et de pooling utilisées dans les réseaux de neurones classiques pour les données structurées comme les images. Des examples d'application de ces réseaux sont la classification de documents, la détection de fraude, la génération de molécules ou des systèmes de recommandation.
2023-06-06 18:47:56 +00:00
\cite{velickovic_graph_2018}
\cite{gao_graph_2019}
\cite{brody_how_2022}
2023-06-08 18:53:29 +00:00
\cite{kipf_semi-supervised_2017}
2023-06-06 18:47:56 +00:00
\cite{qi_pointnet_2017}
\cite{qi_pointnet_2017-1}
\section{Modèles génératifs}
2023-06-08 18:53:29 +00:00
Les modèles génératifs sont une famille de modèles qui permettent de générer de nouvelles données d'une distribution de données au préalablement apprise. Ces modèles sont très utilisés dans le domaine de l'apprentissage automatique pour générer des images, du texte ou encore de la musique. Ces modèles sont encore relativement peu utilisés dans le domaine de l'ingénierie pour générer des pièces industrielles.
Il existe plusieurs sous familles de modèles génératifs, chacune basées sur des principes différents, possédant ainsi des avantages et des inconvénients. Il est donc important de bien comprendre les différences entre ces modèles pour pouvoir choisir le modèle le plus adapté à la problématique.
\begin{figure}
\centering
\includegraphics[width=14cm]{generative-overview.png}
\caption{Principales familles de modèles génératifs}
\vspace*{-11pt}
\caption*{Source: \href{https://lilianweng.github.io/posts/2021-07-11-diffusion-models/}{Lilian Weng, 2021}}
\label{fig:generative_models}
\end{figure}
2023-06-06 18:47:56 +00:00
\cite{faez_deep_2020}
\cite{guo_systematic_2022}
\cite{zhu_survey_2022}
\glsreset{gan}
\subsection{\gls{gan}}
Les \gls{gan} sont la famille de modèles génératifs la plus connue, et aussi les plus anciens\cite{goodfellow_generative_2014}. Ces modèles sont basés sur un principe de compétition entre deux réseaux de neurones. Le premier réseau, appelé générateur, a pour but de générer de nouvelles données. Le second réseau, appelé discriminateur, a pour but de distinguer les données générées par le générateur des données réelles. Le générateur est entraîné pour tromper le discriminateur, tandis que le discriminateur est entraîné pour distinguer les données générées des données réelles. Ce principe de compétition permet d'entraîner le générateur à générer des données de plus en plus réalistes.
Les \gls{gan} ont su démontrer leur efficacité pour générer des images réalistes. Cependant, ces modèles sont très difficiles à entraîner\cite{arjovsky_towards_2017}. Les \gls{gan} sont par exemple suceptible au problème des \textit{mode collapse}, où le générateur génère toujours la même image, au problème de \textit{non convergence}, où le générateur et/ou le discriminateur ont une fonction de cout instable et ne convergent ainsi pas vers un équilibre de Nash, ou encore au problème de \textit{vanishing gradient}, où le discriminateur devient trop efficace et empêche le générateur d'apprendre.
Au fil des années, de nombreuses améliorations\cite{salimans_improved_2016} et variations (WGAN\cite{arjovsky_wasserstein_2017}, CycleGAN, SGAN, DiscoGAN...) ont été proposées, mais ces modèles restent complexes à entraîner et à évaluer. De plus, ces modèles sont très sensibles aux hyperparamètres et nécessitent une grande quantité de données pour être efficaces.
% https://lilianweng.github.io/posts/2017-08-20-gan/
% TODO plein de refs à choper dans le blog
% placer auto-supervisé
% placer, le but est d'apprendre une distribution de données qui se rapproche fortement de la distribution des données d'entrainement
% on esssaie donc d'apprend l'identité
2023-06-06 18:47:56 +00:00
\glsreset{vae}
\subsection{\gls{vae}}
% vae, voisins des AE
Les \gls{vae} sont une deuxième famille de modèles génératifs, probablement tout aussi connus que les \gls{gan}, et plutôt ancien. Ces modèles sont basés sur deux réseaux de neurones entrainés conjointement: un encodeur et un décodeur. Le but de l'encodeur est de transformer les données d'entrée en une distribution de probabilité, tandis que le but du décodeur est de générer de nouvelles données à partir de cette distribution. Tout comme pour les \gls{gan}, le principe de ces modèles est donc d'estimer une distribution de données qui se rapproche fortement de la distribution des données d'entrainement, on leur demande donc d'apprendre l'identité.
La particulité des \gls{vae} provient donc de cet espace (latent) intermédiaire entre l'encodeur et le décodeur. Cet espace est défini par l'architecture du réseau et peut ainsi être aussi petit que l'on le souhaite. L'encodeur et décodeur peuvent alors être vu comme des opérateurs de compressions et de décompression.
Cet espace latent permet de générer de nouvelles données en interpolant entre deux points de cet espace. Cet espace latent permet aussi de générer de nouvelles données en modifiant légèrement un point de cet espace. Ces deux propriétés permettent de générer de nouvelles données à partir de données existantes, ce qui est très utile dans le domaine de l'ingénierie.
Les \gls{vae} constituent une autre famille de modèles génératifs, également bien connue comme les \gls{gan} et sont relativement anciens \cite{kipf_variational_2016}. Ces modèles reposent sur l'entraînement simultané de deux réseaux de neurones : un encodeur et un décodeur. L'objectif de l'encodeur est de transformer les données d'entrée en une distribution de probabilité, tandis que le décodeur génère de nouvelles données à partir de cette distribution. Comme pour les GAN, ces modèles visent à estimer une distribution de données qui se rapproche le plus possible de la distribution des données d'entraînement, c'est-à-dire qu'ils apprennent à reproduire fidèlement les données d'origine.
La particularité des VAE réside dans l'espace latent intermédiaire entre l'encodeur et le décodeur. Cette dimension latente est définie par l'architecture du réseau et peut être réduite à volonté. L'encodeur et le décodeur peuvent ainsi être considérés comme des opérateurs de compression et de décompression.
L'intéret de cet espace latent est qu'il permet de générer de nouvelles données en interpolant entre deux points de cet espace. De même, il permet de générer de nouvelles données en modifiant légèrement un point spécifique de cet espace. Ces deux caractéristiques permettent la génération de nouvelles données à partir de données existantes, ce qui se révèle extrêmement utile dans le domaine de l'ingénierie, offrant ainsi des possibilités de création et de conception de nouvelles données basées sur des modèles existants.
2023-06-08 18:53:29 +00:00
\cite{burgess_understanding_2018}
\cite{simonovsky_graphvae_2018}
2023-06-06 18:47:56 +00:00
\cite{kingma_auto-encoding_2022}
\cite{alemi_deep_2019}
\cite{shah_auto-decoding_2020}
\cite{doersch_tutorial_2021}
\cite{yacoby_failure_2021}
\cite{kim_setvae_2021}
\cite{salha-galvan_contributions_2022}
\cite{higgins_beta-vae_2022}
\glsreset{nf}
\subsection{\gls{nf}}
Les \gls{nf} sont une autre classe de modèles génératifs qui ont gagné en popularité ces dernières années. Ces modèles se basent des transformations inversibles et différentiables. Ces transformations sont appliquées à une distribution de base, généralement une distribution simple comme une gaussienne, pour obtenir une distribution plus complexe et plus proche de la distribution des données réelles.
L'idée principale des \gls{nf} est d'apprendre à modéliser la transformation de la distribution de base vers la distribution cible. Les transformations inversibles utilisées dans les \gls{nf} sont souvent paramétrisées par des réseaux de neurones, ce qui permet d'apprendre des fonctions non linéaires complexes. En utilisant plusieurs transformations en séquence, on peut construire des modèles génératifs flexibles capables de capturer des distributions complexes.
2023-06-06 18:47:56 +00:00
\cite{su_f-vaes_2018}
\cite{yang_pointflow_2019}
\glsreset{vdm}
\subsection{\gls{vdm}}
2023-06-06 18:47:56 +00:00
\cite{song_generative_2020}
\cite{thomas_kpconv_2019}
\cite{tang_searching_2020}
\cite{liu_point-voxel_2019}
\cite{zhou_3d_2021}
\cite{nguyen_point-set_2021}
\cite{zeng_lion_2022}
\cite{nichol_point-e_2022}
\glsreset{arm}
\subsection{\gls{arm}}
Les \gls{gan} sont largement reconnus comme la famille la plus célèbre et la plus ancienne de modèles génératifs \cite{goodfellow_generative_2014}. Ces modèles reposent sur un principe compétitif impliquant deux réseaux neuronaux. Le générateur, le premier réseau, est chargé de produire de nouvelles données, tandis que le discriminateur, le second réseau, cherche à distinguer les données générées par le générateur des données réelles. L'apprentissage des GAN repose sur l'idée que le générateur doit tromper le discriminateur, tandis que le discriminateur doit devenir de plus en plus habile à discriminer les données générées des données réelles. Ce mécanisme compétitif permet d'entraîner le générateur à produire des données de plus en plus réalistes.
Les GAN se sont révélés très efficaces pour générer des images réalistes. Cependant, ces modèles sont notoirement difficiles à entraîner \cite{arjovsky_towards_2017}. Ils sont sensibles à divers problèmes tels que l'effondrement du mode (\textit{mode collapse}), où le générateur produit constamment la même image, la non-convergence (\textit{non convergence}), où le générateur et/ou le discriminateur ont une fonction de coût instable et ne convergent pas vers un équilibre de Nash, ainsi que le problème du gradient qui disparaît (\textit{vanishing gradient}), où le discriminateur devient trop performant et entrave l'apprentissage du générateur.
Au fil des années, de nombreuses améliorations \cite{salimans_improved_2016} et variantes (WGAN \cite{arjovsky_wasserstein_2017}, CycleGAN, SGAN, DiscoGAN, etc.) ont été proposées pour remédier à ces problèmes, mais ces modèles restent complexes à entraîner et à évaluer. De plus, ils sont extrêmement sensibles aux hyperparamètres et nécessitent une quantité considérable de données pour être efficaces.
\cite{nash_polygen_2020}
\cite{liao_efficient_2020}
2023-06-06 18:47:56 +00:00
\glsreset{nerf}
\subsection{\gls{nerf}}
Les \gls{nerf} représentent une autre famille de modèles génératifs qui ont gagné en popularité récemment. Ces modèles ont la capacité de générer des rendus 3D hautement réalistes à partir de données d'entraînement en utilisant des réseaux de neurones. Contrairement aux approches traditionnelles de rendu 3D basées sur des maillages, les \gls{nerf} exploitent des représentations continues des scènes en décrivant les propriétés radiométriques et géométriques en chaque point de l'espace 3D.
Le principe des \gls{nerf} est de modéliser une fonction de densité de rayon (ou "ray density function") qui caractérise l'interaction de la lumière avec les objets de la scène. Cette fonction est ensuite utilisée pour estimer la couleur et la profondeur des rayons traversant la scène, permettant ainsi de générer des images photoréalistes.
L'un des aspects fascinants des \gls{nerf} réside dans leur capacité à apprendre des scènes complexes et à générer des rendus à partir d'un nombre limité de vues ou de données d'entraînement. Grâce à leur architecture neuronale et à leur capacité à modéliser la distribution des couleurs et des formes, les \gls{nerf} sont en mesure de synthétiser des scènes réalistes même à partir de quelques images.
Dans notre cas, étant donné que notre ensemble de données ne convient pas à l'application des \gls{nerf}, nous n'utiliserons pas cette approche spécifique.
2023-06-06 18:47:56 +00:00
\cite{takikawa_neural_2021}
\cite{nam_3d-ldm_2022}
\chapter{Déroulement du stage}
Ce chapitre présente un aperçu détaillé du déroulement de mon stage de 6 mois au sein de \gls{ssa}. Tout au long de cette période, j'ai travaillé en tant que Stagiaire Ingénieur en Machine Learning au sein du département Safran Techn, dans l'équipe flex (acronyme), dont le but est de développer des outils de simulation et de modélisation pour les besoins de \gls{ssa}. J'ai été encadré par Xavier Roynard, Michel Alessandro Bucci et Brian Staber.
Je décrirai dans les prochaines sections les différentes étapes de mon stage, les tâches qui m'ont été confiées ainsi que les projets auxquels j'ai contribué.
2023-06-06 18:47:56 +00:00
\section{Lecture de la littérature}
Les premiers jours de mon stage ont été dédiés à mon intégration au sein de l'entreprise. J'ai rencontré mes tuteurs de stage qui m'ont présenté l'équipe et les différents membres du département. Une visite des locaux de l'entreprise m'a été proposée, accompagnée d'explications sur les mesures de sécurité en vigueur. J'ai également pris connaissance des outils et des logiciels utilisés dans le cadre de mon projet. Ces premiers jours ont été l'occasion pour moi de participer à des réunions d'équipe, en présence d'autres stagiaires et d'ingénieurs, afin de me familiariser avec les différents projets en cours et de préciser les objectifs de mon stage.
Les deux premières semaines de mon stage ont été dédiées à la lecture approfondie de la littérature scientifique liée à mon domaine d'étude. J'ai effectué des recherches bibliographiques afin de recueillir des informations pertinentes sur les avancées récentes, les théories et les techniques utilisées dans le domaine des modèles génératifs. J'ai majoritairement consulté des articles de conférence et des documents en ligne pour obtenir une vue d'ensemble complète des travaux antérieurs réalisés par des chercheurs et des ingénieurs. Pour appronfondir mes recherches, j'ai également utilisé des outils, tels que Semantic Scholar et arxiv, pour trouver les codes sources des papiers ainsi que des papiers ayant pour citation ou référence les articles que j'avais déjà lus, me permettant ainsi de découvrir de nouvelles publications pertinentes.
Lors de ma lecture, j'ai pris des notes sur les concepts clés, les méthodologies et les résultats des études. J'ai analysé et comparé les différentes approches proposées dans la littérature afin de mieux comprendre les avantages et les limites de chaque méthode. Cette phase de lecture m'a permis d'acquérir une solide base de connaissances et de me familiariser avec les travaux existants dans le domaine. Ces connaissances préliminaires ont été essentielles pour orienter mes travaux ultérieurs de développement et de recherche lors du stage.
Au cours de cette période, j'ai également eu des discussions régulières avec mes tuteurs de stage pour discuter des articles lus, clarifier certains points et définir la direction à suivre pour mon projet. Ces échanges m'ont permis d'approfondir ma compréhension et de cibler les aspects spécifiques sur lesquels je devais me concentrer lors des prochaines phases de mon stage.
2023-06-06 18:47:56 +00:00
\section{Prise en main des données}
En parallèle de ma lecture de la littérature, j'ai entamé l'exploration des données fournies par \gls{ssa}. J'ai acquis une compréhension des différents formats de données spécifiques utilisés par l'entreprise pour stocker les résultats des simulations numériques de mécaniques des fluides. De plus, j'ai appris à manipuler ces données en utilisant des outils tels que Paraview.
Le principal ensemble de données sur lequel j'ai travaillé pendant mon stage s'appelle Rotor37\_1200. Il s'agit d'un ensemble de données de simulation \gls{cfd} d'une des 37 pales d'une turbine d'un moteur d'avion. Cet ensemble de données contient 1200 échantillons, qui ont été créé via un processus d'optimisation consistant en l'exploration de paramètres en quête de la maximisation d'un critère de performance.
Chaque aube du jeu de données est une déformation de l'aube nominale. Ainsi tout les maillages possèdent le même nombre de points et la même connectivité. Pour donner un ordre de grandeur, chaque maillage est constitué de 29773 points, 59328 triangles et 89100 arêtes.
Chaque échantillon est constitué de deux fichiers distincts. Le premier est un fichier au format .vtk qui contient le maillage de l'aube, comprenant les positions 3D, les normales et la connectivité de chaque point du maillage. Ce fichier .vtk inclut également les champs physiques associés à chaque point, tels que la température, la pression, etc. Le second fichier est un fichier .csv qui contient des métadonnées globales spécifiques à l'échantillon, telles que les entrées et les sorties de la simulation \gls{cfd}.
\begin{figure}
\centering
\includegraphics[width=0.8\textwidth]{online_adaptative_sampling_DOE}
\caption{Rotor37\_1200}
\label{fig:rotor37_1200}
\end{figure}
2023-06-06 18:47:56 +00:00
\section{Test de l'état de l'art}
Les implémentations que j'ai pris le temps de tester car le code était disponible sont les suivantes :
VAE (sur des images)
Graph VAE (geometric)
Graph U-net (geometric)
Pointflow (à l'origine du dataset PointFlow, une modif de shapenet, code à chier)
pointnet (pointcloud unquement, pas de graphe, code original à chier, mais plein d'implems mieux)
PVCNN (code à chier, basé sur pointnet)
SPVCNN (torchsparse, pas réussi à faire marcher pour la diffusion)
PVD (checkpoint, code à chier, trop chiant les opérations de voxelization devox en cuda + les métriques qui changent entre chaque papiers emd chamfer 1-NNA, en cuda aussi)
KPConv (c'est français, pas mal non ?)
LION (pas de checkpoint, mais code utile)
2023-06-06 18:47:56 +00:00
\section{Réimplementation de l'état de l'art}
Backbone KPConv, car implement ezkpconv cool + huggingface diffusers pour gérer toute la partie diffusion.
Les résultats que l'on obtient sont bien, mais pas très satisfaisant, on dirait que les aubes sont encore un peu "bruité".
C'est là qu'intervient les \gls{ldm}
le principe est de travailler uniquement sur les informations basse fréquences qui définissent l'information sémantique de nos données.
Ainsi tous ces bruits haute fréquence passent à la trappe et on obtient de très bon résultats
conditionnemnt
classifier-free guidance
ça marche on est content
2023-06-06 18:47:56 +00:00
\chapter{Conclusion}
2023-06-06 18:47:56 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\appendix
%% ajouter les annexes ici
\backmatter
\nocite{*}
\addcontentsline{toc}{chapter}{Bibliographie}
\bibliography{zotero}
\bibliographystyle{plainnat}
\end{document}