We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Maximum Entropy Distributions for Image Synthesis under Statistical Constraints

00:00

Formal Metadata

Title
Maximum Entropy Distributions for Image Synthesis under Statistical Constraints
Title of Series
Number of Parts
6
Author
Contributors
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language
Production Year2020

Content Metadata

Subject Area
Genre
Abstract
The question of texture synthesis in image processing is a very challenging problem that can be stated as followed: given an exemplar image, sample a new image that has the same statistical features (empirical mean, empirical covariance, filter responses, neural network responses, etc.). Exponential models then naturally arise as distributions satisfying these constraints in expectation while being of maximum entropy. Now the parameters of these exponential models need to be estimated and samples have to be drawn. I will explain how these can be done simultaneously through the SOUL (Stochastic Optimization with Unadjusted Langevin) algorithm. This is based on a joint work with Valentin de Bortoli, Alain Durmus, Bruno Galerne and Arthur Leclaire.
Game theoryStatisticsProbability density functionEntropyProbability distributionMaxima and minimaParameter (computer programming)Point (geometry)Characteristic polynomialDependent and independent variablesStatisticsDimensional analysisCross-correlationMereologySlide rulePhysicalismCategory of beingReal numberPrinciple of maximum entropyConstraint (mathematics)Computer animation
Distribution (mathematics)Random numberMaxima and minimaKörper <Algebra>EntropyTheoryProbability distributionSample (statistics)Canonical ensembleConstraint (mathematics)DivergenceModel theoryCondition numberExistenceSpacetimeParameter (computer programming)Mathematical optimizationSequenceAerodynamicsMaß <Mathematik>Gradient descentMatrix (mathematics)StatisticsGoodness of fitVector spaceModel theoryNumerical analysisSampling (statistics)Heat transferCharacteristic polynomialMeasurementDistribution (mathematics)MereologyUniformer RaumContent (media)Slide ruleVarianceResultantPoint (geometry)Greatest elementDistanceEntropyRight angleMultiplication signFilter <Stochastik>Wallpaper groupIterationAlgebraic structureScaling (geometry)Function (mathematics)Moment (mathematics)GeometryOrder (biology)Principle of maximum entropyExistenceLine (geometry)AutocovariancePhase transitionLink (knot theory)Dynamical systemGraph coloringTheoryExponential distributionThetafunktionConvex setConstraint (mathematics)Fourier seriesConvolutionFamilyCondition numberDifferent (Kate Ryan album)WeightAverageSampling (statistics)GammaverteilungMathematical analysisMathematical optimizationFunctional (mathematics)FrequencyParameter (computer programming)Time domainGradientPhysical lawModulformWell-formed formulaProbability distributionMaxima and minimaWeißes RauschenConvex functionPartition (number theory)Gradient descentAssociative propertySummierbarkeitConvex optimizationFinitismusDimensional analysisProbability density functionMultiplicationSet theoryPartition function (statistical mechanics)Scalar fieldDot productCovariance matrixClassical physicsDifferential (mechanical device)Direction (geometry)Projective planeApproximationFlow separationInfinityPresentation of a groupTheory of relativityTheoremGenerating set of a groupRegular graphNatural numberCross-correlationHistogramDivisorNormal distributionRootNichtlineares GleichungssystemEnergy levelLogarithmDependent and independent variablesHypothesisGroup representationProduct (business)Limit (category theory)AutocorrelationTerm (mathematics)Markov chainMathematicsDivergenceRandomizationComputer animation
Merci pour l'invitation, merci pour l'organisation de cette belle journée. En effet, je vais vous parler de synthèse d'image sous des contraintes statistiques
et par un principe de maximum d'entropie. Quel est le problème d'abord de la synthèse d'image ? C'est le problème de la synthèse de texture à partir d'un exemple. Le problème est le suivant, on vous donne un petit bout d'image de texture et on aimerait en reproduire un autre exemple, un autre morceau de taille arbitraire,
pas forcément de la même taille, ça peut être plus grand. Et en fait, il faut que ce nouveau morceau qu'on va produire, il faut qu'il ait le même aspect visuel que le premier morceau. Donc idéalement, c'est comme si ces deux morceaux qu'on a, ils faisaient partie d'une grande même texture.
Donc ce problème de synthèse de texture, il est très utilisé en tout ce qui est computer graphics pour la synthèse dans les jeux vidéo, dans les films d'animation, mais c'est aussi très utilisé si on veut comprendre des champs statistiques, des champs en physique, essayer de les reproduire pour essayer de comprendre certaines propriétés,
c'est aussi d'un intérêt. C'est aussi très utilisé en imagerie médicale en particulier pour faire ce qui s'appelle des essais cliniques virtuels, c'est-à-dire qu'on reproduit des tissus d'imagerie pour essayer de comprendre leurs propriétés sans avoir à faire des vraies images à partir de vraies passions.
Alors comment est-ce qu'on pose ça d'un point de vue statistique ? On a une image I0 qui est l'image originale, et puis on va considérer des caractéristiques statistiques de cette image. Par exemple, ça peut être la moyenne, ça peut être des covariances, ça peut être des réponses à des filtres, des réponses à des réseaux de neurones en particulier.
Toutes ces statistiques, ces caractéristiques, on les appelle F2I0, donc F2I0 ça va vivre dans RP, avec P ça va être la dimension de notre espace de paramètres de features. Ania, je me permets de t'interrompre parce qu'apparemment les gens disent qu'il n'y a pas de corrélation avec ce que tu dis, il est slides qui passent. On voit une image avec input et...
C'est ce dont je parlais au début en fait. Ok, donc on va reprendre du coup. Désolée. Donc là le problème c'est, on vous donne l'image initiale input, et vous voulez reproduire une nouvelle image, qui serait l'output idéal, qui serait comme si les deux images faisaient partie d'une grande même texture. Donc c'est ça le problème de la synthèse de texture à partir d'un exemple.
On vous donne juste l'input, et le but c'est de reproduire une nouvelle image qui a le même aspect visuel que l'image en entrée. Donc on fait ça en utilisant des statistiques. On a un certain vecteur de statistiques qui peut être... Donc là vous voyez, ça a bien changé ?
C'est sur la slide f2i égale f2i0. Voilà c'est ça, c'est bon. Merci. Donc on va prendre un certain nombre de statistiques, et le but ça va être d'échantillonner une nouvelle image i, telle que f2i est égale à f2i0 en un certain sens. Donc une image qui a exactement les mêmes statistiques en un certain sens. Alors en quel sens exactement ?
On va faire ça dans un cadre stochastique. On va chercher plutôt une loi, une mesure de probabilité P sur toutes les images possibles X, telle que d'une part P va être d'entropie maximum, c'est-à-dire qu'on va vouloir explorer au maximum toutes les images possibles, parce que sinon il suffit de prendre i égale i0 et puis on a résolu notre problème.
Mais bon c'est pas une vraie solution très satisfaisante. Donc on va chercher une loi qui est à la fois d'entropie maximum, et en même temps il va y avoir deux notions, soit la notion de modèle microcanonique, ça va être telle que f2i est égale à f2i0 presque sûrement, quand X est échantillonné suivant la loi P,
ou sinon la version macrocanonique, c'est la version où on respecte les statistiques mais en espérance. C'est-à-dire que l'espérance sous P de f2x est égale à f2i0. Donc ces deux notions microcanonique et macrocanonique sont détaillées, sont introduites dans le papier de Bruna et Mala, où il donne ces deux façons différentes d'imposer des statistiques,
soit presque sûrement, soit en espérance, et en vérifiant un principe de maximum d'entropie. Donc ici la notion d'entropie, ça va être la notion d'entropie classique, d'entropie différentielle, c'est-à-dire que si on a une mesure de probabilité P qui a une densité fp par rapport à la mesure de Lebesgue,
on définit son entropie comme étant h2p, c'est moins l'intégral de fp2x log fp2x dx. En utilisant, quand on veut maximiser l'entropie sous des contraintes d'espérance statistique, on est assez rapidement amené à s'intéresser
aux multiplicateurs de Lagrange, et quand on s'intéresse aux modèles macrocanoniques, on tombe assez naturellement sur les modèles exponentiels. Ces modèles exponentiels, comment ils sont faits ? On va prendre θ, un paramètre qui a la même taille que notre ensemble de caractéristiques, et on va définir un modèle exponentiel, Pθ,
qui a pour densité par rapport à la mesure de Lebesgue, fpθ de x, ça va être 1 sur z de θ, donc z de θ c'est la fonction de partition qui normalise le tout pour que ça fasse bien une loi de probabilité, et puis exponentiel moins le produit scalaire entre ce θ et f2x moins f2i0.
Donc z de θ, en général c'est une intégrale qui est très compliquée à calculer parce qu'on fait une intégrale sur rd, et d ici c'est le nombre de pixels de notre image, donc ça peut être de l'ordre de 500 000, 1 million, enfin ça peut être des nombres vraiment très grands. Ce qu'on remarque tout de suite, c'est que quand on calcule par contre le gradient du log de z de θ,
du log de la fonction de partition, c'est moins l'espérance sous Pθ de f2x moins f2i0, et qu'on peut calculer aussi facilement la sienne du log de z de θ, et on trouve à ce moment là la covariance, la matrice de covariance de f2x moins f2i0. Et donc tout ça, ça nous montre que la fonction qui a θ
associe le log de la fonction de partition, c'est une fonction qui est convexe, et qu'en plus, quand elle atteint son minimum, alors s'il existe, ça n'existe pas toujours, je donnerai plus tard des conditions pour lesquelles ça existe, quand on calcule le minimum, s'il est atteint un certain θ étoile, ce θ étoile, comme il va vérifier gradient log z θ étoile égale 0,
ça nous dit que ça va vérifier exactement la contrainte en espérance. Donc le θ étoile, si on le trouve, il vérifie notre contrainte en espérance. Et en plus, si on a ce θ étoile qui vérifie la contrainte en espérance, si on prend une autre loi P qui vérifie aussi la contrainte en espérance,
donc P, c'est une autre distribution, pas du tout exponentielle, c'est une autre forme de distribution. Si elle vérifie la contrainte, l'espérance souplée de F est égale à F de y0, à ce moment-là, en calculant simplement la distance de Kullbach-Leibler entre P et le Pθ étoile, en développant le calcul, en revenant à la définition
et en développant le calcul, on voit que c'est égale à moins l'entropie de P plus l'entropie de Pθ étoile. C'est juste en développant cette formule et en utilisant la formule explicite pour FPθ étoile. Et à ce moment-là, comme la distance de Kullbach-Leibler est toujours positive, ça nous montre que H2Pθ étoile est toujours plus grand que H2P.
En plus, non seulement on a trouvé un θ étoile qui va vérifier la contrainte, mais en plus, il va être d'entropie maximum parmi toutes les lois qui vérifient la contrainte en espérance. Ça montre que ces modèles exponentiels, c'est la bonne façon, c'est des bons modèles à regarder. En plus, avec ces modèles exponentiels, on a transformé le problème de trouver
une distribution de probabilité, donc un problème en dimension infinie, en un problème qui est de dimension finie, qui est juste de trouver un θ étoile. On a grandement simplifié notre affaire. On l'a simplifié, mais pas tant que ça, parce que ce n'est pas toujours facile de trouver le θ étoile, et puis même une fois qu'on l'a trouvé, il faut quand même
arriver à échantillonner depuis cette voie πθ étoile, et ça, ce n'est pas très simple non plus. Juste pour mentionner que tous ces problèmes de voir la synthèse de texture comme un problème de maximum d'entropie, c'était déjà fait dans un papier de Zouhou et de Mumford en 1998. Qu'est-ce qui a changé depuis ce papier ?
Déjà les statistiques qu'on va regarder. On va regarder des statistiques de réseau de neurones en particulier, et puis aussi les algorithmes pour faire des échantillonnages à partir de πθ. C'est aussi des choses qui ont nettement progressé depuis 1998, et donc c'est pour ça que c'est un sujet qui est toujours extrêmement d'actualité.
La première sorte de contrainte à laquelle on va s'intéresser, c'est des contraintes d'ordre 1 et 2, et ça va nous donner les modèles gaussiens, qui sont des modèles d'entropie maximum, qui sont les plus simples qu'on puisse faire.
C'est quoi les modèles d'ordre 1 et 2 ? On va partir d'une image comme celle-là, c'est une image d'un crépi de mur, et puis on va regarder juste des moyennes et des covariances. Toute l'hypothèse là-dessus est aussi faite sur le fait que notre image-exemple est stationnaire en quelque sorte. C'est-à-dire que si je calcule des statistiques dans le coin en haut à gauche de l'image, et si je les calcule en bas à droite,
c'est à peu près les mêmes statistiques. Mon image est stationnaire, elle ne présente pas des variations de statistiques. En partant comme ça d'une image-exemple qui s'appelle I0, qui est définie sur un domaine rectangulaire oméga de Z2,
c'est une image qui est définie sur un ensemble de pixels, donc un domaine discret. Le cardinal de omega, c'est le nombre de pixels. On va regarder deux statistiques, il y en a une, ça va être le M0, ça va être le niveau de gris moyen de notre image, c'est-à-dire c'est 1 sur D la somme des I0 de K. Et puis on va aussi regarder l'autocorrelation C0.
Pareil, en faisant cette hypothèse que notre image est stationnaire, ça va être C0 de KL, donc c'est une matrice de taille D par D, et elle est faite juste en saumant les I0 de K plus N moins M0, I0 de L plus N moins M0, en saumant sur tous les N qui appartiennent à omega. Et en fait ici quand les I0, ils dépassent,
quand K plus N dépasse mon domaine omega, en fait on se contente juste de détendre l'image I0 à tout Z2 par périodicité. Et donc le modèle macrocanonique maintenant qu'on va regarder, c'est un modèle qui est sous les contraintes que l'espérance de X, donc ici ma fonction F de X, c'est juste égale à X,
l'espérance de X, on veut que ça soit M0 et M0 partout, que mon image est partout la même moyenne, tous les niveaux de gris pareils, et que la covariance soit donnée par C0. Donc on regarde une image qui a cette moyenne-là et cette covariance-là. Et en fait le modèle macrocanonique le plus simple, c'est celui qui est avec les moments d'ordre 1 et 2 qui sont imposés,
donc on tombe sur les distributions gaussiennes. Et donc c'est la distribution gaussienne qui est moyenne M0 et de covariance C0. Donc là le modèle macrocanonique dans ce cas-là est très simple quand on regarde juste des moments d'ordre 1 et 2. Et donc maintenant comment on fait pour échantillonner à partir de cette gaussienne,
parce qu'a priori c'est une gaussienne en dimension très grande, elle a sa matrice de covariance, elle est 500 000 par 500 000. Donc pour échantillonner d'après ce modèle, c'est relativement simple parce qu'il y a une structure de la covariance qui est simple. Et donc il suffit de prendre un bruit blanc et de prendre la convolution de ce bruit blanc avec l'image I0-M0, la moyenne,
et puis avec un facteur de normalisation 1 sur racine de D, et après rajouter le M0 pour avoir la bonne moyenne. Donc ici la convolution elle s'entend au sens discret, périodique, donc à nouveau en étant les images I par périodicité
en dehors du domaine oméga. Et donc en fait en notant ça on a tout de suite que X ça fait un vecteur gaussien de moyenne M0 et de covariance C0. Et donc on a bien un échantillon de notre modèle macrocanonique, de façon très simple. Donc en fait toute cette méthode, l'analyse de cette méthode
a été développée par Bruno Galerne, Yann Gousseau et Jean-Michel Morel dans un article à propos des textures à phase aléatoire. Parce qu'en fait faire cette convolution avec un bruit blanc, en fait ça revient à multiplier la phase en fourrier, enfin lui ajouter plutôt une phase aléatoire. Et donc ça permet de synthétiser très rapidement
en utilisant en fait la transformée de fourrier, de synthétiser très rapidement ces images-là. Et donc en particulier, voilà ce que ça donne si je reprends Donc ça c'est l'image Y0 et là vous avez un nouvel échantillon qui est juste en faisant la convolution avec un bruit blanc et en normalisant de façon correcte et donc vous avez une nouvelle image
qui est suivant ce modèle gaussien M0 C0. Et donc ces deux images en fait elles sont différentes pixel à pixel mais elles ont les mêmes statistiques d'ordre 1 et 2. Donc ça ça peut se faire très rapidement sur n'importe quelle image. Donc ici en haut la ligne du haut c'est des images exemple,
donc vous avez du bois, de la mousse et puis ici de la pierre. Et en dessous vous avez des échantillons obtenus par ce modèle de phase aléatoire, en fait ce modèle gaussien ou phase aléatoire qui donne les mêmes textures visuelles. Et donc visuellement vous avez des nouveaux échantillons et comme ça là en fait on peut faire des échantillons
de taille quelconque. Ici quand je prends mon W, mon bruit blanc, je peux le prendre pas seulement de la taille oméga, je peux le prendre de taille complètement quelconque et à ce moment là j'obtiens des images qui peuvent être de taille, là il se trouve qu'elles ont la même taille mais elles peuvent être de taille 2 fois, 3 fois, 10 fois plus grande. Vous pouvez faire des murs entiers
de papier peint avec votre nouvelle texture. Alors d'autres exemples, donc ça c'est des exemples où par contre ça marche pas. Les exemples d'avant c'était des exemples de ce qu'on pouvait appeler des microtextures qui ont une structure qui est vraiment à l'échelle petite mais dès que dans votre image de texture,
votre image d'origine, vous avez des textures qui sont à plus grande échelle, des choses qui sont organisées de façon géométrique, et à ce moment là l'algorithme qui consiste à juste regarder les moments d'ordre 1 et 2 suffit pas. Puisque vous avez les résultats en bas et en fait on voit qu'on a perdu toute la structure géométrique, les contraintes statistiques géométriques
qui étaient à assez longue distance et qui étaient plus fortes, on les a perdu complètement là-dedans. Donc du coup il faut regarder des statistiques un peu plus d'ordre plus élevé ou plus complexe et en particulier on peut regarder ce qui se passe quand on regarde maintenant des caractéristiques qui sont des sorties de réseau de neurones. Donc pour ça le cadre va être à peu près le même,
à quelques nuances près. Donc on va fixer x0, ça va être notre texture exemple. Là j'ai changé encore de route mais c'est le i0 de tout à l'heure. Donc x0 ça va être notre texture exemple. Et alors ici en fait on va prendre une mesure de référence sur Rd. Donc ça va être une mesure pour des questions d'algorithme après en fait on va prendre une mesure.
Alors typiquement ça va être une gaussienne avec une variance très très grande. Donc idéalement on voudrait prendre la mesure uniforme sur Rd qui n'existe pas. Donc on prend une mesure de référence qui a une variance très très grande. Et puis les contraintes qu'on va regarder, on va regarder des contraintes que je détaillerai plus tard mais ça va être toujours
c'est de noter grand F. Donc ça prend une image en entrée et ça rend un vecteur dans Rp, donc qui est un espace de paramètre. Et donc avec l'idée qu'en fait on veut prendre quand même P bien plus petit que D. Ce qui n'est pas le cas par contre avec la texture gaussienne. Ou dans la texture gaussienne en fait on avait un nombre de contraintes statistiques qui étaient aussi grands que le nombre
de pixels lui-même. Alors que beaucoup de ces contraintes ne servaient pas forcément à quelque chose. Mais en tout cas là on peut prendre, on va prendre en fait un nombre de statistiques qui est bien plus petit que le nombre de pixels de l'image. Et donc au lieu de regarder en fait la notion d'anthropie, on va regarder la notion de la divergence de Kullbach-Kleiber contre cette mesure de référence mu.
Donc on va pas maximiser, là on va minimiser la distance de Kullbach-Kleiber. Donc on veut que la distance de Kullbach-Kleiber soit plus petite possible. Donc c'est-à-dire qu'on veut que P se rapproche le plus possible de mu. Et donc mu étant pris au sens quelque chose qui est le plus uniforme possible sur Rd.
Donc ça va être typiquement, comme je le disais, une mesure gaussienne de variance très grande, assez large. Et donc on va considérer à nouveau les modèles exponentiels. Donc un modèle qui a cette densité-là par rapport à la mesure mu de référence. Et donc la première question c'est est-ce qu'on peut justement avoir des conditions pratiques pour l'existence
d'un modèle macrocanonique, donc un modèle pi étoile, c'est-à-dire un pi theta étoile qui va vérifier nos conditions. Donc en fait, comme je le disais, en fait on a tourné le problème qui était un problème de trouver une loi de probabilité en un problème qui est juste trouver un theta, donc un paramètre.
Donc on a trouvé ça, c'était un problème qui était de dimension finie et qui était convex. Ce point dual, il est bien plus simple à résoudre que le problème initial. Et donc en fait, sous des conditions techniques, on peut montrer qu'il existe en effet un theta étoile tel que pi theta étoile est le modèle macrocanonique associé à f et à x0.
Et donc les conditions, pour donner rapidement, la première condition ça porte sur la mesure de référence mu. Donc c'est tout à fait vérifier si mu est une mesure Gaussian par exemple. Après, c'est une condition qui porte sur f. Il faut que f soit pas trop grand, grandisse pas trop vite à l'infini.
Et puis il y a une condition aussi avec les paramètres theta sur les produits scalaires, là theta et f2x-f2x0. Et en fait, ça c'est une condition pour que la fonction de partition, le z de theta que j'avais tout à l'heure, il vérifie des conditions de coercivité, c'est-à-dire qu'il grandisse assez à l'infini pour permettre l'existence
du theta étoile. Donc en fait, là maintenant, on va avoir deux problèmes. Donc on sait qu'il existe un theta étoile. Alors comment on va trouver ce theta étoile ? Et une fois qu'on a ce theta étoile, comment on fait pour échantillonner ces modèles pi theta ? Comment on fait pour fabriquer des échantillons de ces lois ? D'abord pour trouver le theta étoile,
le paramètre optimal theta étoile. Donc comme je l'avais dit tout au début, on peut minimiser la fonction log partition, le log de la fonction de répartition. Donc c'est le log de l'intégral sur rd, de l'exponentiel de moins theta f2x-f2x0 par rapport à la mesure de référence dmux de x.
Et donc on a le gradient en theta de l de theta qui vaut moins l'espérance pi theta de f-f2x0. Et on a la sn de l de theta qui vaut la covariance de f-f2x0. Donc c'est ça qui assure la convexité. Donc en fait on a une vraie fonction convexe. Et donc on peut faire juste une descente
de gradient. Donc la descente de gradient, on va partir d'un theta 0 aléatoire. Et puis on va faire un theta n plus 1 qui va être le theta n plus un pas delta n plus 1, l'espérance pi theta n de f de moins f2x0. Et puis si on a déjà un a priori dans lequel vit le theta étoile,
on peut faire aussi la projection sur ce convexe k si on sait déjà que notre theta étoile va vivre dans un certain convexe. Ça c'est bien de faire ça, mais quand on fait ça, il y a besoin de calculer l'espérance pi theta n de f de f-f2x0.
Donc pour approcher cette espérance, on va utiliser une approximation de Monte Carlo de l'espérance ou pi theta de f. Mais pour faire ça, il faut avoir des échantillons de pi theta. Alors comment est-ce qu'on fait pour avoir des échantillons de pi theta ? En général, c'est vraiment compliqué de trouver des échantillons d'une loi qui est comme ça exponentielle,
qui est de la forme exponentielle moins u2x dx, avec évidemment le problème de la constante de normalisation devant. Mais alors on peut faire des échantillons de façon approchée en utilisant une dynamique de l'enjoint. C'est-à-dire qu'on va faire tourner une chaîne avec des échantillons x.
Donc xn plus 1, ça va être xn, moins un pas la gamma n plus 1 qui est avec le gradient de u, donc du log de la densité, de la probabilité, au point xn. Plus on lui ajoute un petit bruit blanc à chaque étape. Donc le zn plus 1, ils sont n0 identité, et puis ici le paramètre,
c'est racine de 2 gamma n plus 1. Ici on a gamma n devant le gradient et racine de 2 gamma n plus 1 devant le bruit blanc. Et donc quand on fait ça avec un paramètre gamma n petit, on a des échantillons qui approchent, qui sont de loi à peu près assez proche de exponentielle moins u2x dx.
Donc pour toutes ces questions là sur les dynamiques de l'enjoint, je vous invite à regarder les articles d'Alain Durmus et Eric Moulin sur la convergence de toutes ces méthodes là. Donc maintenant on va combiner ces deux dynamiques. On a une dynamique sur les θ0 qui est par descente de gradient,
et puis à chaque étape de la descente de gradient, on a besoin de calculer une espérance. Pour calculer cette espérance, on a besoin d'échantillonner par des échantillons de la loi. Donc ça on les échantillonne par un algorithme de l'enjoint, et puis une fois qu'on a ces échantillons, on utilise juste une somme de Monte Carlo pour approcher l'espérance.
Donc à chaque étape, on alterne les deux dynamiques, une dynamique sur les paramètres et une dynamique sur des images. Donc finalement pour résumer tout ça, si on pose notre fonction là uθ2x, c'est le produit scalaire θ et f2x-f2x0 plus r2x,
où en fait ici r2x, si on a supposé que notre mesure de Lebesgue avait une densité par rapport à la mesure de Lebesgue, cette mesure de référence pardon, elle a une densité par rapport à la mesure de Lebesgue qui est de la forme exponentielle moins r2x. Et donc on alterne entre ces deux choses qui sont trouvées le paramètre optimal.
Donc θ étoile, on a vu que c'était le minimum de la log partition, donc c'est un problème convex. Donc on fait une descente de gradient, et puis pour échantillonner et calculer ce exponentiel πθn, on fait une dynamique de l'engin et après on moyenne sur les échantillons de la dynamique de l'engin pour avoir l'espérance.
Donc ça c'est résumé ici dans ces deux équations où on a la dynamique de l'engin et l'itération qu'on peut faire sur le θ où on a remplacé l'espérance par une moyenne de f sur les échantillons que l'on a calculé par la dynamique de l'engin
qui fait intervenir le θn qu'on était de l'étape courante. Donc le résultat principal, le résultat de Valentin de Bortoli à Indurmus, Marcelo Pérera et Anna Fernandez Vidal, c'est un résultat de la convergence
sur les paramètres, sur le θ. Quand on a certaines conditions sur f, f est lisse, elle est majorée par une fonction de Lyapunov pour la dynamique de l'engin, et à ce moment-là, suivant les paramètres, les gamma sont les paramètres sur la dynamique de l'engin
et les delta, c'est les paramètres sur la descente de gradient et vous avez aussi un paramètre mn qui est le nombre d'échantillons qu'on prend pour calculer notre moyenne de Monte Carlo pour calculer l'espérance, pour approcher l'espérance. Quand vous avez des conditions respectées
sur tous ces paramètres, vous avez la convergence de la suite θn de paramètres vers le paramètre optimal θ étoile. L'avantage de ce résultat, qui est vraiment un beau résultat, c'est qu'il n'y a pas besoin d'avoir ici f
qui soit convexe. Contrairement à plein d'autres approches, on a besoin d'avoir des moments statistiques qui sont convexes. En particulier, ça va pouvoir s'appliquer à des statistiques de réseau de neurones. À quoi on va l'appliquer plus en détail ? On va prendre un réseau déjà appris.
On n'apprend pas de réseau. On prend le VGG19. On ne va pas s'intéresser à toutes les couches. On va s'intéresser juste aux couches à chaque couche. Vous avez les poids qui sont calculés à chaque couche et pour chaque canal.
On va regarder le f2x. Il est marqué en bas. On va regarder au final quelque chose de l'ordre de 1000 paramètres. On va moyenner la sortie de la LIM couche, le canal C. On va le moyenner et on va garder ça
comme statistique, notre f2x. L'avantage, c'est que le f2x ne dépend pas de la taille de X en entrée. Vous pouvez avoir une taille X toute petite en entrée et synthétiser une grande image. C'est indépendant de la taille de X que vous avez donnée du X0 en entrée comme exemple.
Ici, c'est une initialisation avec le X0, l'image des bonbons. Elle est assez compliquée cette image parce qu'il y a des structures géométriques, plein de couleurs. On voit assez rapidement que tout se mélange. Ici, c'est l'initialisation,
c'est un échantillon du modèle gaussien qui a la même moyenne et la même covariance que cette image d'origine. On a perdu complètement les liens entre les couleurs. Ici, vous avez à droite le résultat après 10 000 itérations de l'algorithme.
Ici, à droite, vous avez les images X0 ou Y0. Ici, vous avez les résultats. Ça permet de voir qu'est-ce que capture un réseau de neurones. Quand on regarde nos statistiques, on peut garder soit toutes les sorties du réseau de neurones en entier.
On a globalement bien respecté la géométrie de l'image de départ. Si vous prenez que les couches profondes dans le réseau, comme statistique, vous obtenez des images comme ça. Là, on voit qu'on a bien saisi la géométrie globale.
Ici, ce sont les couches proches du réseau, les couches plus profondes. À ce moment-là, on voit qu'elles ne capturent pas du tout le même genre de statistiques que les couches plus profondes. Ça permet vraiment de regarder,
qu'est-ce que votre réseau est capable de capturer comme statistique, suivant les différentes couches, la profondeur. Encore d'autres exemples. A nouveau, les bonbons. Ici, vous avez du foin, de l'herbe sèche et un morceau de bois.
Là, c'est comparé avec d'autres méthodes de l'état de l'art. La méthode de Liu-Zhu-Wu prend une seule couche de réseau de neurones comme statistique. La méthode de Gattis prend des matrices de grammes, des sorties de réseau de neurones. Elle cherche plutôt à les imposer
comme un modèle microcanonique. Ici, c'est l'algorithme avec le modèle macrocanonique. On peut faire aussi d'autres choses avec ces réseaux et ces images. On peut faire par exemple du transfert de style. Vous prenez une image d'exemple X0 et vous avez après des images de style
qui sont les images en haut. Vous faites tourner le même algorithme, sauf que dans les statistiques, vous remplacez certaines couches des statistiques du réseau de neurones par les statistiques obtenues sur les images de style. Il y a certaines couches où on garde les statistiques de l'image de contenu
et d'autres où on prend les statistiques de l'image de couche. Quand vous mélangez les deux, vous obtenez des images qui ont le contenu géométrique de votre image d'origine avec le style des images que vous avez mis en entrée. Vous pouvez combiner les deux statistiques en utilisant les statistiques de telle ou telle image
pour obtenir de nouvelles images. En conclusion, faire des échantillons de modèles de maximum d'entropie sous des contraintes statistiques, d'abord, un des enjeux, c'est de comprendre les statistiques qu'on a regardées. Ça permet de comprendre ce que capture un réseau de neurones
suivant les différentes couches, les différents endroits. Ça peut s'appliquer à d'autres contraintes statistiques. Dans un travail avec Arthur Leclerc, on s'était intéressé à des descripteurs, en particulier les descripteurs SIFT. Les descripteurs SIFT sont des histogrammes locaux de l'orientation du gradient.
On peut essayer d'échantillonner suivant des images qui ont les mêmes descripteurs SIFT qu'une image donnée. Ça permet de comprendre ce qui est codé par l'intérieur de ces descripteurs SIFT. Ça permet d'explorer l'ensemble des images qui ont les mêmes structures statistiques qu'une image donnée.
Ça pose plein de questions mathématiques sur l'existence de ces modèles macro-canoniques, sur l'algorithme d'échantillonnage. Il y a des conditions. On peut essayer de généraliser à des fonctions F qui ne sont pas lisses, qui ne tendent pas aussi vite vers l'infini.
Il peut y avoir des tas de voies possibles d'amélioration de ces méthodes. Il y a aussi une question qui est le lien entre les modèles macro-canoniques, dont j'ai essentiellement parlé, et les modèles micro-canoniques. On essaye d'imposer les statistiques sur les modèles macro-canoniques et non pas seulement en espérance.
Il y a des résultats de convergence de l'un vers l'autre. En dernier point, ces modèles exponentiels d'entropie maximum proposent des modèles génératifs d'images. En particulier, ça pourrait être utilisé comme des modèles
de régularisation. Pourquoi ne pas mettre des modèles exponentiels qui sont des modèles appris sur certaines images et qui ont les mêmes statistiques que ces images-là ?
C'était mon dernier slide. Je vous remercie pour votre attention. Merci beaucoup, Agnès, pour cet exposé. Je crois qu'on a des questions dans l'auditoire. J'ai une question de Sana à qui je vais donner la parole. Elle pourra te la poser en vrai.
Sana, vous pouvez poser votre question à Agnès si vous le désirez. Merci. Je ne sais pas si vous m'entendrez. Merci beaucoup pour votre présentation. C'était très intéressant. J'avais juste une petite question par rapport à la nature des contraintes que vous imposez.
Est-ce possible d'imposer des contraintes qui mettraient en œuvre des signaux exogènes qui ne font pas partie de l'image ? Par exemple, vous auriez une deuxième image qui est fixe et vous voudriez imposer que la grosse corrélation entre l'image d'origine
et cette autre image exogène soit aussi respectée dans les images générées par la suite ? Oui, je pense qu'on peut tout à fait le faire. Déjà, ça ressemblait un peu à ce que j'avais mis dans le transfert de style où on a une image de contenu et puis une image de style où on cherche à imposer certaines statistiques
de l'image de style et en même temps de contenu. Il suffit de l'écrire dans la grosse fonction F. Dans la grosse fonction F, on peut écrire à peu près n'importe quoi. Après, l'existence ou la convergence et l'échantillonnage de ces modèles
peut être plus ou moins compliqué suivant le F qu'on prend. Mais on peut tout à fait utiliser d'autres images et d'autres signaux qui même, à priori, sont différents. Je regarderais avec intérêt les articles que vous avez référencé.
Très bien, je regarderais. Merci beaucoup. Après, on a aussi une question de Gilles Blanchard. Gilles, tu peux parler ? Je crois que je t'ai autorisé à parler, non ? Oui, merci Agnès pour ce bel exposé. J'avais une question générale
et une question technique. La question technique, c'est juste sur les théorèmes d'existence, etc. Comment ça se distingue des théories qu'il y avait avant ? Est-ce que c'est parce qu'il y a une mesure de référence mu ? C'est des choses qui n'étaient pas établies avant ?
Effectivement, ce que tu as dit au début, ton exposé sur l'existence de Théta étoile, c'est quoi la différence ? La différence de Théta étoile, c'est que dans le F que tu prends, par exemple, dans les statistiques
que t'imposes, ici, tu peux avoir par exemple ce qui est issu d'un réseau de neurones, alors que ce n'était pas dans le Théta étoile qu'il y avait avant, dans ce qui existait avant, ce n'était pas vérifié dans les conditions. Et aussi, sur l'échantillonnage, en fait, il n'y avait pas cette analyse...
C'était plutôt vu comme dans l'article original de Zouhou et Mumford, ils prenaient des réponses à des filtres et après, ils écrivaient leur modèle exponentiel qui devenait un champ de Gibbs, parce que tu avais juste une interaction locale entre un pixel et ses voisins, et puis ils faisaient un échantillonnage
par un métropolis pour échantillonner à partir de là. Maintenant, j'ai bien conscience que l'utilisation ce sont des features complètement nouvelles et c'est vraiment nouveau. C'est juste au point de vue de l'existence de Théta étoile par rapport à ce que tu avais dit au début, c'était pas valable pour des fonctions F générales.
Ça, c'est le résultat dont tu parlais récemment ? Oui, ça, oui, oui. Je pense qu'il y a déjà des tas de choses là-dessus. Le résultat sur l'existence de Théta étoile, c'est adapter des résultats de CISAR sur ces modèles exponentiels.
Donc, il y a des tas de choses qui existaient là-dessus sur l'existence de Théta étoile, mais c'est juste qu'on a essayé de le réécrire de façon à ce que ça puisse être vérifié ou pas à partir de notre fonction F plus facilement. C'est pas des résultats nouveaux, ça, l'existence du Théta étoile. C'est juste la façon de les réécrire de façon plus explicite.
On te donne des features. Est-ce que tu peux vérifier rapidement s'il va y avoir un Théta étoile ou pas ? Et par rapport à la référence mesure Mu, qu'est-ce qui a fait une différence subtile par rapport à le Max Anthropy ? C'est pas clair pour moi ce que ça fait comme différence ?
Le Kuhlbach-Leibler, quand tu vas faire ton algorithme ici, à ce moment-là, tu vas avoir ton U Théta. C'est là-dessus qu'il va jouer un rôle, parce qu'il va te régulariser tout ça et faire que tu vas être en gros...
Alors, tu vas avoir du X carré là, en gros, dans le R de X. C'est ça qui va te permettre de contrôler ta convergence de ta dynamique de l'angevin et ta descente de gradient tout ensemble. C'est important pour la théorie mais aussi pour la pratique. Si j'enlève le R de X en pratique, ça marche plus ?
Ça dépend des F que tu prends. Souvent, dès que tu prends des F qui ne sont pas très beaux, c'est difficile à faire converger. Là, je vous ai mis le théorème. C'est essentiellement Valentin de Bortoli qui a beaucoup travaillé là-dessus dans sa thèse.
Il a les résultats théoriques de convergence. Il a fait énormément d'expériences. Même quand tu as la théorie, tu dois faire tourner tes choses assez longtemps et faire attendre que ta chaîne converne. Je pense qu'en pratique, le R de X ne change pas grand-chose, mais en tout cas,
tu en as besoin pour faire converger tes algorithmes. J'ai une dernière question. Je sais qu'il y a d'autres méthodes de récent de génération par générative adversariale Network. Cette méthode-là, comment est-ce qu'on compare ? Est-ce que c'est plus léger ?
Ça se compare surtout par le fait que c'est explicite. En fait, tu as construit ton modèle et tu as ton modèle explicitement. Alors que les images que tu sors avec des gannes, c'est un peu une boîte noire. Donc là, ton modèle, tu peux l'imaginer pour autre chose comme un prior,
pour d'autres questions de traitement d'image. En termes de synthèse de texture, ce qui est très difficile, c'est l'évaluation des résultats. Je ne vous ai pas montré de PSNR ou comme Emilie ce matin qui montrait des distances où vous pouvez évaluer votre solution.
Là, c'est très difficile d'évaluer la solution qu'on a. C'est une évaluation essentiellement visuelle. Est-ce que tu serais content si tu avais ton papier peint comme ça ? Après, il peut y avoir des choses plus sérieuses, mais le problème de l'évaluation est assez compliqué.
En tout cas, je suis tout à fait d'accord qu'avoir une représentation mathématique claire, c'est très important et que ça enlève un petit peu du côté mystérieux. Il y a toujours les features du réseau de neurones qui sont toujours un peu compliqués, mais après, la génération elle-même,
c'est très beau de voir qu'on peut appliquer ce principe qui date de l'ère longtemps pour arriver à ça. Merci beaucoup. Pour terminer, une petite question de Charles. Ma question, c'était sur les approches par patch. Est-ce que ça, c'est encore des approches en vogue
sur la strateste de texture ? Est-ce que ça peut être combiné avec ce que tu nous as présenté ? Les approches par patch, leur difficulté, c'est l'innovation. En fait, tes approches par patch, c'est des approches essentiellement de copier-coller où on construit une nouvelle image petit à petit en collant côte à côte des bouts de la nouvelle image.
On peut essayer de faire des bouts un peu nouveaux qui n'existent pas dans l'image d'origine, mais en général, ces approches par patch, elles ont plusieurs défauts, mais elles sont très bien dans la mesure où elles sont aussi assez rapides et ça ne passe pas par des choses.
Finalement, les statistiques F sont cachées dans les patchs. La limite de ces approches, c'est peut-être que la taille des patchs doit être fixée arbitrairement ? Oui, il y a la taille des patchs qui doit être fixée arbitrairement et puis il y a la façon dont t'imposes tes patchs. La façon dont tu les imposes, soit tu les imposes dans l'ordre,
soit tu essayes de les imposer tous en même temps, mais je pense qu'on pourrait tout à fait imaginer avoir un espèce de modèle exponentiel qui respecterait la bonne statistique des patchs. Dans F, on peut tout à fait imaginer mettre des statistiques de patchs. On met bien des gaussiennes, finalement les réseaux de neurones,
ça fait des réponses à des petits filtres. C'est non linéaire, mais pourquoi pas mettre des statistiques de patchs dans le grand F ? On peut mettre vraiment beaucoup de choses, je pense. OK, merci.