Colorisation par Deep Learning

Colorisation par Deep Learning

Il y a quelques années mon père à fait digitaliser des milliers de photos de famille dont la pluspart en noir et blanc. Je les ai mise sur Flickr avec l’idée de les traiter un jour.

Le jour du traitement est venu.

Le propos de ce blog n’est pas d’aller dans les détails techniques mais en quelques mots : le procédé de colorisation est basé sur un GAN (Generative Adversarial Networks) et des briques logicielles du MIT, de l’Université de Waseda, de LM3LABS, les API de Flickr et un post-processing ImageMagick. Le tout est ficelé dans du Python et tourne sur une instance Amazon AWS. Note, je fais cela à titre privé et sans but lucratif dans le respect des propriétés intellectuelles de chacun. A disposition pour parler des détails avec les passionnés.

J’ai commencé par cette photo de ma grand-mère dans les années 30 pensant qu’une photo de basse résolution donnerait de bons résultats.

Ma grand-mere dans les annees 30. La photo est en basse résolution.

Ma grand-mere dans les annees 30. La photo est en basse résolution.

Le premier résultat de l’algorithme. Elle n’avait certainement pas les cheveux gris. Elle était blonde. La robe était certainement beige pas rose.

Le premier résultat de l’algorithme. Elle n’avait certainement pas les cheveux gris. Elle était blonde. La robe était certainement beige pas rose.

Mais malgré les approximations, l’algorithme sort un résultat plutot bons en 20 secondes par photo.

Ma première vraie satisfaction viendra de cette photo de famille.

Originale de la photo de mes parents et grands-parents

Originale de la photo de mes parents et grands-parents

Les tonalités sont fades, il y a peu de rouge mais les couleurs donnent immédiatement une nouvelle tournure à la photos. L’algo n’a pas retrouvé la couleur rouge des sieges dont je me souviens bien.

IMG_1262.JPG

En appliquant quelques lignes de code tirés d’un projet pour Chanel, ma maman est maquillée.par gender et face detection. C’est marrant de penser que la petite fille à aider à maquiller la grand-mère jeune.

FullSizeRender.jpg

Un autre bon résultat sur cette photo de mes parents à Zermatt.

Mes parents à Zermatt en 1966

Mes parents à Zermatt en 1966

J’aime comme l’algo a mis du rouge sur la nappe. Aucune idée de la couleur originelle mais ca semble bien.

La main de mon père sur la jambe de ma mère parrait monstrueuse. Mais en noir et blanc aussi peut-être. Le GAN est mal entraîné sur les mains et les pieds.

La main de mon père sur la jambe de ma mère parrait monstrueuse. Mais en noir et blanc aussi peut-être. Le GAN est mal entraîné sur les mains et les pieds.

Le système marche mieux sur les photos nettes. Les photos de mariage de mes parents, prises par un professionnel marchent naturellement mieux.

IMG_1310.JPG
IMG_1311.JPG

Les photos de ma mère qui fait la tête, à Cannes est un succès. Le ciel est bien traité grâce à une bonne compréhension de la scène. La bâche sur le bateau n’est pas comprise ce qui est normal. Les fleurs des vieilles tantes sont bien interprétées mais pas celles de ma maman dont on ne voit pas les branches.

IMG_1323.JPG
IMG_1324.JPG

Clairement, les scènes de nature donnent de bons résultats, même sur des photos floues comme ces photos de ma mère dans les alpages.

Ma maman en alpage, la photo est plate

Ma maman en alpage, la photo est plate

Elle a pris du bronzage la brindille

Elle a pris du bronzage la brindille

L’algo n’a pas su traiter l’ombre sur sa peau

L’algo n’a pas su traiter l’ombre sur sa peau

Ma grand-mère devant son champs

Ma grand-mère devant son champs

Le GAN invente des couleurs sur la base de règles de couleur complémentaires, pour plaire a l’oeil à défaut de savoir quelle était la couleur d’origine.

La couleur de la robe est “devinée” sur la base de choix de couleurs complémentaires. Pourquoi pas, personne ne viendra plus dire que ce n’était pas la bonne couleur.

La couleur de la robe est “devinée” sur la base de choix de couleurs complémentaires. Pourquoi pas, personne ne viendra plus dire que ce n’était pas la bonne couleur.

Le GAN n’a pas appris les montagnes et les traitent comme des nuages. Du coup, le ciel apparait gris aussi. A améliorer.

Ma maman qui donne a manger aux poules. Un photo assez plate.

Ma maman qui donne a manger aux poules. Un photo assez plate.

La photo devient plus intéressante apres coloration. Des erreurs sur ses vetement et la boite de conserve. La photo est rayee et le GAN a cru que c’était de la végétation.

La photo devient plus intéressante apres coloration. Des erreurs sur ses vetement et la boite de conserve. La photo est rayee et le GAN a cru que c’était de la végétation.

Mon père, son frère, sa soeur, sa mère, quelque part en Suisse, en 1941.

Mon père, son frère, sa soeur, sa mère, quelque part en Suisse, en 1941.

La photo prend une autre dimension meme si de nombreuses erreurs apparaissent.  J’ai également passé à la moulinette des photos plus récentes sur un dataset de photos de kendo. La colorisation du « gi » se fait tres correctement.

La photo prend une autre dimension meme si de nombreuses erreurs apparaissent.

J’ai également passé à la moulinette des photos plus récentes sur un dataset de photos de kendo. La colorisation du « gi » se fait tres correctement.

Mon fils en Noir & Blanc, l’original

Mon fils en Noir & Blanc, l’original

Le GAN a bien appris la couleur du kendo mais le pied est resté en BW.

Le GAN a bien appris la couleur du kendo mais le pied est resté en BW.

Et puis il y a quelques photos que je ne veux jamais voir en couleur parce qu’elles parlent d’elles-même en noir et blanc et floues comme cette photo de ma mère et moi à mes trois ans. La tarte aux cerises restera comme elle est, elle est incroyablement rouge dans mes souvenirs.

Merci de ne jamais avoir fait de moi un blasé !

Merci de ne jamais avoir fait de moi un blasé !