Jak trenować i przewidywać za pomocą worka słów?

Mam folder obrazów samochodu pod każdym kątem. Chcę użyć podejścia „worek słów”, aby wyszkolić system w rozpoznawaniu samochodu. Po zakończeniu szkolenia chcę, aby podany obraz tego samochodu był w stanie go rozpoznać.

Próbowałem nauczyć się funkcji BOW w opencv, aby to działało i znalazłem się na poziomie, na którym nie wiem, co teraz robić, a niektóre wskazówki zostaną docenione.

Oto mój kod, którego użyłem do zrobienia worka słów:

Ptr<FeatureDetector> features = FeatureDetector::create("SIFT");
    Ptr<DescriptorExtractor> descriptors = DescriptorExtractor::create("SIFT");
    Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("FlannBased");

    //defining terms for bowkmeans trainer
    TermCriteria tc(MAX_ITER + EPS, 10, 0.001);
    int dictionarySize = 1000;
    int retries = 1;
    int flags = KMEANS_PP_CENTERS;
    BOWKMeansTrainer bowTrainer(dictionarySize, tc, retries, flags);

    BOWImgDescriptorExtractor bowDE(descriptors, matcher);

    //training data now
    Mat features;
    Mat img = imread("c:\\1.jpg", 0);
    Mat img2 = imread("c:\\2.jpg", 0);
    vector<KeyPoint> keypoints, keypoints2;
    features->detect(img, keypoints);
    features->detect(img2,keypoints2);
    descriptor->compute(img, keypoints, features);
    Mat features2;
    descripto->compute(img2, keypoints2, features2);
    bowTrainer.add(features);
    bowTrainer.add(features2);

    Mat dictionary = bowTrainer.cluster();
    bowDE.setVocabulary(dictionary);

To wszystko opiera się naDokumentacja BOW.

Myślę, że na tym etapie mój system jest szkolony. a następnym krokiem jest przewidywanie.

tu nie wiem, co robić. Jeśli używamSVM lubNormalBayesClassifier obaj używają terminów pociąg i przewiduj.

Jak mam przewidzieć i trenować po tym? wszelkie wskazówki byłyby bardzo mile widziane. Jak połączyć szkolenie klasyfikatora z funkcją `bowDE``?

questionAnswers(1)

yourAnswerToTheQuestion