OTB官方评估代码python版本
可參考:OTB官方評(píng)估代碼python版本--評(píng)估自己跟蹤器,對(duì)比其他跟蹤器
博主寫的很好,按照步驟可以運(yùn)行
?
以下有幾點(diǎn)注意的地方
1、我是用ubuntu系統(tǒng),創(chuàng)建虛擬環(huán)境安裝的python=2.7.13
2、數(shù)據(jù)集是直接下載的博主整理好的
??? ? 如果要自己整理的話,按照博主教程整理即可,特別注意這一個(gè)步驟:
????? 在matlab版本的benchmark_v1.0.zip(matlab版本的OTB官方評(píng)估代碼)里面有個(gè)initOmit文件夾,里面對(duì)應(yīng)27個(gè)序列中不能作為初始化幀的記錄,只要把他們都復(fù)制到對(duì)應(yīng)序列下,并且全部重命名成init_omit.txt
3、自己的跟蹤器結(jié)果
????? 我是用的MDnet結(jié)果(目前開源的一些跟蹤器結(jié)果網(wǎng)上可以找到),100個(gè)txt格式文件,沒有times文件夾,所以save_to_json.py第27行可以注釋掉或刪掉,不然會(huì)報(bào)錯(cuò)
????? 然后save_to_json.py中修改這兩個(gè)地方
tracker = 'MDNet' # replace your own path txt_Results = 'your own path/MDNet'注意自己跟蹤器結(jié)果txt文件命名要與data/tb_100.txt文件中跟蹤器命名一致,不然會(huì)報(bào)錯(cuò)
(例如我的文件Faceocc1.txt實(shí)際應(yīng)該改為:FaceOcc1.txt)
????? 還有就是博主的SiamFC文件夾中幾個(gè)特殊序列的命名為Human4、Jogging.1、Jogging.2、Skating2.1、Skating2.2,而我的就是Human4-2、Jogging-1、Jogging-2、Skating2-1、Skating2-2,所以我對(duì)util.py修改了下,修改結(jié)果為:
def _convert_name(oldname):newname = Noneif oldname == 'Human4-2':newname = 'Human4-2'elif oldname == 'Jogging-1':newname = 'Jogging-1'elif oldname == 'Jogging-2':newname = 'Jogging-2'elif oldname == 'Skating2-1':newname = 'Skating2-1'elif oldname == 'Skating2-2':newname = 'Skating2-2'就是遇見這幾個(gè)序列也不改變文件名。
????? 這兩個(gè)py文件,util.py只是被save_to_json.py調(diào)用的。
4、我的實(shí)驗(yàn)結(jié)果就是JSON格式,要不要?jiǎng)?chuàng)建save_to_json.py和util.py這兩個(gè)文件
????? 雖然自己的結(jié)果也是JSON格式,但是自己的JSON格式不一定符合這個(gè)代碼的格式,如果可以保證,則不需要這兩個(gè)py文件,可以得到結(jié)果。
????? 自己可以跑完實(shí)驗(yàn)結(jié)果試一下,看可以嗎。
5、通過(guò)運(yùn)行run_trackers.py產(chǎn)生的是各個(gè)屬性的json文件,最后畫圖只是調(diào)用了ALL.json文件畫的。
????? 在draw_graph.py中修改兩個(gè)地方可以畫出MB等各屬性的曲線(個(gè)人猜測(cè),嘗試了下應(yīng)該是對(duì)的)
??? ? def get_overlap_graph 和 def get_precision_graph中的兩句話:
??????? tracker = result[0].tracker
??????? attr = result[0]
?因?yàn)樽詈螳@得了12個(gè)json文件, result[0] 應(yīng)該就是調(diào)用的第一個(gè)ALL.json,那么result[1]應(yīng)該就是第二個(gè) BC.json,自己可以試試。那兩句代碼的具體位置例如下面紅色部分:
def get_overlap_graph(scoreList, fignum, evalType, testname):
??? fig = plt.figure(num=fignum, figsize=(9,6), dpi=70)
??? rankList = sorted(scoreList,
??????? key=lambda o: sum(o[0].successRateList), reverse=True)
??? for i in range(len(rankList)):
??????? result = rankList[i]
??????? tracker = result[0].tracker? ?
??????? attr = result[0]
我按照本方法跑了下MDNet實(shí)驗(yàn)結(jié)果(后面又將官方的.mat結(jié)果轉(zhuǎn)成.txt結(jié)果重新跑了下,發(fā)現(xiàn)和我收集的MDNet結(jié)果一樣,故收集的MDNet實(shí)驗(yàn)結(jié)果是對(duì)的),
發(fā)現(xiàn)和論文中提供的有一點(diǎn)點(diǎn)小的差距,不過(guò)非常接近,論文中給的結(jié)果是matlab中.mat格式,不知道是不是這個(gè)原因。
除了MDNet方法,別的官方給出的跟蹤器結(jié)果和博主跑出的結(jié)果一致,例如:CSK、MUSTer等。
結(jié)果如下:
?
總結(jié)
以上是生活随笔為你收集整理的OTB官方评估代码python版本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 恋与抽卡模拟器网页_恋与制作人抽卡模拟器
- 下一篇: python paramiko使用_py