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 :

HMM Matlab toolbox


Sujet :

Images

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut HMM Matlab toolbox
    Bonjours
    je veut le trainnig d'un code freeman d'une image mais je me trouve pas ce que je mis a la matrice emis. trans c'est le code freeman.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    trans = [0.95,0.05;
          0.10,0.90];
    emis = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;
       1/10, 1/10, 1/10, 1/10, 1/10, 1/2];
     
    seq1 = hmmgenerate(100,trans,emis);
    seq2 = hmmgenerate(200,trans,emis);
    seqs = {seq1,seq2};
    [estTR,estE] = hmmtrain(seqs,trans,emis);
    Merci d'avance pour votre aide.

  2. #2
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Je m'y connais bien en HMM mais je ne comprends pas ta question...
    Dans l'exemple que tu nous fournis, tu commences par spécifier un HMM, tu construis des sequences à partir de ce HMM. Puis tu entraînes un nouveau HMM à partir de ces séquences en utilisant le premier HMM comme initialisation.
    Matlab te renvoie alors les matrices estTR et estE qui sont respectivement les matrices de transition et d'émission de ton nouveau HMM et qui devraient pas mal ressembler aux matrices "trans" et "emis" dans le cas présent.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Salut
    Je doit faire la reconnaissance des caractères avec le code Freeman et le HMM. Concernant le code Freeman j'ai réussi a l'extraire. Mon problème ce situe au niveaux de HMM. j'ai du mal appréhender le problème d'apprentissage et de reconnaissance en utilisant les HMM.
    Merci

  4. #4
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Salut

    Tu parles du code "Freeman", peux-tu nous expliquer ce que c'est ? Une méthode spéciale d'estimation des HMMs ? Le code que tu fournis dans le tout premier post est un code composé de 2 fonctions classiques pour entraîner des HMMs.
    Je suis désolée de ne pas comprendre ta question, pourrais-tu fournir ce que tu as commencé à programmer ou bien spécifier les données que tu as et le point précis qui te pose problème. Ta question est beaucoup trop vague pour l'instant...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Le code Freeman il code l'image il te donne uns série de chiffre de 0 a 7 sa dépend du déplacement j'ai utiliser l'algorithme chainecode de http://www.mathworks.com/matlabcentr...man-chain-code on entre le contour de l'image avec la fonction prédéfinit de matlab je veut faire l'apprentissage sur HMM .

  6. #6
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Donc si je comprends bien tu fais un pré-traitement de tes images et tu obtiens une série de chiffres de 0 à 7. Je suppose que c'est par rapport à ce critère que tu souhaites classifier? modéliser? tes images. A aucun moment tu ne spécifies le but de ta démarche... Que souhaites-tu faire? Obtenir un modèle à partir duquel tu peux générer d'autres séries de chiffres? Classer différents types d'images dans différentes catégories?

    J'aimerais juste porter à ton attention que sur ce forum chacun travaille sur des sujets plus ou moins larges mais qu'on ne connaît pas tout, et en particulier le projet précis sur lequel tu travailles (on ne peut pas deviner). Donc il est important quand tu demandes de l'aide de bien poser ton problème. Dans ce cas-ci:
    1) Les données que tu as, sous quelle forme se présentent-elles?
    2) Ton but
    3) Ce que tu as déjà essayé de faire. Dans ton premier post tu présentais un bout de code. Est-ce que tu as essayé de le poursuivre en prenant tes données réelles?

    Je suis prête à t'aider, les HMMs c'est mon domaine

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    voila mon source normalement je crée un modèle pour chaque chiffre nais je ne sais pas comment faire la reconnaissance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [filename, user_canceled] = uigetfile ({'*.png'},'Load Wav File','Multiselect', 'on');
    seqs = [];
    for u = 1 : size(filename, 2)
        fn = [user_canceled filename{u}];
        org= imread(fn);
        nb = im2bw(org); 
        nb = bwmorph(nb, 'thicken', Inf); 
        nb = ~nb; 
        [etiquettes, n] = bwlabel(nb); 
        regions = regionprops(etiquettes, 'BoundingBox');
        codes = cell(n, 1);
        for i = 1 : n
            img = imcrop(etiquettes, regions(i).BoundingBox); 
            img = imresize(img, [100 100]); 
            [r, c] = find(img == 0, 1, 'first'); 
            contour = contour_trace(img, r, c); 
            codes{i, :} = chaincode(contour); 
            RTS = reduce(codes{1,1}, 1000);    
        end
        seqs = [seqs; RTS];
    end
     
    trans = [0.85, 0.15;
             0.30, 0.70];
     
      emis=[0.1, 0.1, 0.1, 0.2, 0.1, 0.2, 0.1, 0.1;
            0.2, 0.1, 0.1, 0.1, 0.1, 0.2, 0.1, 0.1];
    [estTR,estE] = hmmtrain(seqs,trans,emis,'Symbols',[0,1,2,3,4,5,6,7]);

  8. #8
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Comme tu ne précises toujours pas ce que tu souhaites exactement faire (si c'est flou pour toi, c'est d'ailleurs peut-être la première question à éclaircir de ton côté avant de te lancer tête baissée dans le code), je te réponds comme je peux en espérant que ça corresponde à tes attentes...

    Petite précision : Ici tu entraînes un seul et unique HMM. (pas "un pour chaque chiffre")

    Pour déduire des informations pour la reconnaissance, selon ce que tu souhaites faire :
    - soit tu utilises la fonction Matlab hmmdecode qui, à partir d'une séquence de données, te renvoit la séquence d'états (= de states) la plus probable.
    - soit tu utilises la toolbox développée par Kevin Murphy ici, qui possède un guide pour les débutants dont une fonction qui permet de calculer la vraisemblance (ou likelihood) d'une séquence par rapport à un HMM entraîné.

    Ce qui attire aussi mon attention dans ton code, c'est que tu définis à la main les valeurs initiales des matrices de transition et d'émission en donnant en "privilégiant" des auto-transitions (= le fait de ne pas changer d'état). Il y a une raison à ça?

Discussions similaires

  1. Matlab toolbox nn
    Par Felfla dans le forum Images
    Réponses: 0
    Dernier message: 16/06/2015, 11h44
  2. Réponses: 0
    Dernier message: 09/12/2014, 16h48
  3. Réponses: 2
    Dernier message: 04/05/2007, 15h10
  4. Où trouver la "Maple toolbox for Matlab"
    Par samoudwfr dans le forum Maple
    Réponses: 1
    Dernier message: 29/03/2007, 15h31
  5. MATLAB C++ library toolbox
    Par Cap123 dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/12/2006, 11h51

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