目标跟踪OTB数据集使用过程中遇到的坑
記錄一下使用OTB過程遇到的一些問題。
剛剛拿到這個toolkit,一開始以為可以直接跑了,發現其實最好的是把你的tracker弄成一個exe放到它的trackers文件夾底下,然后跑main_running 就可以了,但是一般現在都用Python寫了,如何打包,如何搞到Matlab中確實太麻煩。所以我就開始了我的探索,說實話可能對很多人來講我遇到的問題很弱智,但是我就是不會啊!!哭/(ㄒoㄒ)/~~。
把自己的結果存下來
我能想到的解決方法就是把自己的結果存成OTB里面要用的.mat形式,Python的scipy庫就能做這個事,把文件輸出成.mat的。這一步是不是看著很簡單,只要:
import scipy as scio scio.savemat(result_path_mat, Mat) #Mat就是要輸出的結果這個時候問題就來了,不知道matlab里面的數據結構是啥樣的,所以我就把里面已有的OPE文件中的.mat輸出了一下:
[array([[(array([[ 70, 51, 107, 87],[ 70, 51, 107, 87],[ 69, 52, 108, 87],[ 69, 50, 107, 87],[ 67, 50, 109, 88],[ 66, 49, 109, 88],[ 65, 49, 110, 89],[ 63, 49, 111, 90],[ 62, 49, 112, 91],[ 61, 49, 112, 91],[ 61, 49, 112, 91],[ 61, 48, 113, 91],[ 61, 48, 113, 91],[ 61, 48, 113, 91],[ 61, 48, 113, 91],[ 61, 48, 113, 91],[ 60, 48, 113, 91],[ 60, 48, 113, 91],[ 60, 48, 113, 91],[ 60, 48, 113, 91]], dtype=uint8), array(['rect'], dtype='<U4'), array([[7.62746]]), array([[20]], dtype=uint8), array([[1]], dtype=uint8), array([[1]], dtype=uint8))]],dtype=[('res', 'O'), ('type', 'O'), ('fps', 'O'), ('len', 'O'), ('annoBegin', 'O'), ('startFrame', 'O')])]是不是很強,其實就是一個五維的numpy數組???因為操作實在太騷了,觀察到matlab其實需要的就是一個封裝后的cell,一個cell中又有六個屬性:
 
 所以最終的解決方法,是先把你的數據搞成一個字典,,然后再把這個字典賦給一個numpy數組就可以了:
一定不能漏掉Mat外面那個中括號,不然就會功虧一簣,那個中括號就能把Mat直接封裝成一個1*1的array,然后在Matlab里面就會被讀成cell了
 (害的我搞了一下午的numpy結構體,感覺自己真的太菜了)
 這樣基本就OK了,只要把你的結果放好,然后配置啥的都沒問題的話,用perfPlot.m函數就可以畫出來啦~我還沒測完,所以估計后續還會更新
畫出來的OPE兩個曲線與原始論文不一樣
在perfPlot里面需要自己修改參數:
% metricTypeSet = {'error', 'overlap'}; %error->threshold , overlap->AUC metricTypeSet = {'error'}; evalTypeSet = { 'OPE'};% rankingType = 'AUC';%AUC, threshold rankingType = 'threshold';其實就是error要對應threshold,然后overlap要對應AUC。
 (我跑出來的DAT的結果還沒有MDNe好,怕是還是哪里配錯了?)
附
SiamFC中轉mat的一小段代碼:
for video in all_videos:p.video = videoprint("Processing %s ... " % p.video)bbox_result, fps = run_tracker(p)# saving tracking results as matif p.bbox_output:Mat = {'res': list(bbox_result), 'type': 'rect', 'fps': fps, 'len': len(bbox_result), 'annoBegin': 1, 'startFrame': 1}M = np.array([Mat])Mat2 = {'__header__': 'b', '__version__': 1.0, '__globals__': [], 'results': M}scio.savemat(p.bbox_output_path_mat+p.video + '_SiamFC.mat', Mat2)txt轉mat文件代碼見github https://github.com/gagajian/txt_to_mat-OTB-
總結
以上是生活随笔為你收集整理的目标跟踪OTB数据集使用过程中遇到的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 说说 Wine + QQ 轻聊版 7.7
- 下一篇: (附源码)计算机毕业设计SSM健身房管理
