Mam folder obrazów samochodu pod każdym kątem. Chcę użyć worka słów, aby wyszkolić system w rozpoznawaniu samochodu. Po zakończeniu treningu chcę, aby obraz tego samochodu był możliwy do rozpoznania.Jak trenować i przewidywać przy użyciu worka słów?
Próbowałem nauczyć się funkcji BOW w opencv, aby wykonać tę pracę i osiągnąłem poziom, na którym nie wiem, co teraz zrobić, a pewne wskazówki będą mile widziane.
Tu jest mój kod, który używany do 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 jest oparte na BOW documentation.
Myślę, że na tym etapie mój system jest przeszkolony. a następnym krokiem jest przewidywanie.
to jest miejsce, w którym nie wiem, co robić. Jeśli używam SVM
lub NormalBayesClassifier
, oba używają terminów train i predict.
Jak mogę to przewidzieć i wytrenować? wszelkie wskazówki będą mile widziane. Jak połączyć szkolenie klasyfikatora z moją funkcją `bowDE`?
Jak zadecydowałeś o wartości TermCriteria i dictionarySize, tc, reting, flags? – definera