01.SVD.tex 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. \section{L'approche décomposition SVD}
  2. \subsection{Decription de la méthode}
  3. La décomposition en valeurs singulières (SVD) est une méthode de factorisation de matrice. L'utiliser dans le cadre de la réduction d'informations pour le traitement de l'image pourrait être intéressant. La Fig \ref{fig:03_Research_01_svd_decomposition} propose un aperçu de la factorisation proposée par la méthode.
  4. \begin{figure}
  5. \centering
  6. \includegraphics[width=0.6\linewidth]{03.Research/01.SVD/svd_decomposition.png}
  7. \caption[Décomposition en valeurs singulières]{Méthode de factorisation utilisée pour réduction de dimension de l'image : décomposition en valeurs singulières}
  8. \label{fig:03_Research_01_svd_decomposition}
  9. \end{figure}
  10. \vspace{2mm}
  11. \noindent
  12. La méthode propose donc une factorisation de la matrice de la manière suivante :
  13. $$M = U \times \Sigma \times V^*$$
  14. \vspace{2mm}
  15. \noindent
  16. C'est le vecteur de valeurs singulières ($\Sigma$) auquel nous nous sommes principalement intéressé. En effet, la méthode de décomposition appliquée à une image réduite au canal de luminance $L$ de la transformation L*a*b (voir annexe \ref{appendix:lab_transformation}) ou la transformation MSCN \autocite{DBLP:journals/tip/MittalMB12} (voir annexe \ref{appendix:mscn_transformation}) qui permet d'obtenir le vecteur de valeurs singulières $\Sigma$.
  17. \vspace{2mm}
  18. \noindent
  19. Pour une image de $200 \times 200$ d'une zone nous obtenons donc un vecteur de valeurs singulières de taille $200$. C'est ce vecteur que nous allons traiter par la suite.
  20. % Aperçu valeurs SVD (courbes)
  21. \vspace{2mm}
  22. \noindent
  23. Pourquoi s'être intéressé à la décomposition SVD ? Nous avons pu observer que suivant le nombre d'échantillons utilisés pour générer une image d'un scène, le vecteur de valeurs singulières semblaient significativement bien distinguer le niveau de bruit jusqu'à l'image de référence (voir Fig. \ref{fig:03_Research_01_svd_vectors_on_images_appart1opt02}). La Fig. \ref{fig:03_Research_01_svd_vectors_on_images_appart1opt02_zone_3} propose également un aperçu des valeurs singulières mais ici sur une zone précise de la scène, la zone 3.
  24. \begin{figure}
  25. \centering
  26. \includegraphics[width=\linewidth]{03.Research/01.SVD/svd_vector_on_images_appart1opt02_lab.png}
  27. \caption[Aperçu des valeurs singulières sur la scène Appart1opt02]{Aperçu du vecteur de valeurs singulières des images de la scène Appart1opt02 à différents niveaux de bruits. Ici le vecteur possède 800 valeurs car la décomposition a été appliquée sur l'ensemble de l'image et non une zone spécifique. \`{A} noter que le vecteur est obtenu à partir du canal \textbf{L} de l'image et qu'il a été ici normalisé.}
  28. \label{fig:03_Research_01_svd_vectors_on_images_appart1opt02}
  29. \end{figure}
  30. \begin{figure}
  31. \centering
  32. \includegraphics[width=\linewidth]{03.Research/01.SVD/svd_vector_on_images_appart1opt02_lab_zone3.png}
  33. \caption[Aperçu des valeurs singulières de la zone 3 de la scène Appart1opt02]{Aperçu du vecteur de valeurs singulières des sous-images de la zone 3 de la scène Appart1opt02 à différents niveaux de bruits. Ici le vecteur possède 200 valeurs car la décomposition a été appliquée sur une zone spécifique. \`{A} noter que le vecteur est obtenu à partir du canal \textbf{L} de la sous-image et qu'il a été ici normalisé.}
  34. \label{fig:03_Research_01_svd_vectors_on_images_appart1opt02_zone_3}
  35. \end{figure}
  36. \subsection{Sélection des attributs}
  37. Nous avons donc pour chaque image traitée, un vecteur de $200$ valeurs à traiter. Dans cette section nous allons présenter les différentes manières (transformations de l'image) d'obtenir ce vecteur ainsi que les différentes approches de sélection des composantes de celui-ci.
  38. \subsubsection{Liste des attributs extraits}
  39. \label{section:03_Research_01_attributes_list_without_selection}
  40. % Description de la liste des attributs extraits (modification de l'image)
  41. La liste des transformations ci-dessous appliquées à l'image sont utilisées pour obtention du vecteur de valeurs singulières de $200$ valeurs via la décomposition SVD.
  42. \begin{itemize}
  43. \item \textbf{lab}
  44. : utilisation de la luminance de l'image.
  45. \item \textbf{mscn}
  46. : utilisation de la matrice MSCN.
  47. \item \textbf{low\_bits\_2}
  48. : utilisation uniquement des 2 bits de poids faibles de la matrice de luminance (un octet de représentation).
  49. \item \textbf{low\_bits\_3}
  50. : utilisation uniquement des 3 bits de poids faibles de la matrice de luminance.
  51. \item \textbf{low\_bits\_4}
  52. : utilisation uniquement des 4 bits de poids faibles de la matrice de luminance.
  53. \item \textbf{low\_bits\_5}
  54. : utilisation uniquement des 5 bits de poids faibles de la matrice de luminance.
  55. \item \textbf{low\_bits\_6}
  56. : utilisation uniquement des 6 bits de poids faibles de la matrice de luminance.
  57. \item \textbf{low\_bits\_4\_shifted\_2} : utilisation uniquement des 4 bits de centraux de la matrice de luminance.
  58. \item \textbf{ica\_diff}
  59. : utilisation d'une matrice calculée à partir de la différence entre la matrice de luminance et une image reconstruite à partir des 50 composantes principales à partir de la méthode \enquote{Independent Component Analysis} (ICA).
  60. \item \textbf{svd\_trunc\_diff}
  61. : utilisation d'une matrice calculée à partir de la différence entre la matrice de luminance et une image reconstruite à partir des 30 composantes principales à partir de la méthode de décomposition SVD.
  62. \item \textbf{ipca\_diff}
  63. : utilisation d'une matrice calculée à partir de la différence entre la matrice de luminance et une image reconstruite à partir des 20 composantes principales à partir de la méthode de \enquote{Incremental Principal Components Analysis} (IPCA).
  64. \item \textbf{svd\_reconstruct} : utilisation d'une image reconstruite à partir des 110 dernières composantes de la décomposition SVD (voir Fig. \ref{fig:03_Research_01_svd_reconstruction}).
  65. \end{itemize}
  66. \begin{figure}
  67. \centering
  68. \begin{subfigure}[b]{0.23\textwidth}
  69. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_00100.png}
  70. \caption{Scène Appart1opt02 zone 9 avec 100 samples\\}
  71. \end{subfigure}
  72. ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc.
  73. %(or a blank line to force the subfigure onto a new line)
  74. \begin{subfigure}[b]{0.23\textwidth}
  75. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_00250.png}
  76. \caption{Scène Appart1opt02 zone 9 avec 250 samples\\}
  77. \end{subfigure}
  78. ~
  79. \begin{subfigure}[b]{0.23\textwidth}
  80. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_00400.png}
  81. \caption{Scène Appart1opt02 zone 9 avec 400 samples\\}
  82. \end{subfigure}
  83. ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc.
  84. %(or a blank line to force the subfigure onto a new line)
  85. \begin{subfigure}[b]{0.23\textwidth}
  86. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_00550.png}
  87. \caption{Scène Appart1opt02 zone 9 avec 550 samples\\}
  88. \end{subfigure}
  89. ~
  90. \begin{subfigure}[b]{0.23\textwidth}
  91. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_reconstruct_00100.png}
  92. \caption{Scène Appart1opt02 zone 9 avec 100 samples reconstruite\\}
  93. \end{subfigure}
  94. ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc.
  95. %(or a blank line to force the subfigure onto a new line)
  96. \begin{subfigure}[b]{0.23\textwidth}
  97. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_reconstruct_00250.png}
  98. \caption{Scène Appart1opt02 zone 9 avec 250 samples reconstruite\\}
  99. \end{subfigure}
  100. ~
  101. \begin{subfigure}[b]{0.23\textwidth}
  102. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_reconstruct_00400.png}
  103. \caption{Scène Appart1opt02 zone 9 avec 400 samples reconstruite\\}
  104. \end{subfigure}
  105. ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc.
  106. %(or a blank line to force the subfigure onto a new line)
  107. \begin{subfigure}[b]{0.23\textwidth}
  108. \includegraphics[width=\textwidth]{03.Research/01.SVD/compression/svd/appartAopt_zone9_reconstruct_00550.png}
  109. \caption{Scène Appart1opt02 zone 9 avec 550 samples reconstruite\\}
  110. \end{subfigure}
  111. \caption{Aperçu de la reconstruction de la scène Appart1opt02 zone 9 à différents niveaux d'échantillons (samples) avec les 110 dernières composantes SVD}
  112. \label{fig:03_Research_01_svd_reconstruction}
  113. \end{figure}
  114. \subsubsection{Approche dîtes naïve de sélection d'attributs}
  115. La première approche de sélection d'attributs consiste à choisir $n$ composantes du vecteur de valeurs singulières avec $n \in [4, 8, 16, 26, 32, 40]$ à une position $P$ avec $|P| = 5$ (voir Fig. \ref{fig:03_Research_01_position_selection}). Cette approche peut paraître naïve mais elle permet déjà d'essayer un certains nombres de paramètres.
  116. \begin{figure}
  117. \centering
  118. \includegraphics[width=\linewidth]{03.Research/01.SVD/position_selection.png}
  119. \caption[Première approche de sélection des composantes du vecteur]{Sélection d'attributs sur différentes zones du vecteur de valeurs singulières. La position est choisie comme telle, au début, au quart, au centre; au trois quarts et en fin de vecteur. Si l'on décide de prendre $n = 20$ composantes à partir de la position $P$ centrale, l'interval sélectionné sera $[90, 120[$}
  120. \label{fig:03_Research_01_position_selection}
  121. \end{figure}
  122. La Fig. \ref{fig:03_Research_01_schema_recapitulatif} permet un aperçu récapitulatif de la manière dont l'image est traitée pour la sélection d'attributs d'entrée au modèle d'apprentissage.
  123. \begin{figure}
  124. \centering
  125. \includegraphics[width=\linewidth]{03.Research/01.SVD/recap_scheme.png}
  126. \caption[Schéma récapitulatif du traitement de l'image]{Schéma récapitulatif de traitement de l'image dans l'objectif de sélectionner les meilleurs attributs pour entrée au modèle}
  127. \label{fig:03_Research_01_schema_recapitulatif}
  128. \end{figure}
  129. \subsubsection{Autres approches de sélection des attributs}
  130. \'{E}tant donné l'approche naïve de sélection d'attributs et le fait que les valeurs des composantes d'une scène à une autre diffèrent, la capacité d'un modèle de classifier correctement une image peut être impactée. Les listes ci-dessous énumèrent les approches exploitées dans le cadre de la thèse.
  131. \vspace{2mm}
  132. Sur l'ensemble des données :
  133. \begin{itemize}
  134. \item \textbf{highest\_corr\_sv :} récupération des composantes les plus corrélées entre-elles (score de corrélation) sur l'ensemble des données disponibles
  135. \item \textbf{lowest\_corr\_sv :} récupération des composantes les moins corrélées entre-elles (score de corrélation) sur l'ensemble des données disponibles
  136. \end{itemize}
  137. \vspace{2mm}
  138. Sur l'image seule :
  139. \begin{itemize}
  140. \item \textbf{sv\_std\_filters :} génération de 4 images supplémentaires à l'image de niveau de luminance en entrée, à partir des filtes \enquote{wiener} (fenêtres kernel [3, 3] et [5, 5]) et \enquote{median} (fenêtres kernel [3, 3] et [5, 5]).
  141. \item \textbf{wave\_sv\_std\_filters :} génération de 5 images supplémentaires à l'image de niveau de luminance en entrée, à partir des filtes \enquote{wiener} (fenêtres kernel [3, 3] et [5, 5]), \enquote{median} (fenêtres kernel [3, 3] et [5, 5]) et \enquote{wavelet}.
  142. \item \textbf{sv\_std\_filters\_full :} génération de 13 images supplémentaires à l'image de niveau de luminance en entrée, à partir des filtes \enquote{wiener} (fenêtres kernel [3, 3] et [5, 5]), \enquote{median} (fenêtres kernel [3, 3] et [5, 5]), \enquote{mean} (2 kernels), \enquote{gaussian blur} (6 kernels) et \enquote{wavelet}.
  143. \end{itemize}
  144. \vspace{2mm}
  145. La décomposition est ensuite appliquée à chacune des images disponibles dans la liste des images. Ce qui donne une matrice de taille $l \times 200 \times 200$ avec $l$ le nombre d'images dans la liste. Pour chacune des composantes, les valeurs qui lui sont trouvées ($l$ valeurs) sont normalisées suivant cette composante et la valeur de l'écart-type est calculée. Les $n$ plus grandes (highest) ou petites (lowest) valeurs d'écart-type permettent de cibler les $n$ composantes à sélectionner (sélection dynamique pour l'image).
  146. \vspace{2mm}
  147. Sur l'image seule :
  148. \begin{itemize}
  149. \item \textbf{sv\_entropy\_std\_filters :} les même filtres que \enquote{sv\_std\_filters\_full} soit, 13 images générées supplémentaires sont utilisées. La contribution à l'entropie de chaque composante du vecteur de valeur singulières est calculée. C'est ensuite la valeur de l'écart-type de ces contributions d'entropie qui sont utilisées comme valeurs de sélection des composantes.
  150. \end{itemize}
  151. \vspace{2mm}
  152. Pourquoi s'intéresser à un traitement d'image seul pour sélection des attributs ? \'{E}tant donné les résultats sur une approche de sélection d'interval, il semblerait que la sélection des attributs soient fortement liée à la scène elle-même (structure de la scène). Une approche proposant dynamiquement de choisir les composantes pour une scène (ici l'image directement) serait plus judicieuse et permettrait d'avoir une méthode générique qu'importe les images de nouvelles scènes à traiter. Une étude plus approfondie permettrait de mettre en avant pour chaque scène les composantes les plus utilisées (répartition/distribution de sélection des composantes).
  153. \subsection{Paramètres et résultats}
  154. Avant de mettre en avant les résultats issus de la décomposition SVD, il est important de rappeler l'architecture des modèles utilisés, les manières de normaliser les données ainsi que le récapitulatif de l'ensemble des paramètres.
  155. \subsubsection{Modèles}
  156. L'annexe \ref{appendix:models_architecture} présente ces différents modèles. En voici la liste :
  157. \begin{itemize}
  158. \item \textbf{M1 :} Support Vector Machine
  159. \item \textbf{M2 :} Ensemble model (3 sub-models)
  160. \item \textbf{M3 :} Ensemble model v2 (5 sub-models)
  161. \end{itemize}
  162. \vspace{2mm}
  163. Ces ensemble de modèles sont des \enquote{voting classifier} avec le principe de
  164. le vote équitable et réglementé sur les élections \enquote{douces}.
  165. \subsubsection{Normalisation des données}
  166. Au niveau du traitement des données, nous avons opter sur trois manières de fournir les données en entrée aux modèles :
  167. \begin{itemize}
  168. \item \textbf{svd :} sans normalisation
  169. \item \textbf{svdn :} le sous-vector est normalisé avec ces propres valeurs
  170. \item \textbf{svdne :} le sous-vector est normalisé en utilisant les valeurs minimale et maximale
  171. des sous-vectors ou composantes de l'ensemble du dataset.
  172. \end{itemize}
  173. \subsubsection{Résultats}
  174. Les 5 meilleurs modèles et leurs résultats issus des attributs extraits avec une sélection dites naïves sont présentés dans le tableau \ref{table:03_Research_01_best_models_naive_selection}. Les simulations des scènes \enquote{Appart1opt02} et \enquote{SdbDroite} obtenues du meilleur modèle sont disponibles (voir Fig. \ref{fig:03_Research_01_best_model_simulation_sceneA} et \ref{fig:03_Research_01_best_model_simulation_sceneH}).
  175. \begin{table}[h!]
  176. \centering
  177. \begin{tabular}{|>{\scriptsize}l|>{\scriptsize}c|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|}
  178. \hline
  179. Model & feature & size & interval & zones & ROC Train & ROC Val & ROC Test\\
  180. \hline
  181. M3 & lab (svd) & 40 & [80, 120[ & 12 & 0.9418 & 0.9023 & 0.9219 \\
  182. M2 & lab (svd) & 32 & [84, 116[ & 4 & 0.9158 & 0.8724 & 0.9153 \\
  183. M2 & lab (svd) & 40 & [80, 120[ & 12 & 0.9629 & 0.9049 & 0.9145 \\
  184. M2 & lab (svdne) & 26 & [87, 113[ & 6 & 0.9337 & 0.8763 & 0.9089 \\
  185. M3 & low\_bits\_2 (svd) & 40 & [0, 40[ & 12 & 0.9567 & 0.8417 & 0.9081 \\
  186. \hline
  187. \end{tabular}
  188. \caption{5 meilleurs modèles avec sélection \enquote{naïve} sur le score ROC AUC}
  189. \label{table:03_Research_01_best_models_naive_selection}
  190. \end{table}
  191. \begin{figure}
  192. \centering
  193. \includegraphics[width=\textwidth]{03.Research/01.SVD/simulations/Appart1opt02_simulation_curve.png}
  194. \caption[Simulation des prédictions sur chaque zone de la scène Appart1opt02 (A) durant le rendu]{Simulation des prédictions sur chaque zone de la scène Appart1opt02 (A) durant le rendu. Ici les zones apprises (zones avec un fond bleu) sont correctement apprises tout comme les zones non apprises où le seuil est pratiquement identiques.}
  195. \label{fig:03_Research_01_best_model_simulation_sceneA}
  196. \end{figure}
  197. \begin{figure}
  198. \centering
  199. \includegraphics[width=\textwidth]{03.Research/01.SVD/simulations/SdbDroite_simulation_curve.png}
  200. \caption[Simulation des prédictions sur chaque zone de la scène SbdDroite (H) durant le rendu]{Simulation des prédictions sur chaque zone de la scène SbdDroite (H) durant le rendu. Ici les zones apprises (zones avec un fond bleu) sont presque correctement apprises (voir zones 1, 5, 9 qui possèdent pas mal d'oscillations avant détection de non bruit). Par contre, 2 zones sur 4 non apprises possèdent aucun arrêt de la part du modèle (zones 4 et 11), tout comme la zone 7 qui n'est pas correctement prédite.}
  201. \label{fig:03_Research_01_best_model_simulation_sceneH}
  202. \end{figure}
  203. Les 5 meilleurs modèles et leurs résultats issus des attributs extraits avec une sélection dites \enquote{automatisés} sont présentés dans le tableau \ref{table:03_Research_01_best_models_corr_selection}. Les simulations des scènes \enquote{Appart1opt02} et \enquote{SdbDroite} obtenues du meilleur modèle sont disponibles (voir Fig. \ref{fig:03_Research_01_best_model_corr_simulation_sceneA} et \ref{fig:03_Research_01_best_model_corr_simulation_sceneH}).
  204. \begin{table}[h!]
  205. \centering
  206. \begin{tabular}{|>{\scriptsize}l|>{\scriptsize}c|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|>{\scriptsize}r|}
  207. \hline
  208. Model & feature & size & correlation & kind & zones & ROC Train & ROC Val & ROC Test\\
  209. \hline
  210. M3 & filters (svdne) & 80 & lowest & sv entropy std & 12 & 0.9970 & 0.8348 & 0.8864 \\
  211. M1 & lab (svd) & 10 & highest & components & 8 & 0.8510 & 0.8563 & 0.8740 \\
  212. M1 & lab (svdne) & 20 & highest & labels & 12 & 0.8100 & 0.8729 & 0.8729 \\
  213. M2 & lab (svdne) & 40 & highest & components & 12 & 0.9681 & 0.8670 & 0.8709 \\
  214. M1 & lab (svdne) & 25 & highest & components & 12 & 0.9311 & 0.8596 & 0.8595 \\
  215. M2 & filters (svdne) & 80 & highest & sv std & 12 & 1 & 0.7644 & 0.8519 \\
  216. \hline
  217. \end{tabular}
  218. \caption{5 meilleurs modèles avec sélection \enquote{automatisé} sur le score ROC AUC}
  219. \label{table:03_Research_01_best_models_corr_selection}
  220. \end{table}
  221. % TODO : ajout nouvelles courbes simulation
  222. \begin{figure}
  223. \centering
  224. \includegraphics[width=\textwidth]{03.Research/01.SVD/simulations/Appart1opt02_simulation_curve.png}
  225. \caption[Simulation des prédictions sur chaque zone de la scène Appart1opt02 (A) durant le rendu]{Simulation des prédictions sur chaque zone de la scène Appart1opt02 (A) durant le rendu.}
  226. \label{fig:03_Research_01_best_model_corr_simulation_sceneA}
  227. \end{figure}
  228. \begin{figure}
  229. \centering
  230. \includegraphics[width=\textwidth]{03.Research/01.SVD/simulations/SdbDroite_simulation_curve.png}
  231. \caption[Simulation des prédictions sur chaque zone de la scène SbdDroite (H) durant le rendu]{Simulation des prédictions sur chaque zone de la scène SbdDroite (H) durant le rendu.}
  232. \label{fig:03_Research_01_best_model_corr_simulation_sceneH}
  233. \end{figure}
  234. \subsubsection{Conclusion}
  235. Par rapport à l'ensemble de ces résultats obtenus, il est difficile de dire si le modèle peut être assez généraliste sur l'ensemble des scènes ou sur de nouvelles scènes. En effet, il semblerait que l'approche d'apprentissage présente certaines limites et ne permet pas assez bien de généraliser (zones non apprises). Peut-être que la structure de la scène est trop renseignée dans les attributs fournis en entrée au modèle ce qui l'empêche de mesurer le bruit présent dans la scène. Cette raison pourrait expliquer le sur-apprentissage de certaines scènes (comme Appart1opt02). L'approche naïve de sélection des composants amène aussi à cette généralisation non parfaite puisque les composantes du vecteur de valeurs singulières ne porteront certainement pas la même information d'une scène à une autre.
  236. A noter que des approches deep learning (sans convolutions) ont été esssayées pour vérifier si la méthode SVM n'était pas assez robuste à l'apprentissage. Malheureusement les résultats n'ont pas été meilleur que ceux sur les architectures de modèles proposées.
  237. \vspace{2mm}
  238. \noindent
  239. \textbf{Ressources :} \href{https://github.com/prise-3d/Thesis-NoiseDetection-attributes}{Projet github} comprenant l'ensemble des développements réalisés dans cette section.