日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实践:使用FLANN.LSH进行检索

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实践:使用FLANN.LSH进行检索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.Survey:

FLANN 庫詳情見:http://en.wikipedia.org/wiki/Flann

http://medievalscotland.org/kmo/AnnalsIndex/Feminine/Flann.shtml

FLANN主頁:http://www.cs.ubc.ca/research/flann/:FLANN is written in C++ and contains bindings for the following languages: C, MATLAB and Python.

OpenCV的FLANN庫相對于原始FLANN庫功能較少;比如不能直接使用flann::Matrix<unsigned char>?? data ();

OpenCV和PCL都使用了FLANN 庫,自從用Python實現CP之后,發現重寫LSH的工作量還是相當大,于是使用PCL的FLANN庫,省去轉化的麻煩。

使用CP的檢索方式,看來只能用matlab實現了,因為沒有辦法實現128位的hash表。


2.使用過程中遇到的麻煩(Vs.KD-Tree):

VS2010不能完全支持CX0標準,不支持vector的下標越界檢驗,很受傷.....

2.1.使用函數載入特征數據集,存入vector:

//Load the data source

loadVotexFModels(pathName, extension, models);

原始特征數據可以直接存入矩陣,貌似只能使用UChar型:

// Convert data into FLANN formatflann::Matrix<unsigned char> data (new unsigned char[models.size () * models[0].second.size ()],models.size (),models[0].second.size ());for (size_t i = 0; i < data.rows; ++i)for (size_t j = 0; j < data.cols; ++j)data[i][j] = models[i].second[j];flann::save_to_file (data, training_data_h5_file_name, "training_data");// Save data to disk (list of models)delete[] data.ptr ();

2.1.使用存儲時,使用了C語言的類型FILE* (據說比使用C++的stream快256倍)

unsigned int table_number =6;unsigned int key_size =8; //unsigned int key_size =32;//32 is so big a value;在庫的內部沒有排錯語句,很失敗!unsigned int multi_probe_level=2; //Create hash indexflann::LshIndex<flann::ChiSquareDistance<unsigned char> > index (data, flann::LshIndexParams (table_number, key_size,multi_probe_level));index.buildIndex ();FILE* StreamIdx =fopen(kdtree_idx_file_name.c_str(),"wb");//Use the FILE* Type.index.saveIndex(StreamIdx);fclose(StreamIdx);

2.3 修改文件:

.flann/util/result_set.h?? line263:

size_t j ==0 時,會造成 --j 成為一個很大的數,造成下表越界,故添加語句:if (j>=dist_index_.size()) break; //wishchin 跳出循環。


2.4.對位操作符的修改:

使用unsigned int key_size???? =32;時

向右以為size_t(1)<<? key_size , 產生的值為1造成向量下標超出;或許可以改成power()函數....
long long(1)<<? key_size ;約為4GBits.


|= 或等于的使用,把函數符號拆開 x = x| y;


3.使用LSH檢索特征:


FILE* StreamIdx =fopen(kdtree_idx_file_name.c_str(),"rb");
index.loadIndex(StreamIdx);//唯一調用函數...


測試函數:

testCreateLshindex(argc,argv);void testCreateLshindex(int argc, _TCHAR* argv[]) {CLSH FeatureIndex;std::string pathName(argv[2]);std::string H5_file_Name(argv[3]);std::string idx_file_Name(argv[4]);std::string data_list_file_name(argv[5]);FeatureIndex.genLshVotexFFromFile(pathName,H5_file_Name,idx_file_Name,data_list_file_name);return; }testLshSearch(argc,argv);// 測試檢索結果!準確率挺高的...void testLshSearch(int argc, _TCHAR* argv[]) {CLSH FeatureIndex;std::string pathName(argv[2]);std::string H5_file_Name(argv[3]);std::string idx_file_Name(argv[4]);const std::string data_list_file_name(argv[5]);std::string test_file_name(argv[1]);Votex_model Feature;FeatureIndex.loadVotexFHist(test_file_name,Feature);unsigned int table_number =6;unsigned int key_size =8;unsigned int multi_probe_level=2;int k =6;flann::Matrix<unsigned char> data;std::vector<std::string> Filelist;FeatureIndex.loadLshSQL(H5_file_Name,idx_file_Name,data_list_file_name,data,Filelist);flann::LshIndex<flann::ChiSquareDistance<unsigned char> > index(data, flann::LshIndexParams (table_number, key_size,multi_probe_level));FeatureIndex.loadLshIndex(idx_file_Name,data,index,table_number ,key_size ,multi_probe_level);flann::Matrix<int> k_indices;flann::Matrix<float> k_distances;k_indices = flann::Matrix<int>(new int[k], 1, k);k_distances = flann::Matrix<float>(new float[k], 1, k);FeatureIndex.searchLshSQL(Feature,index,k,k_indices,k_distances);for (int idx =0;idx< k;++idx){cout<< Filelist[(k_indices[0][idx])]<<endl;}


?? ?return;
}


總結

以上是生活随笔為你收集整理的实践:使用FLANN.LSH进行检索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女午夜视频 | 91青青草 | 伊人影院在线观看视频 | 午夜免费观看视频 | 亚洲国产精品成人av | 国产精品扒开腿做爽爽爽视频 | 日本一区二区三区成人 | 三上悠亚影音先锋 | 欧美aaaaaaaaa | 国产a√精品区二区三区四区 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 亚洲毛片a | 国产一级精品视频 | 性色av蜜臀av色欲av | 葵司av电影 | 假日游船 | 91色蝌蚪| 人人妻人人澡人人爽欧美一区 | 在线免费观看小视频 | 国产美女自拍视频 | 天堂伊人 | 色综合天天综合 | 国产又粗又黄又爽又硬 | 亚洲欧美日韩偷拍 | 国产精品久久久久久婷婷天堂 | 日韩精品1区 | 啪啪视屏| 欧美日韩六区 | 穿情趣内衣被c到高潮视频 欧美性猛交xxxx黑人猛交 | 欧美精品久久久久久久 | 大屁股一区二区三区 | 综合天堂av久久久久久久 | 日韩免费av片 | 国产精品99久久久久久宅男 | 精品在线视频一区二区三区 | 国产黑丝视频 | 亚洲视频精品在线观看 | 亚色在线观看 | 福利午夜视频 | 天天干天天爽天天操 | 国产一区不卡在线观看 | a视频在线播放 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 五月婷婷激情综合网 | 免费欧美一级视频 | 99久久久无码国产精品衣服 | 国语对白对话在线观看 | 97超碰资源站| 秋霞精品一区二区三区 | 亚洲av无码久久精品色欲 | 开心激情五月婷婷 | 九九热视频在线播放 | 福利影院在线观看 | 国产91丝袜在线播放0 | 亚洲一区二区小说 | 99爱视频 | 曰批女人视频在线观看 | 免费伊人网| 日本亚洲最大的色成网站www | 波多野结衣av无码 | 你懂的国产在线 | 黄色一级视频免费 | 精国产人伦一区二区三区 | 国产国语性生话播放 | 秘密的基地 | 色91av | 国产制服91一区二区三区制服 | 国产露脸无套对白在线播放 | 日韩精品一区二区三区电影 | 穿情趣内衣被c到高潮视频 欧美性猛交xxxx黑人猛交 | 综合色久 | 欧美性视频一区二区 | 一区二区在线视频免费观看 | 中文字幕日韩一区二区 | av一区在线| 国产精品成人国产乱 | 日韩欧美三级在线 | 国产精品夫妻自拍 | 黄色成人在线网站 | 成人在线精品 | 久久久国产精华液999999 | 秋霞欧美在线观看 | 亚洲精品午夜 | 2019天天操| 亚洲一区二区三区四区在线观看 | 欧美精品videos | 特大黑人巨交吊性xxxxhd | 99久久婷婷国产综合精品青牛牛 | 久久亚洲AV成人无码国产人妖 | 国产精品制服丝袜 | 激情文学亚洲色图 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 国产免费一区二区三区三州老师 | 日日久| 亚欧美一区二区三区 | 夫妻性生活自拍 | 国产成人在线精品 | 亚洲AV无码乱码国产精品牛牛 | 国产欧美专区 |