2016-07-04 4 views
1

dlib를 사용하여 표정을 추출하고 설명자를 추출하고 libsvm을 사용하여 표정 인식 프로젝트를 수행하여 얻은 데이터를 학습합니다. 저는 Visual Studio Community 2015에서 C++을 사용하고 있습니다. 지금까지 고차원 LBP 디스크립터를 추출했으며 지금은 libsvm을 사용하여 얻은 기능을 이해하고 교육하고 싶습니다. 내 '기능'벡터 내부의 데이터를 이해할 수 없기 때문에 더 이상 libsvm의 승인 된 형식으로 번역 할 수 없기 때문에 여기에 갇혀 있습니다.dlib를 사용하여 고차원 lbp 설명자를 추출한 후 LIBSVM을 교육합니다.

다음은 코드 스 니펫입니다. 거의 모든 것이 자명하다. 당신은 학습 과정을 만드는 레이블로, 기능으로 저장해야

답변

1

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.

. LibSVM은 공백 기반 텍스트 형식을 사용합니다. 여기 (안된) convert from CSV

쓰기가 이렇게 될 수있는이 형식 쓸 수있는 코드입니다 : - 당신이 LibSVM 필요하지 않습니다 -

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

그리고 당신은 Dlib를 사용하는 경우 당신이 Dlib와 교육 과정을 만들 수 있습니다, here is an example of SVM training with dlib

관련 문제