AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Concernant la programmation d'un programme de comparaison picturale

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
robinlife
Utilisateur confirmé: Rang ****
avatar

Messages : 977

MessageSujet: Concernant la programmation d'un programme de comparaison picturale   Lun 1 Fév 2016 - 23:09

Salut à toi CBNA. Voilà un moment que je ne suis pas venu te voir et j'en suis tout à fait désolé, étant une personne absolument ignoble et opportuniste je ne reviens vers toi que lorsque j'ai besoin de ton aide.

Spoiler:
 

Ma question concerne la programmation d'un .exe capable de comparer une série d'images entres elles (accessoirement, des visages générés aléatoirement à partir de photographies d'yeux, de nez, de bouches etc... mais pour la programmation de ce premier programme qui s'en chargera, je n'ai à priori pas besoin d'aide)  et d'en sélectionner une d'après un modèle de référence; par exemple, on a trois cents Jean Kévin totalement différents et le Jean Kévin qui ressemble le plus à Jean Maurice est sélectionné.

J'aimerais si possible, avoir quelques pistes, conseils voire même directives (pour les plus chaud patates d'entre vous) concernant la programmation d'un tel programme. Je précise que je ne vous demande pas la solution toute faite puisque de 1) ce serait tout à fait indécent de ma part de demander ça et de 2) ça enlèverait tout le challenge et les heures de galères que je me ferais une joie d'amorcer dans le but de satisfaire mon égo d'être ignoble et autocentré (voir plus haut pour ceux qui n'ont pas suivi). Mais je serais tout à fait reconnaissant si l'un d'entre vous pouvait m'orienter un peu, éventuellement m'éclairer sur une méthode efficace ou une manière de s'y prendre qui serait pertinente.

Merci à vous et bonne journée/soirée/nuit placée sous le signe de l'insomnie !

Edit : Ah oui et je code tjrs sur Game Maker... C'est mal et je le sais, mais bon voilà.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3325
Localisation : Dans une canonnière wookie.
Projet Actuel :
Things


MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 7:24


_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 9:17

Mass> La DCT lui servira pas du tout dans son cas, même si c'est toujours cool a connaitre.

robinlife a écrit:
Spoiler:
 
Ahah good boy Very Happy

Sinon en gros dans l'idée tu veux faire un générateur d'avatar un peu comme celui que tu portes la? Ou juste retrouver a qui appartiens un oeil ou ce genre de chose?
Car y a pas mal de solutions, plus ou moins simples/faisables sous GM, mais ça dépend de ton cahier des charges de base.

Par ex, est ce que les photographies sont bien calibrées de la même façon sur le même pattern? (de face avec la lumière plutôt de face et la tête qui prend toute l'image).

Car rien que la détection d'une tête c'est loin d'être aisé a faire, faut passer généralement par un framework d'image processing comme OpenCV.
Du coup rien qu'a partir de cette étape sous GM c'est mort :p
Pareil pour la détection d'un simple 'motif'.

Fin bref commence par donner un peu plus de précisions, et si t'as des exemples schématiques.

Mais dis toi qu'on est capable que depuis peu d'apprendre aux ordinateurs a voir grâce a une toute nouvelle forme d'algorithmes (réseaux de neurones convolutionnels) alors faut pas trop espérer pouvoir en faire en tant que simple mortel huhu Razz

Ceci dit ce domaine est très intéressant donc c'est toujours bon de se lancer dans ce genre de projet.


_________________
                 
Revenir en haut Aller en bas
robinlife
Utilisateur confirmé: Rang ****
avatar

Messages : 977

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 12:47

Merci de vos réponses !

Donc l'idée ouais c'est d'avoir une sorte de générateur d'avatar comme celui que j'ai utilisé pour ce beau staline/hitler swaggé de ouf (sauf que ça se fera à partir de photographies de différentes parties du visages, toutes retravaillées sous photoshop pour qu'elles soient compatibles entre elles, au niveau de la lumière, de l'endroit dans le rendu de l'image etc...)

Partant du postulat qu'on sait donc précisément où se trouve chaque morceau de visage et que pour tous les rendus ce sera exactement la même chose, il suffirait d'appliquer ces normes au modèle de référence auquel je veux comparer tout les rendus, découper l'image du modèle de référence (nez/bouche/yeux/etc...) et comparer chaque éléments individuellement (en utilisant la DTC ou une technique s'en rapprochant). Puis d'utiliser un système de notation pour évaluer lequel des visages ressemble le plus à celui du modèle.

Donc en gros; nez de 01 ressemble ou pas à nez modèle -> 1 pt ou -1 pt
bouche de 01 ressemble ou pas -> 1 pt ou -1 pt
etc...

On garde toutes les notes dans un tableau et à la fin on prend la plus élevée.

Donc oui pour le coup la DTC me semble utile puisque les images que je veux comparer seront extrêmement normalisées.
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1329
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 12:47

Sinon, je te sert la solution toute chaude :
http://www.irisa.fr/prive/Sebastien.Campion/mml/video_faces_recognition.html

C'est du python + OpenCV. Mais tu peux facilement convertir le code en C++.

De loin, je dirais que ça fonctionne comme ceci :
Les étapes sont :
- Détection de la position et la dimension des visages d'après le papier "Rapid Object Detection using a Boosted Cascade of Simple Features"
- On découpe le morceau d'image on renormalise les dimensions.
- On effectue une petite transformation qui va nous donner une distance entre deux visage. (Mieux que la différence au carré)
---- En gros, on effectue des produits scalaire avec un ensemble prédéterminé d'images de référence : http://www.wikiwand.com/en/Eigenface. Cet ensemble est déjà optimisés pour représenter des features sur les visages.
---- Ces coefficients te donnent une sorte de position en n dimensions.
- On recherche le visage le plus proche au sens de cette distance.
---- Je vois un classifier de type SVM mais je vois pas à quoi il peut servir...

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 12:53

Oubli la DCT robinlife, ça sert juste a extraire les fréquences d'une image. Donc pour savoir si 2 images sont identiques c'est parfait, par contre 2 images juste proches ça va donner de mauvais résultats, car comparer seulement les fréquences suffit pas (puis un simple crop/décalage des images changera du tout au tout la DCT).

Pour comparer deux images/formes en général on va partir sur du SIFT + des algos de transformation complexes.
Dans tous les cas sous GM tu vas avoir des soucis pour utiliser ces algos (et ne pense même pas a essayer de les implémenter, SIFT est vraiment complexe), va falloir te mettre a opencv :p

_________________
                 
Revenir en haut Aller en bas
robinlife
Utilisateur confirmé: Rang ****
avatar

Messages : 977

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 18:29

Ça marche, merci de vos réponses les mecs ! Je vais regarder tout ça, toute manière faudra bien que je quitte GM un jour ou l'autre.
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 18:59

robinlife a écrit:
Ça marche, merci de vos réponses les mecs ! Je vais regarder tout ça, toute manière faudra bien que je quitte GM un jour ou l'autre.
Rejoinds-nous sur l'IRC du CBNA. Ca parle pas mal de C++, de robocraft, de la nullité du java et de liens étrange de BB.
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7377
Localisation : Essonne

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 21:44

Mass a écrit:
Y'a ceci d'intéressant pour débuter : http://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html

Mouef, c'est pas super performant =S
(et je dit pas ça parce que c'est sous GM, juste que l'algo de base est pas taupe...)

www.tdms.fr/GM/Looks_Like_It.zip (attention, c'est lourd).

Peut on aller plus loin sous GM ?
Vous le saurez au prochain épisode !
Ou pas en fait...

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2521eme utilisateur : Jeijmeh_ !
Revenir en haut Aller en bas
http://www.membres.lycos.fr/thedarkminousite/
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mar 2 Fév 2016 - 22:54

Heu une comparaison par DCT est carrément plus efficace que ce que tu utilises la hein.
Faut juste créer une fonction de distance et pas juste utiliser un hash qui attends une image presque identique comme dans le lien de mass.

C'est ce que j'utilise pour un système de gestion d'image, pour virer les doublons malgrès les compressions jpeg, rescales et autres resamplings qui peuvent dégrader l'image.
Sur les ~200 000 images que j'ai testé ça marche parfaitement.

Avec une comparaison naïve par pixel en plus d'être lent c'est vraiment inefficace...
Alors qu'en comparant les fréquences de la plus basses a la plus haute on peut arriver a d'excellents résultats, et même créer une comparaison booléenne de 2 images, ce qui permet de les trier et faire des recherches de complexité logarithmique.

Le seul soucis c'est que ça attends des images proches de base.
Alors qu'un algorithme basé sur SIFT peut gérer des transformations complexe, en plus de la dégradation d'image, etc ...

_________________
                 
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3325
Localisation : Dans une canonnière wookie.
Projet Actuel :
Things


MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mer 3 Fév 2016 - 7:21

Bah oui mon lien est basique mais bon sous GM... triste2

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Mer 3 Fév 2016 - 8:50

Pas si basique que ça, ça dépend juste de ce que tu veux faire.
Un algorithme très efficace (phash) utilise aussi une DCT mais a quelques passes supplémentaires. Bah pour hash des images c'est plutôt excellent. Par contre faire une comparaison naïve des pixels ça a des résultats dégueulasses. A la limite y a la comparaison des histogramme de couleur/grayscale/texture qui peut donner des résultats intéressants, mais aucun d'eux n'arrive au niveau d'une comparaison par fréquences.

Faut juste bien comprendre que hash une image et faire de la comparaison d'image c'est pas vraiment la même chose, un hash ça sert a retrouver une image identique, une comparaison ça sert a trouver les similitudes.
Et pour robinlife un hash servira a rien.

_________________
                 
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7377
Localisation : Essonne

MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   Ven 5 Fév 2016 - 0:40

onilink_ a écrit:
Heu une comparaison par DCT est carrément plus efficace que ce que tu utilises la hein.
Faut juste créer une fonction de distance et pas juste utiliser un hash qui attends une image presque identique comme dans le lien de mass.
Hum... je tenterais la DCT alors.
Et oui, j'avoue, j'ai fait ma feignasse pour le calcul de distances X)

onilink_ a écrit:
C'est ce que j'utilise pour un système de gestion d'image, pour virer les doublons malgrès les compressions jpeg, rescales et autres resamplings qui peuvent dégrader l'image.
Sur les ~200 000 images que j'ai testé ça marche parfaitement.
Cela me semble parfaitement logique. Hormis pour les éventuelles rotations...

onilink_ a écrit:
Avec une comparaison naïve par pixel en plus d'être lent c'est vraiment inefficace...
Alors qu'en comparant les fréquences de la plus basses a la plus haute on peut arriver a d'excellents résultats, et même créer une comparaison booléenne de 2 images, ce qui permet de les trier et faire des recherches de complexité logarithmique.
Ké ? pixel par pixels, c'est horrible, je suis plus que d'accord, mais c'est pas ça qui est utilisé là.
En réduissant l'image, ça fait un passe bas du pauvre. Autrement dit, ça fait déjà office de filtrage fréquentiel (la preuve, c'est que même le programme GM fonctionne pour les redimensionnements).

onilink_ a écrit:
Le seul soucis c'est que ça attends des images proches de base.
Alors qu'un algorithme basé sur SIFT peut gérer des transformations complexe, en plus de la dégradation d'image, etc ...
Je regarderais le "SIFT", ça à l'air intéressant Wink

Mass a écrit:
Bah oui mon lien est basique mais bon sous GM... triste2
Boarf, GM s'en sortira pas mal pour le calcul de hash. Y a très peut de calculs au final, si tu bosses sur une image réduite.
Bon, après, si tu calcule ton hash sur toute l'image sans réduire avant, oui, ça va prendre du temps...
La recherche ensuite, ça sera un autre plat de nouilles...

onilink_ a écrit:
Pas si basique que ça, ça dépend juste de ce que tu veux faire.
Un algorithme très efficace (phash) utilise aussi une DCT mais a quelques passes supplémentaires. Bah pour hash des images c'est plutôt excellent. Par contre faire une comparaison naïve des pixels ça a des résultats dégueulasses. A la limite y a la comparaison des histogramme de couleur/grayscale/texture qui peut donner des résultats intéressants, mais aucun d'eux n'arrive au niveau d'une comparaison par fréquences.
Hum, à mixer avec les DCT alors Wink

onilink_ a écrit:
Faut juste bien comprendre que hash une image et faire de la comparaison d'image c'est pas vraiment la même chose, un hash ça sert a retrouver une image identique, une comparaison ça sert a trouver les similitudes.
Et pour robinlife un hash servira a rien.
Bha si, enfin, le hash il va servir pour mesurer la distance avec son modèle qu'il à généré. Non ?

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2521eme utilisateur : Jeijmeh_ !
Revenir en haut Aller en bas
http://www.membres.lycos.fr/thedarkminousite/
Contenu sponsorisé




MessageSujet: Re: Concernant la programmation d'un programme de comparaison picturale   

Revenir en haut Aller en bas
 
Concernant la programmation d'un programme de comparaison picturale
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» pendule et programmation
» [programme] RoboForm c'est quoi ?
» tee shirt du modem et programme de bayrou presidentielle
» Besoin de connaître le programme des métiers du livre
» help! comparaison corps de couleurs/palette pleat cool

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: