2016-07-04 7 views
1

Ich mache ein Projekt zur Mimikerkennung mit dlib, um Gesichter zu erhalten und Deskriptoren und libsvm zu extrahieren, um die erhaltenen Daten zu trainieren. Ich benutze C++ in Visual Studio Community 2015. Bisher habe ich die hochdimensionalen LBP-Deskriptoren extrahiert und möchte nun die erhaltenen Features verstehen und mit libsvm trainieren. Ich stecke hier fest, weil ich die Daten in meinem "features" -Vektor nicht verstehen kann und außerdem nicht in der Lage bin, das in libsvms akzeptiertes Format für das Training zu übersetzen.Training mit LIBSVM nach dem Extrahieren von hochdimensionalen lbp-Deskriptoren mit dlib

Unten ist das Code-Snippet. Vorher ist fast alles selbsterklärend, denke ich.

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.

Antwort

1

Sie müssen als Funktionen speichern, als Etiketten Lernprozess zu machen. LibSVM verwendet das raumbasierte Textformat. Hier Code ist, die dieses Format convert from CSV

Schreiben wie das sein kann (nicht getestet) schreiben:

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; 
} 

Und wenn Sie mit DLIB - Sie müssen nicht LibSVM benötigen - Sie Trainingsprozess mit DLIB machen können, here is an example of SVM training with dlib

Verwandte Themen