 Merci pour l'invitation, merci pour l'organisation de cette belle journée. En effet, je vais vous parler de synthèse d'image et des contraintes statistiques et par un principe de maximum d'anthropie. 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, c'est qu'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 imageries médicales, en particulier pour faire ce qui s'appelle des essais cliniques virtuels, c'est-à-dire qu'on reproduit des tissus d'imagerie et pour essayer de comprendre leurs propriétés et 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 quelques 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 feature. 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, les slides qui passent. On voit une image avec input et... C'est ça, c'est ce dont je parlais au début en fait. Ok, donc on va reprendre du coup. Désolé, donc là le problème c'est qu'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é. Et sur la slide F2i égale F2i0. Voilà, c'est ça, c'est bon alors, très bien. Merci. Donc on va prendre un certain nombre de statistiques et le but donc ç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? Et bon on va faire ça dans un cadre stochastique. En fait on va chercher plutôt une loi, une mesure de probabilité p sur toutes les images possibles x telle qu'en fait d'une part p elle 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 qu'il va, alors il va y avoir deux notions. Donc soit la notion de modèle microcanonique, ça va être telle que F2i est égale à F2i0 presque sûrement quand x est échantillonnée suivant la loi p ou sinon la version macrocanonique c'est la version où en fait on respecte les statistiques mais en espérance. C'est-à-dire que l'espérance soupée de F2x est égale à F2i0. Donc ces deux notions microcanoniques, macrocanoniques sont détaillées dans le papier de Bruna et Mala et ils donnent ces deux façons différentes d'imposer des statistiques en fait 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égrale de fp2x log fp2x dx. Et donc en utilisant, quand on veut maximiser l'entropie sous des contraintes d'espérance statistique on est assez rapidement amené à s'intéresser au multiplicateur de la grange et donc quand on s'intéresse au modèle macrocanonique on tombe assez naturellement sur les modèles exponentiels. Donc ces modèles exponentiels, comment ils sont faits on va prendre Teta un paramètre qui a la même taille que notre ensemble de caractéristiques et on va définir un modèle exponentiel pTeta qui a pour densité par rapport à la mesure de Lebesgue fpTeta de x, ça va être 1 sur z2Teta donc z2Teta c'est la fonction de partition qui normalise le tout pour que ça fasse bien une noix de probabilité et puis exponentiel moins le produit scalaire entre ce Teta et f2x moins f2i0. Alors donc z2Teta, alors 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 et alors ce qu'on remarque tout de suite c'est que quand on calcule par contre le gradient du log de z2Teta, du log de la fonction de partition c'est moins l'espérance sous pTeta de f2x moins f2i0 et qu'on peut calculer aussi facilement la hécienne du log de z2Teta et on trouve à ce moment là la co-variance de f2x moins f2i0 et donc tout ça nous montre que la fonction qui a Teta associe le log de la fonction de partition c'est une fonction qui est convex et qu'en plus quand elle atteint son minimum alors s'il existe ça existe pas toujours je donnerais plus tard des conditions pour lesquelles ça existe quand on calcule le minimum s'il est atteint en un certain Teta étoile ce Teta étoile comme il va vérifier gradient log zTeta étoile ça nous dit que ça va vérifier exactement la contrainte en espérance donc le Teta étoile si on le trouve eh bien il vérifie notre contrainte en espérance et en plus si on a ce Teta é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 sous p de f est égale à f de i0 eh bien à ce moment là on calcule en simplement la distance de Kulbac Leibler entre p et le pTeta étoile en développant le calcul en revenant à la définition et en développant le calcul on voit que c'est égal à moins l'anthropie de p plus l'anthropie de pTeta étoile c'est juste en développant cette formule et en utilisant la formule explicite pour fPTeta étoile et à ce moment là comme la distance de Kulbac Leibler est toujours positive ça nous montre que h de pTeta étoile est toujours plus grand que h de p donc en plus non seulement on a trouvé un Teta étoile qui va vérifier la contrainte mais en plus il va être d'anthropie maximum parmi toutes les lois qui vérifie la contrainte en espérance donc ça ça remonte que vraiment ces modèles exponentiels c'est la bonne façon en fait c'est des bons modèles à regarder et en plus avec ces modèles exponentiels en fait on a transformé le problème qui était un problème de trouver une distribution de probabilité d'une dimension infinie on a un problème qui est de dimension finie qui est juste de trouver un Teta étoile donc on a grandement simplifié notre affaire mais alors on l'a simplifié mais quand même pas tant que ça parce que c'est pas toujours facile de trouver le Teta étoile et puis même une fois qu'on l'a trouvé il faut quand même arriver à échantillonner depuis cette fois pTeta étoile et ça c'est pas très simple non plus donc juste pour mentionner en fait que tous ces problèmes là de voir la synthèse de texture de maximum d'anthropie c'était déjà fait en fait dans un papier de Zouou et Memphorn en 98 et alors qu'est ce qui a changé maintenant là depuis ce papier c'est déjà les statistiques qu'on va regarder en fait on va regarder des statistiques de réseaux de neurones en particulier et puis aussi les algorithmes pour faire des échantillonnages à partir de pTeta c'est aussi des choses qui ont nettement progressé depuis 98 et donc c'est pour ça que c'est un sujet qui est toujours extrêmement d'actualité donc hop pardon donc la première sorte de contraintes à laquelle on va s'intéresser c'est des contraintes qui vont être des contraintes d'ordre 1 et 2 en fait et ça va nous donner les modèles gaussiens qui sont des modèles d'anthropie maximum qui sont les plus simples en quelque sorte qu'on puisse faire donc alors c'est quoi les modèles d'ordre 1 et 2 en fait on va partir d'une image comme celle là donc ça c'est une image d'un crépi de mur qui va garder juste des moyennes et des covariances donc en fait toute l'hypothèse là dessus est aussi faite sur le fait que notre image exemple elle 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 d'accord il n'y a pas de mon image elle est dit voilà elle est stationnaire elle présente pas des variations de statistiques et donc en partant comme ça c'est un domaine rectangulaire omega de z2 d'accord c'est une image qui est définie sur un ensemble de pixels donc un domaine discret donc d c'est le cardinal de omega c'est le nombre de pixels et bon 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 donc c'est à dire c'est insurder la somme des i0,2k et puis on va aussi regarder l'autocorrelation c0 donc pareil en faisant cette image qui est stationnaire donc ça va être c0 de kl donc c'est une matrice de taille d'épargner et elle est faite juste en saumant donc 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 qu'en k plus n dépassent 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 macro canonique c'est un modèle qui est sous les contraintes que l'espérance de x d'accord donc ici ma fonction f2x c'est juste égal à x l'espérance de x on veut que ça soit m0 ou m0 partout comme une image elle est partout la même moyenne tous les niveaux de gris pareil et que la covariance soit donnée par c0 donc on regarde une image qui a cette moyenne et cette covariance là et en fait le modèle macro canonique le plus simple ici c'est donc 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 voilà donc là le modèle macro canonique dans ce cas là il est très simple quand on regarde des moments d'ordre 1 et 2 et donc maintenant comment on fait pour échantillonner à partir de cette gaussienne parce qu'à priori c'est une gaussienne en dimension très grande d'accord elle a sa matrice de covariance elle est genre 500 000 par 500 000 donc en fait pour échantillonner d'après ce modèle en fait c'est relativement simple parce qu'il y a une structure de la covariance qui est simple et donc il suffit en fait de prendre un bruit blanc et puis de prendre la convolution de ce bruit blanc avec l'image i0 moins 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 omega et donc en fait en autant ça on a tout de suite que x il est ça fait un vecteur gaussien de moyenne m0 et de covariance c0 et donc on a bien un échantillon de notre de notre modèle macro canonique de façon 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 Galler, Nianne 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 crois mon image de Crepy de tout à l'heure donc ça c'est l'image i0 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 peut se faire très rapidement sur n'importe quelle image donc ici en haut la ligne du haut c'est des images exemples 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 modèle gaussien phase aléatoire qui donne les mêmes textures visuelles et donc visuellement vous avez des nouveaux échantillons et comme ça en fait on peut faire des échantillons de taille quelconque ici quand je prends mon mon w, mon bruit blanc pas seulement de la taille au méga je peux le prendre de taille complètement quelconque et à ce moment là j'obtiens des images qui peuvent être de taille, là ils se trouvent qu'elles ont la même taille mais elles peuvent auraient ê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 micro textures 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 longues distances et qui étaient plus fortes on les a perdu complètement 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éseaux 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 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'algorithmes 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 moyenne une mesure de référence qui a une variance très très grande et puis les contraintes qu'on va regarder donc des contraintes que je détaillerai plus tard donc 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 peut 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 était aussi grand 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 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 Kuhl-Bachleiber contre cette mesure de référence mu d'accord donc on veut alors on va pas maximiser là on va minimiser la distance de Kuhl-Bachleiber donc on veut que la distance de Kuhl-Bachler entre P et mu soit la plus petite possible donc ça veut dire qu'on veut que P se rapproche le plus possible de mu et donc mieux é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 assez de variances très grandes assez larges 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 trouvé 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 d'accord ce problème dual il est bien plus simple à résoudre que le problème initial et donc en fait sous des conditions on va montrer qu'il existe en effet un theta étoile tel que Pi theta étoile et le modèle macrocanonique associé à f et à x0 et donc les conditions c'est alors pour donner rapidement la première condition en fait ça porte sur la mesure de référence mu donc c'est tout à fait vérifié si mu est une mesure gaussienne 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 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 p theta comment on fait pour fabriquer des échantillons de ces lois donc alors 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 le log partition de la 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 moins f2x0 par rapport à la mesure de référence d'ému de x et donc on a le gradient theta de l de theta qui vaut moins l'espérance p theta de f moins f2x0 et on a la SN de l de theta qui vaut la covariance de f moins f2x0 donc c'est ça qui assure la convexité donc en fait on a une vraie fonction convex 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 p 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 convex cas si on sait déjà que notre theta étoile va vivre dans un certain convex donc ça c'est bien de faire ça mais quand on fait ça il y a besoin de calculer l'espérance sous p theta n de f de f moins f2x0 donc pour approcher cette espérance on va utiliser une approximation de Monté-Carlo de l'espérance sous p theta de f mais pour faire ça il faut avoir des échantillons de p theta alors comment est ce qu'on fait pour avoir des échantillons de p theta alors en général c'est vraiment compliqué de trouver des échantillons d'une loi qui est comme ça d'une forme exponentielle qui est de la forme exponentielle moins u2x d'x 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'angevain c'est-à-dire qu'on va faire tourner une chaîne avec des échantillons x donc xn plus 1 ça va être xn moins 1 pas la gamma n plus 1 qui avec le gradient de u du log de la densité de la probabilité au point xn plus on y ajoute un petit bruit un petit bruit blanc à chaque étape donc les 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 en fait avec un paramètre gamma n petit on a des échantillons qui approchent qui sont de lois à peu près à ces proches de exponentiel moins u de x donc pour toutes ces questions sur les dynamiques de l'angevain je vous invite à regarder les articles d'Alain Durmus et Eric Moulin sur justement la convergence de tous ces méthodes là donc maintenant on va combiner en fait ces deux dynamiques on a une dynamique sur les teta 0 qui est par descente de gradient et puis en fait à chaque étape on a une dynamique pour calculer une espérance donc 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'angevain et puis une fois qu'on a ces échantillons on utilise juste une somme de Montécarlo pour approcher l'espérance donc à chaque étape on alterne en fait 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 la 8 état de x c'est le produit scalaire teta et f2x-f2x0 plus r2x ou en fait ici r petit r2x si on a supposé que notre mesure de Lebesgue elle avait une densité par rapport à la mesure de Lebesgue, cette mesure de référence elle a une densité par rapport à la mesure de Lebesgue et de la forme exponentielle moins r2x et donc on alterne entre ces deux choses qui sont trouvées par un paramètre optimal donc teta et 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 p teta n on fait une dynamique de l'angevin et après on moyenne sur les échantillons de la dynamique de l'angevin pour avoir l'espérance donc ça s'est résumé ici dans ces deux équations la dynamique de l'angevin et du coup l'iterration après qu'on peut faire sur le teta où on a remplacé l'espérance justement par une moyenne de f sur les échantillons qu'on a calculé par la dynamique de l'angevin qui fait intervenir le teta n justement qu'on était de l'étape courante donc le résultat principal le résultat de Valentin de Bortoli à Indirmus Marcelo Pereira Anna Fernandes Vidal c'est un résultat de convergence sur les paramètres sur le teta en fait donc en fait suivant quand on a certaines conditions sur f f est lisse elle est majorée par une fonction de la dynamique de l'angevin et à ce moment là suivant les paramètres donc les gammas c'est les paramètres sur la dynamique de l'angevin et les deltas 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 Montécarlo pour calculer l'espérance pour approcher l'espérance et donc quand vous avez des conditions respectées sur tous ces paramètres les delta, les gamma et les m à ce moment là vous avez la convergence de la suite teta n de paramètres vers le paramètre optimal teta étoile donc l'avantage de ce résultat qui est vraiment un beau résultat il n'y a pas besoin d'avoir ici f qui soit convex en fait contrairement à plein d'autres approches on a besoin d'avoir des moments statistiques qui sont convex il n'y a pas besoin qu'ils soient convex et en particulier ça va pouvoir s'appliquer à des statistiques de réseau de neuron donc comment ça à quoi on va l'appliquer plus en détail en fait on va prendre le réseau on va pas prendre un nouveau réseau on apprend pas de réseau on prend le vgg19 alors on va pas s'intéresser à toutes les couches on va s'intéresser juste aux couches qui sont marquées là avec des flèches donc en fait on a une famille de couches on a des canaux à chaque couche et puis vous avez donc les poids qui sont calculés à chaque couche pour chaque canal et en fait ce qu'on va regarder le f2x donc il est marqué en bas en fait on va regarder au final les paramètres à peu près et on va garder f2x en fait on va moyenné la sortie sur la lm couche le canal c on va le moyenné et on va garder ça comme statistique ça va être ça notre f2x donc l'avantage c'est que le f2x ici il dépend pas finalement de la taille de x en entrée c'est à dire que vous pouvez avoir une taille x toute petite en entrée et puis synthesiser une grande image c'est indépendant finalement la taille de x que vous avez donné en entrée comme exemple et donc ce que ça donne ici c'est une initialisation avec le x0 donc c'est l'image des bonbons alors elle est assez compliquée cette image parce qu'il y a des structures géométriques il y a plein de couleurs et donc on voit assez rapidement que tout se mélange quand on prend ici cette initialisation c'est le modèle gaussien et la même covariance que cette image d'origine donc là tout s'est mélangé en fait on a perdu complètement les liens entre les couleurs et ici vous avez à droite le résultat après 10 militérations de l'algorithme donc un autre exemple donc ici à droite vous avez les images exemples donc les images x0 ou i0 et puis ici vous avez les résultats alors ce qui est intéressant c'est qu'en fait on peut voir ça permet de voir qu'est-ce que capture un réseau de neurones en regardant en fait quand on regarde nos statistiques on peut garder soin toutes les sorties du réseau de neurones en entier donc on obtient ce type d'image on voit qu'on a globalement bien respecté la géométrie de l'image de départ et puis si vous prenez que les couches profondes dans le réseau comme statistiques vous obtenez des images comme ça donc là on voit qu'on a bien saisi la géométrie disons on saisit bien la géométrie globale et puis ici c'est les couches proches les couches proches du réseau, les couches plus profondes et à ce moment là on voit qu'on elle capture pas du tout en fait le même genre de statistiques que les couches plus profondes donc en fait ça permet vraiment de regarder synthétiser comme ça ça permet vraiment de regarder qu'est-ce que votre réseau est capable de capturer comme statistique suivant les différentes couches suivant la profondeur et donc là encore d'autres exemples donc à nouveau les bonbons ici vous avez comme du foin de l'herbe de l'herbe sèche et un morceau de bois et voilà donc là c'est comparé avec d'autres méthodes un peu de l'état de l'art donc la méthode en fait elle prend une seule couche de réseau neurone comme comme statistique la méthode de Gatis elle elle prend une prise de gramme des sorties de réseaux de neurones et elle cherche plutôt à les imposer presque sûrement d'accord plutôt comme un modèle microcanonique et ici donc c'est l'algorithme avec le modèle macrocanonique et puis on peut faire aussi d'autres choses avec ces réseaux comme ça et ces images on peut faire par exemple du transfert de style c'est-à-dire qu'en fait vous prenez une image d'exemple X0 et puis vous avez après des images de style qui sont les images en haut et en fait vous faites tourner le même algorithme sauf que dans les statistiques vous remplacez certaines certaines couches des statistiques du réseau neurone 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 on prend les statistiques de l'image de couche et en fait du coup 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 et donc vous pouvez combiner comme ça les deux statistiques en utilisant les statistiques de telle ou telle image pour obtenir de nouvelles images donc en conclusion en fait le faire des échantillons comme ça de modèle de maximum d'entropie sur des contraintes statistiques d'abord un des enjeux c'est de comprendre les statistiques qu'on a regardé donc ça permet de comprendre qu'est-ce que capture un réseau neurone suivant les différentes couches suivant les différents endroits après ça peut s'appliquer aussi à d'autres contraintes statistiques dans un travail avec Arthur Leclerc en fait on s'était intéressé à des descripteurs en particulier les descripteurs sift et les descripteurs sift en fait c'est des histogrammes locaux de l'orientation du gradient et du coup on peut essayer d'échantillonner suivant des images qui ont les mêmes descripteurs sift qu'une image donnée et en fait ça permet de comprendre vraiment qu'est-ce qui est codé à l'intérieur de ces descripteurs sift et ça permet d'exploiter d'explorer l'ensemble des images qui ont les mêmes structures statistiques qu'une image donnée alors évidemment ça pose plein de questions mathématiques sur l'existence de ces modèles macro-canoniques sur l'algorithme d'échantillonnage d'accord, parce qu'il y a des conditions et on peut essayer aussi d'essayer de généraliser à des fonctions F qui sont pas lisses qui ne tentent pas aussi vite vers l'infini il peut y avoir des tas de voies possibles d'amélioration de ces méthodes et 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 où on essaye d'imposer les statistiques presque sûrement et non pas seulement en espérance donc on peut essayer de faire un lien entre les deux et il y a des résultats de convergence de l'un vers l'autre et puis il y a en dernier point je pense que ces modèles exponentiels d'entropie maximum ça propose des modèles génératifs d'image et en particulier je pense que ça pourrait être utilisé comme des modèles des priors si ça revient ce matin à ce que disait Émini dans son exposé quand on rajoute un modèle a priori un modèle de régularisation et pourquoi pas mettre des modèles justement comme ça exponentiel qui sont des modèles appris sur certaines images et qui ont les mêmes statistiques que ces images voilà et c'était mon dernier slide donc je vous remercie pour votre attention merci donc merci beaucoup Agnès pour cette exposé donc je crois qu'on a des questions dans l'auditoire donc j'ai une question de Sana qui je vais donner la parole du coup Albright l'a posée en vrai ce sera un peu plus sympathique donc Sana vous pouvez poser votre question à Agnès si vous le désirez oui merci je sais pas si vous vous arrivez à m'entendre oui très bien alors 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 qu'il est possible d'imposer des contraintes qui mettraient en œuvre des signaux des signaux exogenes qui ne font pas partie de l'image donc par exemple vous auriez une deuxième image qui est fixe et vous voudriez imposer que la grosse correlation entre l'image d'origine et cette autre image exogene soit aussi respectée dans les images générées par la suite oui je pense qu'on peut tout à fait le faire en fait 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ù en fait on cherche à imposer certaines statistiques de l'image de style et en même temps de l'image de contenu et donc en fait on du coup ça permet oui en fait il suffit de l'écrire dans la grosse fonction f dans la grosse fonction f on peut écrire à peu près n'importe quoi en fait après l'existence ou la convergence et l'échantillonnage de ces modèles peut être plus ou moins compliqué suivant le f comprend oui oui on peut tout à fait utiliser d'autres images d'autres signaux qui même a priori sont différents en fait je sais si ça répond à votre question non mais je regarderai avec intérêt du coup les artiles que vous avez référencés très bien je regarderai merci beaucoup merci alors après on a aussi une question de Gilles Blanchard donc Gilles tu peux parler je t'ai autorisé à parler oui merci Nés pour ce bel exposé en fait j'avais une question générale 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 que il y a une mesure de référence mu enfin tu vois c'est des choses qui n'étaient pas établies avant enfin tu as dit au début tout d'exposer sur l'existence de tétas étoiles c'était pour c'est quoi la différence en fait la différence de tétas étoiles en fait dans le F que tu prends là 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 c'était pas dans le tétas étoiles qu'il y avait avant dans ce qui existait avant c'était pas vérifié dans les conditions en fait donc il y avait ça et aussi sur l'échantillonnage en fait il y avait pas cette analyse en fait c'était plutôt vu comme dans l'article original de Zou et Memford ils prenaient des réponses à des filtres et après du coup ils écrivaient leur modèle exponentiel qui devenait un modèle de un champ de gips en fait parce que t'avais juste une interaction locale entre un pixel donc ça devenait un champ de gips et puis ils faisaient un échantillonnage par un métropolice pour échantillonner à partir de là j'ai bien conscience que l'utilisation sont des features complètement nouvelles et c'est vraiment c'est nouveau c'est juste au point de vue de l'existence de tétas étoiles par rapport à ce que tu as dit au début c'était pas valable pour des fonctions rêves générales ça c'est le résultat dont tu parlais récent oui je pense qu'il y a déjà des tas de choses là-dessus ça c'est juste le résultat sur l'existence de tétas étoiles c'est adapté de résultats de CISAR sur ces modèles exponentiels et donc il y a des tas de choses qui existaient là-dessus sur l'existence de tétas étoiles 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 fondation ok je comprends mais c'est pas des résultats nouveaux à l'existence du tétas étoiles c'est juste la façon de le réécrire de façon plus explicite pour qu'on donne des features est-ce que tu peux vérifier rapidement s'il va y avoir un tétas étoile ou pas et par rapport à la référence mesure mu et qu'est-ce qu'il y a fait une différence subtile mais par rapport à le max utilisé avec Kuhl-Bachleibler par rapport à mu plutôt que le max entropy c'est pas clair pour moi le Kuhl-Bachleibler du coup quand tu vas faire ton algorithme ici et à ce moment-là tu vas avoir ton ut-état c'est là-dessus qu'il va jouer un rôle parce qu'il va te régulariser tout ça et te faire que tu vas être en gros alors tu vas avoir du x² là en gros dans le r2x et donc c'est ça qui va te permettre de contrôler en fait ta convergence de ta dynamique de l'ange 20 et de ta descente de gradients tout ensemble en fait d'accord donc c'est important pour la théorie mais aussi pour la pratique, si j'enlève le r2x en pratique ça marche plus ça dépend des F que tu prends c'est-à-dire que c'est souvent dès que tu prends des F qui sont pas très beaux c'est difficile à faire converger c'est-à-dire que là je vous ai mis le théorème tout ça essentiellement je dois dire c'est Valentin de Bortoli qui a beaucoup travaillé là-dessus dans sa thèse et donc il a les résultats théoriques de convergence il a fait aussi énormément d'expériences et même quant à la théorie tu dois quand même faire tourner tes choses assez longtemps et faire attendre que ta chaîne converge pendant assez longtemps et je pense qu'en pratique le r2x change pas grand chose mais en tout cas t'en as besoin pour faire converger tes algorithmes en fait j'ai une déna question c'était plus générale je sais qu'il y a d'autres méthodes de récent de génération je crois par générative adversarial network et là cette méthode-là, comment est-ce qu'on part est-ce que c'est différente utilisation est-ce que c'est moins, est-ce que c'est plus léger au point du compétitionnel, enfin comment ça se compare en fait ça se compare surtout par le fait que c'est explicite t'as construit ton modèle et t'as ton modèle explicitement alors que les images que tu sors avec des gannes c'est un peu une boîte noire en fait t'as pas construit un modèle donc là ton modèle tu peux imaginer l'utiliser pour autre chose en fait comme un prior pour autre chose après pour d'autres questions de traitement d'image en termes de synthèse de texture franchement pour la synthèse de texture ce qui est très difficile c'est l'évaluation des résultats c'est-à-dire que je ne vous ai pas montré de PSNR ou de comme Émilie ce matin qui montrait des distances en fait c'est d'évaluer votre solution là c'est très difficile d'évaluer la solution qu'on a en fait c'est une évaluation essentiellement visuelle donc voilà est-ce que tu serais content si t'avais ton papier pain comme ça ou est-ce que tu ne serais pas bon après il peut y avoir des choses plus sérieuses mais voilà le problème de l'évaluation est assez compliqué je suis tout à fait d'accord que le voir une représentation mathématique c'est très important et que ça relève un petit peu justement du côté mystérieux toujours les features des raisons neurones qui sont toujours un peu compliquées 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 longtemps pour arriver à ce point donc merci beaucoup tout à fait merci alors on a donc pour terminer une petite question de Charles ma question c'était les approches par patch est-ce que ça c'est encore des approches en vogue sur la status de texture est-ce que ça peut être combiné avec ce que tu nous as présenté oui en fait les approches par patch leurs difficultés c'est l'innovation en fait c'est-à-dire que en fait tes approches par patch c'est des approches essentiellement de copiers collés où en fait on construit une nouvelle image petit à petit en collant côte à côte des bouts de la nouvelle image alors on peut essayer de faire des bouts un peu nouveaux qui existent pas dans l'image d'origine mais en général ces approches par patch en fait elles ont des voilà elles ont plusieurs défauts mais enfin elles sont très bien dans la mesure où elles sont aussi souvent assez rapides et ça passe pas par des choses finalement les statistiques F sont cachés dans les patchs il y a un limite de ces approches là c'est peut-être que la taille de patch doit être fixée arbitrairement oui il y a la taille qui doit être fixée arbitrairement et puis il y a la façon dont on t'impose tes patchs en fait la façon que tu les imposes soit tu les imposes dans l'ordre soit tu essayes de les imposer tous en même temps soit mais je pense qu'on pourrait tout à fait imaginer avoir un espèce de modèle exponentiel qui respecte la bonne statistique des patchs en fait dans F on peut tout à fait imaginer mettre des statistiques de patchs enfin je veux dire on met bien des gaussiennes on met bien finalement les réseaux de neurones ça fait on peut mettre beaucoup de choses je pense à des petits filtres moi c'est non linéaire etc mais je veux dire pourquoi pas mettre des statistiques de patchs en fait dans le grand F on peut mettre vraiment beaucoup de choses je pense ok merci