OTB2013平台跑OTB2015的results遇到的问题
OTB2013平臺的代碼以及2013/2015的數據結果results可以在Visual Tracker Benchmark下載。
說明:我目前所做的工作是用OTB2013平臺跑完2013的results后想再跑一下2015的results,看得到的圖跟跑2013的results一不一樣,當然,跑2015results的tracker和sequences跟2013是一樣的(也就是OTB2013平臺上面默認的)
一、OTB2013和OTB2015results數據格式的區別(即results目錄下的mat文件)
? ? ? results中的字段有所區別,但是影響你用perfPlot.m畫圖的主要是“圖片序列長度字段” 和 ‘type’兩個字段
? ? ?1、 2013中表示seqs長度的字段名是‘len’,2015中是‘seq_len’。所以為了兼容2015數據格式,代碼需要做如下修改:
? ? ? ?
注意:劃圈的是修改的地方,我這里修改的是/rstEval目錄下的calcSeqErrRobust.m文件! 很需要注意的一個問題是calcSeqErrRobust.m這個文件在/rstEval和/util目錄下都有一份,基本一樣,暫時沒搞清楚為啥這樣搞。 默認執行的是/util目錄下的,因為在perfPlot.m畫圖主程序的開始部分有addpath('./util'); 只加入了/util目錄,所以默認執行/util目錄下的calcSeqErrRobust.m。 我在perfPlot.m也加入了addpath('./rstEval');因為后面/rstEval目錄下的一些函數還會用到。所以為了保險起見,上面的修改可以在兩個目錄下的calcSeqErrRobust.m做一樣的修改,保持一致。 這個一致也適用下面所說的對calcSeqErrRobust.m文件的修改。
2、‘type’字段的區別
results中的type字段除了‘rect’類型2013和2015處理一樣之外,有其他的一些不一樣,直接跑會導致某些受影響的算法跑不出應有的結果。 經過一番研究,我找到的一些2013/2015的tracker以及type類型的區別說明如下:
| 2013‘type字段’數據格式 | 對應的 2015‘type字段’數據格式 | 涉及到的算法 |
| ivtAff | affine_ivt | IVT, ASLA, SCM |
| L1Aff | affine_L1 | L1APG, MTT |
| SIMILARITY | similarity | ORIA |
說明:上表中的每一行對應的都是同一種數據類型,只是起的名字不一樣,所以需要在代碼中增加兼容性。
吐槽:個人覺得這樣類型名字前后不一致對于數據和代碼的可維護性都不太友好,對于學習者來說更難受,不知道作者是怎么想的。
代碼需要修改的點:(提示:如前所說,最好將兩個目錄下的calcSeqErrRobust.m都做修改)
表中前兩行需要修改的是----
第三行也是一樣,接著上面的代碼,先修改case那里,如下:
但是,比較特殊的是,如果進入這個case的話,會執行warp_p = parameters_to_projective_matrix(results.type,results.res(i,:));也就是說這個函數把type傳進去了,所以進入這個函數還要接著修改。?
進入這個函數,發現它在/rstEval目錄下,所以記得前面說的這個目錄也要addpath加進路徑。
修改這一句就好了。
3、OTB2013seqs中的Jogging,對應的results中文件名是Jogging-1_xxx.mat和Jogging-2_xxx.mat;??但是2015中的文件名是Jogging.1_xxx.mat和Jogging.2_xxx.mat; 為了與configseqs中的seqs name以及anno中的文件名保持一致,建議將2015中的文件名中的 '.' 改成 '-'?
至此,修改了這些地方,基本就能在OTB2013平臺上面跑2015的results了。
二、其他無關緊要的點
OTB2013平臺代碼中configSeqs中的數據seqs的name是首字母小寫。
OTB2013results中的seqs的name也是首字母小寫。
OTB2013平臺中的configTracker中的tracker的name有些也跟results中的大小寫不一致。
OTB2015results中的seqs的name卻是首字母大寫。
可能是我matlab剛開始學,不知道讀取文件時,matlab對文件名的大小寫不敏感。
三、OTB2013跑的結果展示
這里只展示OPE總的結果,不分Attributes展示結果。
原代碼默認的是不生成AUC情況下的errorPlot圖,我這里修改了之后可以生成AUC情況下的error測試結果。
設定以下的變量參數:evalTypeSet設定為OPE,rankingType設定為AUC或者threshold(這里的threshold源代碼中少了一個字母l,不要直接復制粘貼),,,然后默認是只展示效果最好的10個tracker。
以上代碼位于perfPlot.m中
?AUC---------------------------------------------------------------------------------------------------------------------------------------------
?threshold---------------------------------------------------------------------------------------------------------------------------------------------
?
總結
以上是生活随笔為你收集整理的OTB2013平台跑OTB2015的results遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于jquery md5插件的使用问题
- 下一篇: 初中计算机flash考试题,【信息技术中