2016-07-04 2 views
1

Je fais un projet sur la reconnaissance d'expression faciale en utilisant dlib pour obtenir des visages et extraire des descripteurs et libsvm pour former les données obtenues. J'utilise C++ dans Visual Studio Community 2015. Jusqu'à présent, j'ai extrait les descripteurs LBP de grande dimension et j'aimerais maintenant donner un sens aux fonctionnalités obtenues et m'entraîner en utilisant libsvm. Je suis coincé ici parce que je ne peux pas donner un sens aux données à l'intérieur de mon vecteur 'features' et en outre pas en mesure de traduire cela dans le format accepté par libsvm pour l'entraînement.Formation avec LIBSVM après extraction de descripteurs lbp de grande dimension en utilisant dlib

Voici l'extrait de code ci-dessous. Avant cela, presque tout est explicite, je suppose.

std::vector<std::vector<double>> features;//storing features for all images 
 

 
    std::vector<double> feat;//for a single image 
 

 
    extract_highdim_face_lbp_descriptors(img, shape, feat); //dlib's function, storing extracted info in 'feat' 
 

 
    features.push_back(feat); 
 

 
    //Now all the info for all the images is stored in 'features' vector. I now need to train the data and make a suitable model using libsvm, precisely RBF kernel.

Répondre

1

Vous devez stocker des caractéristiques, comme les étiquettes pour faire processus d'apprentissage. LibSVM utilise un format de texte spatial. Voici le code qui peut écrire ce format convert from CSV

L'écriture peut être comme ça (non testé):

ofstream f("data_file"); 
for (auto img : images) //each image should be 
{ 
    std::vector<double> feat; 
    shape = predictor(img); 
    extract_highdim_face_lbp_descriptors(img, shape, feat); 
    double label = is_neutral ? -1.0 : +1.0; 
    f << label; 
    for (int i = 0; i < feat.size(); ++i) 
     if (feat[i] != 0.0) 
      f<< " " << i << ":" << feat[i]; 
    f << endl; 
} 

Et si vous utilisez Dlib - vous n'avez pas besoin libsvm - vous pouvez rendre le processus de formation avec Dlib, here is an example of SVM training with dlib