Formation personnalisée SVM à utiliser avec HOGDescriptor dans OpenCV

J'essaie de former mon propre détecteur pour une utilisation avec OpenCV::HOGDescriptor mais je vais avoir du mal à faire l'existant HOGDescriptor travailler avec mes nouvellement formés SVM.

J'ai calculé PORC caractéristiques positives et négatives de la formation des images, étiquetés et formé les SVM en utilisant CvSVM. Les paramètres que j'ai utilisé sont:

    CvSVMParams params;
    params.svm_type =CvSVM::EPS_SVR;
    params.kernel_type = CvSVM::LINEAR;
    params.C = 0.01;
    params.p = 0.5;

Puis-je calculer la Forme Primitive de l'vecteurs de soutien de sorte que je ne reçois un vecteur lieu de nombreux et de définir le calcul de vecteurs de support à l'aide de HOGDescriptor.setSVMDetector(vecteur);

C'est la Forme Primitive

Lorsque j'utilise CvSVM.predict() je suis capable de classer correctement les objets avec la SVM, mais HOGDescriptor.détecter() ou detectMultiScale() renvoie toujours beaucoup de positif correspond et ne pas donner des prévisions précises.

CvSVM.predict() utilise le support d'origine des vecteurs de la classification, alors il pourrait y avoir quelque chose de mal avec la façon dont je suis calcul de la forme primitive.

Est-il quelqu'un qui a formé leur propre détecteur qui peut me pointer dans la bonne direction?

il semble qu'un bug de libsvm était héréditaire dans laquelle l'ordre des étiquettes se faire massacrer. La fonction predict est conscient de l'ordre et de la recherche qui est l'étiquette qui, et donc fonctionne très bien. J'ai résolu le problème en définissant ma +ve étiquette à un nombre inférieur ma -ve un je.e pos = 1, neg = 2. sinon, vous pouvez inverser votre modèle en multipliant par -1. (c'est pourquoi accepté de répondre a l'étrange signe négatif). J'ai choisi de ne pas le faire de cette façon, dans des cas ils ont corrigé le bug (ce n'est pas vraiment un bug, si vous utilisez prédire, mais ils pourraient changer)

OriginalL'auteur Jompa234 | 2013-03-11