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

Visual C++ Discussion :

Espace m�moire insuffisant


Sujet :

Visual C++

  1. #1
    Membre confirm� Avatar de miss_angel
    Inscrit en
    F�vrier 2008
    Messages
    210
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2008
    Messages : 210
    Par d�faut Espace m�moire insuffisant
    Bonjour � tous,
    j'ai probl�me d'espace m�moire lors de l'ex�cution de mon code. Il s'agit de parcourir une base d'image est de stocker les descripteurs de chaque image et entrer le tout � un classifieur SVM. Mes descripteurs sont bien mis dans un tableau (new), une fois termin� je tiens � lib�rer l'espace m�moire avec (delete), sauf qu'au bout de quelque it�ration �a bug avec une erreur "bad_alloc at memory location " qui veut dire que j'ai plus d'espace m�moire. Quelqu'un a une id�e pour quoi le delete ne lib�re pas l'espace ici??
    Voici mon code:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    for(int k=0; k<NUMBER_OF_PERSON; k++) 
     {     
       for(int i=0; i<NUMBER_OF_CLASSES; i++)
       { 		
            for(int j=0; j<NUMBER_OF_SAMPLE_PER_CLASS ; j++)
            {
    	   //cout<<"Learning Sample N°: " << nbSample <<endl; 
    	  string stra = "D:/CrossValidationRandom";
    	 ostringstream oi;
    	 ostringstream oj;
    	 ostringstream ok;
    	 ok << k;
    	 oi << i;
    	 oj << j;
    	 string NPerson = ok.str();
    	 string NClass = oi.str(); 
             string NSample = oj.str(); 
             string ImgPath = stra + "/" + NPerson + "/" + NClass + "/" + NSample + ".tiff";	 	  	   
    	 IplImage* Src = cvLoadImage(ImgPath.c_str());
    	 IplImage* FaceImg = cvCreateImage(cvSize(FACE_WIDTH, FACE_HEIGHT), IPL_DEPTH_8U, 1);
    	 FE.FaceDetection(Src, FaceImg);
    	 cvReleaseImage(& Src);
     
       //Features Extraction 					   
        int* LBPHist = new int[NbBins];//(int*)malloc(NbBins * sizeof(int));
       FE.LBPFeatureExtraction(FaceImg, NbSegment, NbImage, LBPHist); 
     
       //Stoquer les features de toute les images d'apprentissage
       for(int m=0; m<NbBins; m++)  {  LBPData[nbFeat++] = LBPHist[m]; }	 				  
       delete[] LBPHist;  //LBPHist = NULL; 
       Class[nbSample] = i;							  
       nbSample++;
     
       }			 
      }	     
     } 
     
    cvInitMatHeader (&data_mat, NUMBER_OF_TRAINING_SAMPLES, NbBins, CV_32FC1, LBPData);
    cvInitMatHeader (&Class_mat, NUMBER_OF_TRAINING_SAMPLES, 1, CV_32SC1, Class); 
    param.svm_type    = CvSVM::C_SVC;
    param.kernel_type = CvSVM::LINEAR; 
    param.term_crit   = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); 
     
    cout<<"Start Training SVM"<<endl;
    svm.train (&data_mat, &Class_mat, Mat(), Mat(), param);
    svm.save ("C:\Train.xml"); 
    cout<<"Fin Apprentissage SVM"<<endl;
    //Free Memory		
    delete[] LBPData;  
    delete[] Class; 
    cvDecRefData(& data_mat);  
    cvDecRefData(& Class_mat);
    Merci d'avance

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    On dirait qu'il manque un cvReleaseImage() sur FaceImg.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm� Avatar de miss_angel
    Inscrit en
    F�vrier 2008
    Messages
    210
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2008
    Messages : 210
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    On dirait qu'il manque un cvReleaseImage() sur FaceImg.
    Merci M�dinoc
    Je viens de l'ins�rer ici:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    	   
     int* LBPHist = new int[NbBins];//(int*)malloc(NbBins * sizeof(int));
     FE.LBPFeatureExtraction(FaceImg, NbSegment, NbImage, LBPHist); 
     cvReleaseImage(& FaceImg);
    Mais le probl�me persiste

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    LBPFeatureExtraction() ne retourne rien qu'il faille lib�rer?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirm� Avatar de miss_angel
    Inscrit en
    F�vrier 2008
    Messages
    210
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2008
    Messages : 210
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    LBPFeatureExtraction() ne retourne rien qu'il faille lib�rer?
    LBPFeatureExtraction() retourne le tableau de descripteurs LBPHist que je le lib�re apr�s avoir stocker ses �l�ments dans LBPData et qui � son tour lib�rer une fois fini de l'apprentissage avec SVM !

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je voulais dire... Je peux voir son prototype?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre confirm� Avatar de miss_angel
    Inscrit en
    F�vrier 2008
    Messages
    210
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2008
    Messages : 210
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    Je voulais dire... Je peux voir son prototype?
    Je suis vraiment d�sol�e, je peux pas partager le code parce que �a appartient � mon labo, sinon je peux vous expliquer en gros ligne le r�le de cette fontion:
    -calculer le gradient d'une image, GradientX et GradientY et les stocker dans un tableau TabImg (allocation m�moire avec new)
    -Couper ces images en des segments d'images que je vais les stocker dans un tableau de segments TabSegImg (allocation m�moire avec new + Lib�ration m�moire de TabImg)
    -Parcourir ces blocks et calculer les descripteurs LBP pour chacun et les stocker dans un tableau LBPHist (Allocation avec new + Lib�ration m�moire du tableau TabSegImg)
    Voil� c'est en gros ce qu'elle fait, je tiens chaque fois � lib�rer l'espace m�moire des tableaux et des images utilis�s, sauf qu'au bout de quelque it�ration �a bug avec une erreur d'insuffissance de m�moire
    On peut pas lier le probl�me � la taille de mes barettes RAM parce que sinon �a tient plus � la philosophie de d�veloppement, aussi parce que je tiens � lib�rer l'espace m�moire � chaque fois j'alloue une image (cvReleaseImage), un tableau (delete), une matrice (cvDecRefData), une s�quence (cvClearSeq), m�moire de storage (cvClearMemStorage) et m�me quand je g�re un tableau d'image je parcours ce tableau case � case pour lib�rer les images dedans ensuite lib�rer le tableau lui m�me...vraiment j'ai suivi tous les conseils fourni sur par mal de forum...je sais pas s'il y a d'autres astuces qui m'�chappent et que j'esp�re bien vous me les �lcairer !
    Merci d'avance^^

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Espace m�moire insuffisant
    Par n1k00 dans le forum Langage
    R�ponses: 12
    Dernier message: 25/08/2010, 16h08
  2. Espace m�moire insuffisant
    Par adrien954 dans le forum C++Builder
    R�ponses: 1
    Dernier message: 09/09/2008, 12h41
  3. Atteindre un espace m�moire avec perl
    Par scaleo dans le forum Langage
    R�ponses: 3
    Dernier message: 31/03/2006, 18h53
  4. [C][obtenir l'espace m�moire libre]
    Par ronan99999 dans le forum Windows
    R�ponses: 4
    Dernier message: 26/10/2004, 07h53
  5. Acc�der � un espace m�moire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    R�ponses: 4
    Dernier message: 02/08/2002, 12h37

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