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