IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Images Discussion :

Support Vector Machine Classification


Sujet :

Images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Par défaut Support Vector Machine Classification
    Bonjour,
    J'ai un petit probleme de classification, je dois classer des images, pour cela j'ai 2000 images pour le training et 250 pour le testing et pour chaque image j'ai un vecteur caracteristique de 1536 valeurs et il y a 27 classes.
    Je pense qu'il est preferable d'utiliser les svm plutot que les reseaux de neurones mais j'ai vu les fonctions svmtrain et svmclassify et je ne vois pas trop comment les utiliser, ces fonctions peuvent-elles me servir? comment pourrais-je faire?
    Merci pour toute eventuelle reponse

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé SVM avec MatLab (et je ne le possède pas sur cette version) mais j'ai travaillé avec LibSVM (bibliothèque C++ libre), donc je peux essayer de t'aider . Est-ce que tu as lu des docs sur SVM et comment cela fonctionne ?

    Voilà ce que je peux te dire, d'après moi et la doc sur tes fonctions Matlab :
    • svmtrain
      Comme son nom l'indique, c'est la phase d'apprentissage. A partir de tes données de training, cette fonction va construire le modèle qui permettra de classer tes futures données inconnues.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      SVMStruct = svmtrain(Training, Group)
      En entrée :
      * 'Training' est la matrice de données d'entraînement, où chaque ligne correspond à un échantillon et chaque colonne à un attribut.
      * 'Group' est un vecteur colonne, un tableau de caractères ou un tableau de string pour classer tes données d'entraînement en deux groupes : chaque élément indique la classe de l'échantillon correspondant.
      * Ensuite, tu peux mettre les options, càd le choix du noyau (linéaire, polynomial, gaussien,...), les paramètres correspondants, etc.
      En sortie :
      'SVMStruct' est une structure contenant toutes les infos pour pouvoir classer tes futures données inconnues (ce que j'appelle le modèle) : tes vecteurs de support et leurs indices, le nom des classes, des coefficients pour la fonction de décision, le type de noyau et ses paramètres, etc.
    • svmclassify
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Group = svmclassify(SVMStruct, Sample)
      Cette fonction va utiliser la structure créée précédemment pour classer tes échantillons inconnus, contenus dans 'sample' (évidemment, avec le même nombre de colonnes/attributs que 'training').
      'Group' contient la classe de chaque ligne de ton tableau 'sample'.

      Apparemment, tu peux aussi faire un affichage graphique (ça, j'aurais bien aimé l'avoir avec LibSVM !) pour visualiser ton hyperplan séparateur, voir la performance de la classification... Regarde les exemples fournis avec la doc (en ligne, c'est ici)


    J'espère avoir pu t'aider
    ++

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonsoir,

    et si on commençait par analyser ce que tu nous présentes :
    - 2000 images => 2000 individus dans ton problème de classement.
    - 1536 caractéristiques => presque une caractéristique par image!!! ne risques tu pas un problème d'apprentissage par coeur?
    Comment arrives tu à avoir autant de caractéristiques?
    Quelles sont elles?
    - Pourquoi préfères tu les SVM? Les RdN sont considérés comme la méthode de classement la plus puissante actuellement, mais il faut savoir comment l'utiliser. Sinon la régression logistique est actuellement la méthode la plus utilisée => Donc on revient à la base :
    Que contiennent tes images?
    Qu'elles sont tes caractéristiques?
    Dans quelles classes souhaites tu les classer? Combien de classes?

    Bref, si tu veux juste utiliser les SVM... Ok.
    Mais si tu souhaites faire réellement du classement, il faudrait voir à détailler le problème
    => Dis nous ce que tu souhaites exactement.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Membre éclairé

    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Par défaut
    Salut, merci pour tes infos Patchanka ja vais regarder tout ca.
    En fait je dois faire de la reconnaissance d'images de bois (27 especes => 27 classes). Pour avoir autant de caracteristiques, je calcule 24 (dans une fenetre 5x5 il y a 24 pixels entourant le pixel central) BGLAM (Basic Gray Level Aura Matrix) qui dependent du nombre de niveaux de gris de mon image (8 dans mon cas) et qui decrivent la texture de l'image, j'ai donc 24 matrices 8x8 que je ramene en un vecteur de 1536 valeurs pour chaque image.
    J'ai essaye les rdn avec le logiciel weka mais sans succes, j'ai peut etre trop de caracteristiques et je sais que les svm donnent de tres bons resultats, j'aimerais le programmer moi meme mais j'ai du mal avec une ou deux equations.
    Voila j'espere avoir ete un peu plus clair.

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    Il est impossible d'utiliser les RdN avec autant de caractéristiques.

    mmm... j'ai un doute sur les caractéristiques. Pourquoi n'as tu pas simplement essayé des méthodes comme les matrices de cooccurrences ou les run length. Tu auras juste une trentaine de caractéristiques qui te donneront déjà une bonne description.
    Est ce que la couleur est importante dans ton problème?

    Pour ce qui est des SVM, je ne connais pas
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Par défaut
    bonjour,

    mais pourquoi ne pas utiliser un filtre comme le filtre de gabor qui permet de représenter ton objet dans un vecteur de 256 éléments. ça va te réduire le nombre de caractéristiques et encore le temps!!

    bon courage!!!

  7. #7
    Membre éclairé

    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Par défaut
    En fait, tout ca a deja ete etudie (filtres de gabor, matrice de cooccurence, ondelettes), la reconnaissance est proche de 100% mais pas tout a fait, je dois etudier le LBP (Local Binary Pattern) qui decrit la texture d'une image et j'essaie de combiner ca avec des BGLAM comme je l'ai dit precedemment.
    Pour ce qui est des parametres, ce n'est pas un probleme je peux en avoir que 96 ou 512 mais je pense que plus j'en ai mieux c'est. Bref, je recherche surtout comment utiliser des SVM en multiclasse mais je ne sais pas si je peux le faire avec Matlab

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Les fonctions svmtrain et svmclassify de Matlab fonctionnent pour un problème binaire (à deux classes). Pour étendre la méthode à un problème multi-classe, tu peux utiliser la méthode 1 contre 1 ou la méthode 1 contre tous :
    • un contre un
      Tu construis un classifieur SVM pour chaque paire de classe (donc N*(N-1)/2 classifieurs pour un problème à N classes). La règle de décision en général est le vote majoritaire : chaque SVM analyse la donnée inconnue puis vote pour une classe ; la donnée inconnue est finalement associée à la classe ayant reçu le plus grand nombre de votes.
    • un contre tous
      Tu construis autant de classifieurs que de classes. Chaque SVM est alors entraîné à séparer les données d’une classe qui seront étiquetées +1, de celles de toutes les autres classes qui seront étiquetées –1. Chaque SVM étant associé à une classe, sa sortie peut être considérée comme une mesure d’appartenance à la classe. Pour un problème à N classes, il faut donc construire N classifieurs et effectuer jusqu’à N comparaisons pour la décision. La règle de décision est de considérer la plus grande valeur de sortie parmi l’ensemble des SVM.

    (petits extraits de la doc que je me suis construite à partir de recherches biblio )

    Par contre, je ne sais pas comment tu peux utiliser les fonctions svmtrain et svmclassify. Je pense que tu peux construire plusieurs modèles en appelant plusieurs fois svmtrain (suivant la méthode multi-classe que tu auras choisie), mais après, à toi de construire ta fonction de classification, en utilisant ou non svmclassify... A cogiter !

    Bon courage

Discussions similaires

  1. Support vector machine
    Par ahlam2008 dans le forum Statistiques, Data Mining et Data Science
    Réponses: 7
    Dernier message: 20/10/2014, 14h15
  2. Classification (S.V.M) Support vector machines
    Par Pipoussa dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/06/2014, 14h00
  3. Questions Sur SVM(Support Vector Machines)
    Par vizardo16 dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 11/04/2011, 17h12
  4. support vector machine sous matlab
    Par m2aziz dans le forum MATLAB
    Réponses: 1
    Dernier message: 29/03/2010, 10h31
  5. Bibliothèque Support Vector Machine (SVM)
    Par medchok dans le forum MATLAB
    Réponses: 0
    Dernier message: 08/04/2009, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo