32 #define TEST_NAME "retrieval/visual_index"
40 template <
typename kDescType,
int kDescDim,
int kEmbeddingDim>
47 VisualIndexType visual_index;
48 BOOST_CHECK_EQUAL(visual_index.NumVisualWords(), 0);
53 VisualIndexType::DescType::Random(50, kDescDim);
54 VisualIndexType visual_index;
55 BOOST_CHECK_EQUAL(visual_index.NumVisualWords(), 0);
56 typename VisualIndexType::BuildOptions build_options;
57 build_options.num_visual_words = 5;
58 build_options.branching = 5;
60 BOOST_CHECK_EQUAL(visual_index.NumVisualWords(), 5);
65 VisualIndexType::DescType::Random(1000, kDescDim);
66 VisualIndexType visual_index;
67 BOOST_CHECK_EQUAL(visual_index.NumVisualWords(), 0);
68 typename VisualIndexType::BuildOptions build_options;
69 build_options.num_visual_words = 100;
70 build_options.branching = 10;
72 BOOST_CHECK_EQUAL(visual_index.NumVisualWords(), 100);
74 typename VisualIndexType::IndexOptions index_options;
75 typename VisualIndexType::GeomType keypoints1(50);
76 typename VisualIndexType::DescType descriptors1 =
77 VisualIndexType::DescType::Random(50, kDescDim);
78 visual_index.Add(index_options, 1, keypoints1, descriptors1);
79 typename VisualIndexType::GeomType keypoints2(50);
80 typename VisualIndexType::DescType descriptors2 =
81 VisualIndexType::DescType::Random(50, kDescDim);
82 visual_index.Add(index_options, 2, keypoints2, descriptors2);
83 visual_index.Prepare();
85 typename VisualIndexType::QueryOptions query_options;
86 std::vector<ImageScore> image_scores;
87 visual_index.Query(query_options, descriptors1, &image_scores);
88 BOOST_CHECK_EQUAL(image_scores.size(), 2);
89 BOOST_CHECK_EQUAL(image_scores[0].image_id, 1);
90 BOOST_CHECK_EQUAL(image_scores[1].image_id, 2);
91 BOOST_CHECK_GT(image_scores[0].score, image_scores[1].score);
93 query_options.max_num_images = 1;
94 visual_index.Query(query_options, descriptors1, &image_scores);
95 BOOST_CHECK_EQUAL(image_scores.size(), 1);
96 BOOST_CHECK_EQUAL(image_scores[0].image_id, 1);
98 query_options.max_num_images = 3;
99 visual_index.Query(query_options, descriptors1, &image_scores);
100 BOOST_CHECK_EQUAL(image_scores.size(), 2);
101 BOOST_CHECK_EQUAL(image_scores[0].image_id, 1);
102 BOOST_CHECK_EQUAL(image_scores[1].image_id, 2);
103 BOOST_CHECK_GT(image_scores[0].score, image_scores[1].score);
108 TestVocabTreeType<uint8_t, 128, 64>();
109 TestVocabTreeType<uint8_t, 64, 64>();
110 TestVocabTreeType<uint8_t, 32, 16>();
111 TestVocabTreeType<int, 32, 16>();
112 TestVocabTreeType<float, 32, 16>();
113 TestVocabTreeType<double, 32, 16>();
void SetPRNGSeed(unsigned seed)
BOOST_AUTO_TEST_CASE(TestVocabTree)