correction des metriques et distances

This commit is contained in:
Laureηt 2023-08-17 10:39:09 +02:00
parent 8a8829616e
commit 181a446f87
Signed by: Laurent
SSH key fingerprint: SHA256:kZEpW8cMJ54PDeCvOhzreNr4FSh6R13CMGH/POoO8DI

View file

@ -368,7 +368,7 @@ Soit deux distributions de probabilités discrètes $P$ et $Q$ sur un ensemble $
$$ D_{\text{KL}}(P\|Q) = \sum_{x \in X} P(x) \log \frac{P(x)}{Q(x)} $$ $$ D_{\text{KL}}(P\|Q) = \sum_{x \in X} P(x) \log \frac{P(x)}{Q(x)} $$
La Divergence de Kullback-Leibler est une mesure de la dissimilarité entre deux distributions de probabilité. Elle évalue la quantité d'information perdue lorsque l'on tente d'approximer une distribution par une autre. La KLD est asymétrique et non métrique, ce qui signifie qu'elle ne satisfait pas la propriété de symétrie ($D_{\text{KL}}(P\|Q) \neq D_{\text{KL}}(Q\|P)$) ni la propriété de distance triangulaire ($D_{\text{KL}}(P\|R) \leq D_{\text{KL}}(P\|Q) + D_{\text{KL}}(Q\|R)$). Cette mesure est fréquemment utilisée pour quantifier la différence entre une distribution estimée et une distribution de référence, comme dans le cas de l'entropie croisée en apprentissage automatique. La Divergence de Kullback-Leibler est une mesure de la dissimilarité entre deux distributions de probabilité. Elle évalue la quantité d'information perdue lorsque l'on tente d'approximer une distribution par une autre. La \gls{kld} n'est pas une distance, elle ne satisfait pas la propriété de symétrie ($D_{\text{KL}}(P\|Q) \neq D_{\text{KL}}(Q\|P)$) ni l'inégalité triangulaire ($D_{\text{KL}}(P\|R) \not\leq D_{\text{KL}}(P\|Q) + D_{\text{KL}}(Q\|R)$).
\subsubsection{\gls{hd}} \subsubsection{\gls{hd}}
@ -384,7 +384,7 @@ Soit $X$ et $Y$ deux nuages de points.
$$ d_{\text{CD}}(X, Y) = \sum_{x \in X} \min_{y \in Y} \|x - y\|^2_2 + \sum_{y \in Y} \min_{x \in X} \|x - y\|^2_2 $$ $$ d_{\text{CD}}(X, Y) = \sum_{x \in X} \min_{y \in Y} \|x - y\|^2_2 + \sum_{y \in Y} \min_{x \in X} \|x - y\|^2_2 $$
La distance de Chamfer est une mesure de similarité entre deux ensembles de points dans un espace métrique. Elle évalue la proximité entre les points des ensembles en calculant la somme des distances entre chaque point d'un ensemble et son point le plus proche dans l'autre ensemble. La distance de Chamfer est souvent utilisée pour évaluer la correspondance entre des nuages de points 3D, des images ou d'autres représentations géométriques, la rendant ainsi utile dans des tâches telles que la correspondance d'objets et la reconstruction. La distance de Chamfer est une mesure de similarité entre deux ensembles de points dans un espace métrique. Elle évalue la proximité entre les points des ensembles en calculant la somme des distances entre chaque point d'un ensemble et son point le plus proche dans l'autre ensemble.
\subsubsection{\gls{emd}} \subsubsection{\gls{emd}}
@ -392,32 +392,46 @@ Soit $X$ et $Y$ deux nuages de points tels que $|X| = |Y|$, et $\phi: X \to Y$ u
$$ d_{\text{EMD}}(X, Y) = \min_{ \phi: X \to Y } \sum_{x \in X} \| x - \phi(x) \|_2 $$ $$ d_{\text{EMD}}(X, Y) = \min_{ \phi: X \to Y } \sum_{x \in X} \| x - \phi(x) \|_2 $$
La distance du transport optimal, également appelée distance du "Earth Mover", est une mesure de la différence entre deux distributions de masse dans un espace métrique. Elle évalue le coût minimum nécessaire pour déplacer une distribution de masse en une autre en respectant certaines contraintes de déplacement. Cette distance est couramment utilisée pour comparer des distributions de données, telles que des histogrammes, des vecteurs de caractéristiques ou des nuages de points, en prenant en compte non seulement les distances entre les éléments correspondants, mais aussi les coûts associés à leur déplacement. L'EMD est particulièrement utile pour quantifier les différences et les similitudes entre des distributions de manière robuste et significative. La distance du transport optimal, également appelée distance du "Earth Mover", est une mesure de similarité entre deux distributions de masse dans un espace métrique. Elle évalue le coût minimum nécessaire pour déplacer une distribution de masse en une autre en respectant certaines contraintes de déplacement. Cette distance est couramment utilisée pour comparer des distributions de données, telles que des histogrammes, des vecteurs de caractéristiques ou des nuages de points, en prenant en compte non seulement les distances entre les éléments correspondants, mais aussi les coûts associés à leur déplacement.
\subsubsection{\gls{jsd}} \subsubsection{\gls{jsd}}
Soit $P_g$ un ensemble de nuages de points générés par un modèle génératif, et $P_r$ un ensemble de nuages de points de référence, tel que $|P_g| = |P_r|$. Soit $S_g$ un ensemble de nuages de points générés et $S_r$ un ensemble de nuages de points de référence.
$$ \text{JSD}(P_g, P_r) = \frac12 D_{\text{KL}}(P_g \| M) + \frac12 D_{\text{KL}}(P_r \| M), \quad M = \frac12 (P_g + P_r) $$ $$ \text{JSD}(S_g, S_r) = \frac12 D_{\text{KL}}(S_g \| M) + \frac12 D_{\text{KL}}(S_r \| M), \quad M = \frac12 (S_g + S_r) $$
La divergence de Jensen-Shannon est une mesure de la similarité entre deux distributions de probabilité. Elle est calculée comme la moyenne des divergences de Kullback-Leibler (KL) entre chaque distribution et la moyenne de ces distributions. La \gls{jsd} capture la différence et la similarité entre les distributions en prenant en compte à la fois les régions où les distributions ont des valeurs élevées et les régions où elles ont des valeurs faibles. Elle est utilisée pour évaluer la différence entre deux ensembles de données probabilistiques, tels que des distributions de probabilités de mots dans le traitement du langage naturel ou des distributions de probabilités de caractéristiques dans des analyses de données. La divergence de Jensen-Shannon est une mesure de la similarité entre deux distributions de probabilité. Elle est calculée comme la moyenne des \gls{kld} entre chaque distribution et la moyenne de ces distributions.
Cependant, la \gls{jsd} utilise la distribution globale des nuages de points et non la distribution des nuages de points individuellements. Ainsi, un modèle qui produit toujours une "forme moyenne" peut obtenir un score \gls{jsd} parfait sans apprendre de distributions significatives.
\subsubsection{\gls{cov}} \subsubsection{\gls{cov}}
$$ \text{COV}(S_g, S_r) = \frac{ | \{ \argmin_{Y \in S_r} D(X, Y) | X \in S_g \} | }{ |S_r| } $$ Soit $S_g$ un ensemble de nuages de points générés, $S_r$ un ensemble de nuages de points de référence et $D$ une distance entre nuages de points.
La couverture est une mesure qui évalue l'étendue de la portée d'un modèle par rapport à un ensemble de données de référence. Elle mesure la proportion des données de référence qui sont correctement capturées ou prédites par le modèle. En d'autres termes, la couverture quantifie la capacité du modèle à inclure un large éventail de situations ou d'exemples du jeu de données de référence. Cette mesure est fréquemment utilisée pour évaluer la performance des modèles de prédiction, de classification ou de recommandation, en mettant l'accent sur la capacité du modèle à traiter l'ensemble des cas possibles plutôt que simplement ceux qui sont courants ou faciles à prédire. $$ \text{COV}(S_g, S_r) = \frac{ | \{ \argmin_{Y \in S_r} D(X, Y) | X \in S_g \} | }{ |S_r| } $$
La couverture évalue le nombre de nuages de points de référence qui sont appariés à au moins une forme générée.
La couverture permet de quantifier la diversité des générations mais est sensible à la perte de modes, cependant elle n'évalue pas la qualité des nuages de points générés.
Ainsi, des nuages de points générés de faible qualité mais diversifiés peuvent obtenir des scores de couverture élevés.
\subsubsection{\gls{mmd}} \subsubsection{\gls{mmd}}
Soit $S_g$ un ensemble de nuages de points générés, $S_r$ un ensemble de nuages de points de référence et $D$ une distance entre nuages de points.
$$ \text{MMD}(S_g, S_r) = \frac{1}{|S_r|} \sum_{Y \in S_r} \min_{X \in S_g} D(X, Y) $$ $$ \text{MMD}(S_g, S_r) = \frac{1}{|S_r|} \sum_{Y \in S_r} \min_{X \in S_g} D(X, Y) $$
La distance de correspondance minimale, est une mesure qui évalue la différence entre deux ensembles ordonnés, tels que des rangements ou des permutations. Elle calcule la plus petite somme des distances entre les éléments des deux ensembles, en cherchant la correspondance optimale entre eux. La MMD est souvent utilisée pour quantifier la similitude ou la dissimilitude entre les ordres préférentiels, les classements ou les séquences d'éléments. Cette mesure est appliquée dans divers domaines, notamment le classement des préférences, la biologie computationnelle et la recherche d'informations. La distance de correspondance minimale, est une mesure qui évalue la différence entre deux ensembles ordonnés. Elle calcule la plus petite somme des distances entre les éléments des deux ensembles.
Cependant, la \gls{mmd} est en réalité très peu sensible aux nuages de points de qualité médiocre dans $S_g$, étant donné leur faible probabilité d'être appariés avec des nuages de points réels dans $S_r$. Dans un cas extrême, on pourrait envisager que $S_g$ soit composé principalement de nuages de points de très mauvaise qualité, mais ayant des sous-ensembles de points très similaires à ceux de $S_r$. Dans ce cas, on obtiendrait un score de raisonnablement élevé.
\subsubsection{\gls{1-nna}} \subsubsection{\gls{1-nna}}
Soit $S_g$ un ensemble de nuages de points générés, $S_r$ un ensemble de nuages de points de référence, $N_X$ les voisins les plus proches de $X$ dans $S_{-X} = S_r \cup S_g - \{X\}$, $N_Y$ les voisins les plus proches de $Y$ dans $S_{-Y} = S_r \cup S_g - \{Y\}$ et $\mathbb{1}$ la fonction indicatrice.
$$ \text{1-NNA}(S_g, S_r) = \frac{ \sum_{X \in S_g} \mathbb{1}[N_X \in S_g] + \sum_{Y \in S_r} \mathbb{1}[N_Y \in S_r] }{ |S_g| + |S_r| } $$ $$ \text{1-NNA}(S_g, S_r) = \frac{ \sum_{X \in S_g} \mathbb{1}[N_X \in S_g] + \sum_{Y \in S_r} \mathbb{1}[N_Y \in S_r] }{ |S_g| + |S_r| } $$
Pour chaque point d'un ensemble de nuages de points, cette mesure évalue par une classification par plus proche voisin, si celui-ci provient de $S_g$ ou de $S_r$. La précision de cette classification est ensuite calculée comme la moyenne des précisions de chaque point de $S_g$ et de $S_r$.
En supposant que $S_g$ et $S_r$ soient échantillonnés à partir de la même distribution, la précision d'un tel classificateur devrait converger vers 50\% avec un nombre suffisant d'échantillons. Plus la précision se rapproche de 50\%, plus les similarités entre $S_g$ et $S_r$ sont prononcées, ce qui indique une meilleure capacité du modèle à apprendre la distribution cible. Dans notre contexte, le plus proche voisin peut être calculé à l'aide de la \gls{cd} ou de l'\gls{emd}. Contrairement à la \gls{jsd}, le \gls{1-nna} considère la similarité entre les distributions de formes plutôt qu'entre les distributions totale des points. Contrairement au \gls{cov} et au \gls{mmd}, le \gls{1-nna} mesure directement la similarité des distributions et prend en compte à la fois la diversité et la qualité.
\FloatBarrier \FloatBarrier
\glsreset{vdm} \glsreset{vdm}
\subsection{\gls{vdm}} \subsection{\gls{vdm}}
@ -506,7 +520,7 @@ Dans notre cas d'application, nous pouvons conditionner sur les scalaires repres
Plusieurs sous-familles de modèles existent pour faire de la diffusion, la plus connue d'entre elles étant les \gls{ddpm}\cite{ho_denoising_2020}. Cette méthode consiste à trouver un mapping réversible entre nos données et une gaussienne isotropique. Plusieurs sous-familles de modèles existent pour faire de la diffusion, la plus connue d'entre elles étant les \gls{ddpm}\cite{ho_denoising_2020}. Cette méthode consiste à trouver un mapping réversible entre nos données et une gaussienne isotropique.
L'étape d'entraînement du réseau repose sur une méthodologie relativement simple. Tout d'abord, nous sélectionnons un échantillon du jeu de données. Pour générer un échantillon bruité, nous l'altérons en ajoutant un bruit gaussien, dont l'intensité est ajustée selon un programme prédéfini. Ensuite, cet échantillon bruité est introduit dans le réseau, qui effectue une prédiction du bruit ajouté. Pour évaluer la précision de cette prédiction, nous comparons les résultats avec le bruit réel, ce qui nous permet de calculer un coût en utilisant la métrique d'erreur quadratique moyenne (MSE). En procédant à la rétropropagation de ce coût, nous mettons à jour les poids du réseau grâce à un algorithme d'optimisation approprié. Ce processus est répété pour chaque échantillon du jeu de données, en variant les intensités du bruit utilisé, jusqu'à atteindre la convergence, c'est-à-dire lorsque le modèle atteint un état stable et performant. L'étape d'entraînement du réseau repose sur une méthodologie relativement simple. Tout d'abord, nous sélectionnons un échantillon du jeu de données. Pour générer un échantillon bruité, nous l'altérons en ajoutant un bruit gaussien, dont l'intensité est ajustée selon un programme prédéfini. Ensuite, cet échantillon bruité est introduit dans le réseau, qui effectue une prédiction du bruit ajouté. Pour évaluer la précision de cette prédiction, nous comparons les résultats avec le bruit réel, ce qui nous permet de calculer un coût en utilisant la métrique \gls{mse}. En procédant à la rétropropagation de ce coût, nous mettons à jour les poids du réseau grâce à un algorithme d'optimisation approprié. Ce processus est répété pour chaque échantillon du jeu de données, en variant les intensités du bruit utilisé, jusqu'à atteindre la convergence, c'est-à-dire lorsque le modèle atteint un état stable et performant.
Une fois notre modèle correctement entraîné, nous sommes donc en mesure de débruiter nos données. Toutefois, l'intérêt majeur réside dans la situation où nous demandons à notre réseau de débruiter un signal de bruit pur (le rapport signal/bruit est de zéro). À ce moment-là, le réseau commence à générer des répliques (des hallucinations) qui ressemblent de manière frappante à nos données d'entraînement. Une fois notre modèle correctement entraîné, nous sommes donc en mesure de débruiter nos données. Toutefois, l'intérêt majeur réside dans la situation où nous demandons à notre réseau de débruiter un signal de bruit pur (le rapport signal/bruit est de zéro). À ce moment-là, le réseau commence à générer des répliques (des hallucinations) qui ressemblent de manière frappante à nos données d'entraînement.
@ -597,7 +611,7 @@ Chaque aube du jeu de données est une déformation de l'aube nominale. Ainsi to
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}. 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}.
Cet ensemble de données peut être séparé en deux sous-ensembles : un ensemble d'apprentissage de 1000 échantillons (83\% des données) et un ensemble de test de 200 échantillons (17\% des données). L'ensemble d'apprentissage est utilisé pour entraîner les modèles génératifs, tandis que l'ensemble de test est utilisé pour évaluer les performances des modèles génératifs. Cet ensemble de données peut être séparé en deux sous-ensembles : un ensemble d'apprentissage de 1000 échantillons (83\% des données) et un ensemble de validation de 200 échantillons (17\% des données). L'ensemble d'apprentissage est utilisé pour entraîner les modèles génératifs, tandis que l'ensemble de validation est utilisé pour évaluer les performances des modèles génératifs.
\FloatBarrier \FloatBarrier
\section{Description de l'environnement de travail} \section{Description de l'environnement de travail}
@ -658,7 +672,7 @@ point voxel convolution, efficace, mais bcp de cuda
version plus efficace, mais pas trop réussi à faire marche, cuda très esotérique version plus efficace, mais pas trop réussi à faire marche, cuda très esotérique
% 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) % 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)
archi basée sur pintnet++, mais pas de sampling, juste des pvconv archi basée sur PointNet++, mais pas de sampling, juste des pvconv
% LION (pas de checkpoint, mais code utile)z % LION (pas de checkpoint, mais code utile)z
le plus récent le plus récent
@ -670,26 +684,29 @@ le plus récent
Les premiers résultats concluant que nous avons obtenus ont été avec l'architecture KPFCNN. Cette architecture est basée sur PointNet++ et utilise des convolutions de type KPConv. Nous avons utilisé cette archi pour prédire le bruit lors de l'entraiment d'un \gls{vdm} (schedulers via huggingface diffusers). Les résultats étaient encourageants, mais nous avons constaté que le réseau avait du mal à apprendre à prédire le bruit en fin de sampling. en effet, les aubes finales semblaient encore un peu bruitées. Les premiers résultats concluant que nous avons obtenus ont été avec l'architecture KPFCNN. Cette architecture est basée sur PointNet++ et utilise des convolutions de type KPConv. Nous avons utilisé cette archi pour prédire le bruit lors de l'entraiment d'un \gls{vdm} (schedulers via huggingface diffusers). Les résultats étaient encourageants, mais nous avons constaté que le réseau avait du mal à apprendre à prédire le bruit en fin de sampling. en effet, les aubes finales semblaient encore un peu bruitées.
<insérer image ici> <insérer image ici>
\subsection{Approche par \gls{ldm}}
Pour essayer d'améliorer ces résultats, on peut apprendre à faire de la diffusion sur des variables latente, plutout que direct sur nos données. avantage, réduciton de dimension + informtion latente. Pour essayer d'améliorer ces résultats, on peut apprendre à faire de la diffusion sur des variables latente, plutout que direct sur nos données. avantage, réduciton de dimension + informtion latente.
dans un premier temps on compresse donc nos nuages de point via une PCA, ça marche du feu de dieu dans un premier temps on compresse donc nos nuages de point via une PCA, ça marche du feu de dieu
conditionnemnt, classifier-free guidance
pour vérif si la génération est bonne, on entraine des GP
on test d'autres méthodes parameter free, comme la POD, marche moins bien on test d'autres méthodes parameter free, comme la POD, marche moins bien
second temps, on compress nuages de points via un AE, pas encore finis, mais inch ça marche second temps, on compress nuages de points via un AE, pas encore finis, mais inch ça marche
\subsection{Approche par \gls{ldm}}
\subsection{Application du \gls{cfg}} \subsection{Application du \gls{cfg}}
conditionnemnt, classifier-free guidance
\subsection{Vérification par \gls{gp}} \subsection{Vérification par \gls{gp}}
pour vérif si la génération est bonne, on entraine des GP
\chapter{Conclusion} \chapter{Conclusion}
% conclusion, présenter résultats, adéquation objectifs, enirchessiement personnel, connaissance techniques et rapport humain.
"Et éventuellement de proposer des améliorations spécifiques aux maillages utilisés en simulations numériques." en intro -> réduire la taille des maillages, ça serait bien. même si j'imagine que pas trop possible car les ingé des aubes veullent une très grande résolution dans leurs simu, même sur des surfaces plutôt planes, qui pourraient être représentées par moins de points. "Et éventuellement de proposer des améliorations spécifiques aux maillages utilisés en simulations numériques." en intro -> réduire la taille des maillages, ça serait bien. même si j'imagine que pas trop possible car les ingé des aubes veullent une très grande résolution dans leurs simu, même sur des surfaces plutôt planes, qui pourraient être représentées par moins de points.
🎉 🎉