目录

说明

环境

GTOT测评工具箱使用

结构

准备工作

测评过程

生成ERRresults/xxx.mat

生成PR、SR曲线图

合成跟踪可视化视频

RGBT234测评工具箱使用

说明

结构

准备工作

测评过程

生成ERRresults_TIP/xxx.mat

生成PR、SR曲线图

合成跟踪可视化视频


说明

  • 本篇博客是RGBT目标跟踪专题中的其中一篇:

Attribute-based Progressive Fusion Network for RGBT Tracking论文研读笔记

APFNet训练+测试复现过程记录

GTOT和RGBT234测评工具箱使用

环境

  • 下载测评工具箱,链接:GitHub - mmic-lcl/Datasets-and-benchmark-code
  • 将之前测试模型得到的结果复制过来,如果没有复现模型的训练和测试过程,也可以直接使用上面的链接中给出的Tracking Results进行测评
  • 安装Matlab,用于绘制PR、SR图,以及生成跟踪结果图片
  • Python3:额外的,用于生成测试展示视频

GTOT测评工具箱使用

结构

在GTOT 工具箱中,共有六个文件夹,其中, BBresults 文件夹中存放的是测试生成的目标跟踪框的 txt 文件,ERRresults 文件夹中的是计算生成的错误率文件,sequencesAttr 是工具箱中自带的关于 GTOT 数据集特性的一些文件,trackingResultsDisplay是存放带有跟踪框的结果图像的文件夹,GTOT_APFNet_tracking_result 文件夹存放的是使用RGBT234 数据集作为训练集,GTOT 作为测试集得到的测试跟踪结果(文件中每一行都含有八个数值,前四个和后四个分别代表在 RGB 图像和热红外图上的跟踪框四元数),my_video文件夹是自己建立的,用来存放合成视频的文件夹。

准备工作

在测评工具箱根目录下新建脚本cp_BBres_txts.py,用于将测试APF模型时生成的bbox框文件拷贝并重命名至 BBresults 与 ERRresults/APF 两个文件夹内

import osinput_path = './GTOT_APFNet_tracking_result/'
#output_path = './BBresults/'
output_path = './ERRresults/APF/'for origin_txt in os.listdir(input_path):os.system('cp ' + input_path + origin_txt + ' ' + output_path + 'APF_' + origin_txt)

修改output_path两次,执行脚本两次

python cp_BBres_txts.py

测评过程

生成ERRresults/xxx.mat

  • 使用main_GenerateMat.m和calcPlotErr.m两个脚本,其中main_GenerateMat.m 脚本调用了 calcPlotErr.m 脚本,即main_GenerateMat.m 脚本是主程序。该步骤的输入输出分别为:
input ERRresults/APF/*.txt
output ERRresults/APF/*.mat
  • 脚本中有一些参数需要修改:

(1)main_GenerateMat.m脚本中:basePath为GTOT数据集的位置,即"xxx/data/GTOT/";trackers为几个追踪算法的名字,这里设置为trackers={'APF'};

(2)calcPlotErr.m脚本中:basePath为GTOT数据集的位置;resultPath为跟踪框txt文件所在位置以及要输出的检测框mat文件所在位置,即resultPath='ERRresults/APF/'; 64行左右处也要改为'APF_',即:

results.res=dlmread([resultPath 'APF_' seq_name  '.txt']); %seq_length*8
  • 运行main_GenerateMat.m 脚本之后,将在ERRresults/APF下得到相应的mat文件

生成PR、SR曲线图

  • 使用main_drawResult.m脚本。脚本中有一些参数需要修改:algs为ERRresults文件夹下存有的算法的名字;basePath为GTOT数据集的位置。
%algs={'APF'}; % ours
algs={'APF', 'ADNet', 'MANet', 'DAPNet', 'DAFNet', 'MDNet', 'SGT', 'RT-MDNet+RGBT', 'MDNet+RGBT', 'MACNet'}; % overall
pixelThreshold=5;basePath='xxx/dataset/GTOT/';
  • 该步骤的输入输出为:
input ERRresults/*.mat
output PR、SR曲线图

如上图所示,在PR图中,横轴表示定位损失阈值,单位是像素,纵轴是精确率 PR,论文中说到过,对于 GTOT 数据集,阈值设置为 5 个像素,所以横轴等于 5 像素时,得到APFNet 在GTOT数据集上的精确率为 90.5%。各个 RGBT 目标跟踪算法相互对比,可知 APFNet算法在众多算法当中,性能较为优越。

在SR图中,横轴表示 overlap 阈值,即追踪框和 GT 框之间交并比的大小,纵轴表示成功率 SR。当阈值取 0.7 时,即当 overlap 大于 0.7 时表示成功追踪,APFNet 算法的 SR 为 73.7%。各个 RGBT 目标跟踪算法相互对比,可知 APFNet 算法在众多算法当中,性能较为优越。

合成跟踪可视化视频

  • 使用main_drawTrackersResult.m脚本生成追踪结果图片。tracker为追踪算法的名字,basePath为GTOT数据集的位置;sequence为视频序列的名字;sequencePath为GTOT数据集的位置;同时需要注意的是展示出来的图片未全部填充整个窗口,所以需要修改大约80和104行的两处imshow代码使图片完全填充窗口,消除白边。
tracker={'APF'} %使用几种跟踪算法就会同时有几种追踪框
basePath='xxx/dataset/GTOT/';dirs = dir(basePath);
sequences = {dirs.name};
sequences(strcmp('.', sequences) | strcmp('..', sequences) | strcmp('anno', sequences) | ~[dirs.isdir]) = [];%sequence='Minibus1';
sequence='Football';%for ni=8
% sequence=sequences{ni}trackerResultsPath='BBresults/';
sequencePath='xxx/dataset/GTOT/';
saveBasePath='trackingResultsDisplay/';%imshow(uint8(im));
imshow(uint8(im),'border','tight');
  • 更换sequence为GTOT数据集中不同的序列名称,可在trackingResultsDisplay/文件夹下得到不同视频序列在两个模态下的APFNet的跟踪框的可视化图片。

  • 在项目根目录下新建my_video文件夹和gen_video.py脚本,gen_video.py用于将trackingResultsDisplay/文件夹下已有的所有序列合成视频,gen_video.py内容如下:
import cv2
import os
import linecacheDEBUG = 1def gen_video(sequence_path, res_video_path, gt_path):if not os.path.exists(res_video_path):os.system('mkdir ' + res_video_path)f = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') # 保存视频格式为avifor sequence_name in os.listdir(sequence_path):#save_sequence_path = os.path.join(res_video_path, sequence_name)save_sequence_path = res_video_path + '/' + sequence_nameif DEBUG:print(save_sequence_path)if not os.path.exists(save_sequence_path):os.makedirs(save_sequence_path)test_frame_v = cv2.imread(os.path.join(sequence_path, sequence_name + '/v/1.jpg') )video_writter_v = cv2.VideoWriter(os.path.join(save_sequence_path, sequence_name + '_v.avi'), f, 25, (test_frame_v.shape[1], test_frame_v.shape[0]))test_frame_i = cv2.imread(os.path.join(sequence_path, sequence_name + '/i/1.jpg') )video_writter_i = cv2.VideoWriter(os.path.join(save_sequence_path, sequence_name + '_i.avi'), f, 25, (test_frame_i.shape[1], test_frame_i.shape[0]))for channel in ['v', 'i']:video_path = os.path.join(sequence_path, sequence_name, channel)label_path = os.path.join(gt_path, sequence_name)#for frame_name in os.listdir(video_path): # 这样读取是乱序,视频跳帧#    frame = cv2.imread(os.path.join(video_path, frame_name))for index in range(len(os.listdir(video_path))):frame = cv2.imread(os.path.join( video_path, str(index+1) + '.jpg') )if channel == 'v':now_label = linecache.getline(os.path.join(label_path, 'groundTruth_v.txt'), index+1).strip() # 去掉换行符else:now_label = linecache.getline(os.path.join(label_path, 'groundTruth_i.txt'), index+1).strip() # 去掉换行符ori_data_seq_vis_path = os.path.join(label_path, 'v')ori_data_seq_vis_img_name = os.listdir(ori_data_seq_vis_path)[0]ori_data_seq_vis_img = cv2.imread(os.path.join(ori_data_seq_vis_path, ori_data_seq_vis_img_name))ratio_w = test_frame_v.shape[1] / ori_data_seq_vis_img.shape[1]ratio_h = test_frame_v.shape[0] / ori_data_seq_vis_img.shape[0]#print(now_label)[x, y, x1, y1] = now_label.split(' ')[x, y, x1, y1] = [int(x), int(y), int(x1), int(y1)]cv2.rectangle(frame, ( int(x * ratio_w), int(y * ratio_h) ), ( int(x1 * ratio_w), int(y1 * ratio_h)), (255,255,255), 2)if DEBUG:cv2.imshow(sequence_name + '_' + channel, frame)cv2.waitKey(20)if channel == 'v':video_writter_v.write(frame)else:video_writter_i.write(frame)cv2.destroyAllWindows()if __name__ == '__main__':sequence_path = './trackingResultsDisplay'res_video_path = './my_video'gt_path = 'xxx/dataset/GTOT'gen_video(sequence_path, res_video_path, gt_path)
  • 脚本中注意的是上一步保存的图片大小与原图大小不一致,所以脚本中有缩放操作,运行gen_video.py脚本之后,将在my_video下得到对应序列名称的所有视频,其中白色框为gt框,红色框为APFNet算法的跟踪框。

RGBT234测评工具箱使用

说明

  • 大体流程与GTOT一致,细节有所不同
  • 参数设置不同
  • 脚本编写略微差异

结构

在RGBT234测评工具箱中,共有七个文件夹,其中, BBresults_TIP 文件夹中存放的是测试生成的目标跟踪框的 txt 文件,ERRresults_TIP 文件夹中的是计算生成的错误率文件,figsResults_TIP文件夹中的是不同属性下的PR、SR曲线评测图,sequencesAttr 是工具箱中自带的关于 RGBT234 数据集特性的一些文件,trackingResultsDisplay是存放带有跟踪框的结果图像的文件夹,RGBT234_APFNet_tracking_result 文件夹存放的是使用GTOT数据集作为训练集, RGBT234作为测试集得到的测试跟踪结果(文件中每一行都含有八个数值,前四个和后四个分别代表在 RGB 图像和热红外图上的跟踪框四元数),my_video文件夹是自己建立的,用来存放合成视频的文件夹。

准备工作

在测评工具箱根目录下新建脚本cp_BBres_txts.py,用于将测试APF模型时生成的bbox框文件拷贝并重命名至 BBresults_TIP 与 ERRresults_TIP/APF 两个文件夹内,需要注意的是RGBT234数据集解压后可能自带有一个rgbt234.txt文件,需要将其删除。

import osinput_path = './RGBT234_APFNet_tracking_result/'
output_path = './BBresults_TIP/'
#output_path = './ERRresults_TIP/APF/'for origin_txt in os.listdir(input_path):os.system('cp ' + input_path + origin_txt + ' ' + output_path + 'APF_' + origin_txt)

修改output_path两次,执行脚本两次

python cp_BBres_txts.py

测评过程

生成ERRresults_TIP/xxx.mat

  • 使用main_GenerateMat_TPR.m和calcPlotErr_TPR.m两个脚本,其中main_GenerateMat_TPR.m 脚本调用了calcPlotErr_TPR.m脚本,即main_GenerateMat_TPR.m脚本是主程序。该步骤的输入输出分别为:
input ERRresults_TIP/APF/*.txt
output ERRresults_TIP/APF/*.mat
  • 脚本中有一些参数需要修改:

(1)main_GenerateMat_TPR.m脚本中:basePath为GTOT数据集的位置,即"xxx/data/RGBT234/";trackers为几个追踪算法的名字,这里设置为trackers={'APF'};

(2)calcPlotErr_TPR.m脚本中:basePath为RGBT234数据集的位置;resultPath为跟踪框txt文件所在位置以及要输出的检测框mat文件所在位置,即resultPath='ERRresults_TIP/APF/'; 需要提前建好APF文件夹;73行左右处也要改为'APF_',即:

results.res=dlmread([resultPath 'APF_' seq_name '.txt']); %seq_length*8
  • 运行main_GenerateMat_TPR.m脚本之后,将在ERRresults_TIP/APF下得到相应的mat文件

生成PR、SR曲线图

  • 使用main_drawResult_TPR.m脚本。脚本中有一些参数需要修改:algs为ERRresults_TIP文件夹下存有的算法的名字;basePath为RGBT234数据集的位置。
%algs={'APF'}; % ours
algs={'APF', 'CFnet+RGBT', 'MDNet+RGBT', 'DAFNet', 'KCF+RGBT', 'DAPNet', 'DAT', 'ECO', 'SGT', 'SiamDW+RGBT'}; % overall
pixelThreshold=20;basePath='xxx/dataset/RGBT234/';
  • 该步骤的输入输出为:
input ERRresults_TIP/*.mat
output PR、SR曲线图

如上图所示,在PR图中,横轴表示定位损失阈值,单位是像素,纵轴是精确率 PR,论文中说到过,对于RGBT234数据集,阈值设置为20个像素,所以横轴等于20像素时,得到APFNet 在RGBT234数据集上的精确率为 82.7%。各个 RGBT 目标跟踪算法相互对比,可知 APFNet算法在众多算法当中,性能较为优越。

在SR图中,横轴表示 overlap 阈值,即追踪框和 GT 框之间交并比的大小,纵轴表示成功率 SR。当阈值取 0.7 时,即当 overlap 大于 0.7 时表示成功追踪,APFNet 算法的 SR 为 57.9%。各个 RGBT 目标跟踪算法相互对比,可知 APFNet 算法在众多算法当中,性能较为优越。

合成跟踪可视化视频

  • 使用main_drawTrackersResult_APF.m脚本生成追踪结果图片。该脚本复制于main_drawTrackersResult_PaGLe.m。其中,tracker为追踪算法的名字,basePath为RGBT234数据集的位置;sequencePath为RGBT234数据集的位置;trackerResultsPath为追踪结果框txt文件所在路径;saveBasePath为连续帧图片保存路径;大约28行的ni为选择某一个序列的序号,也可以直接对sequence赋值决定某一个视频序列。同时需要注意的是展示出来的图片未全部填充整个窗口,所以需要修改大约80和104行的两处imshow代码使图片完全填充窗口,消除白边。
basePath='xxx/dataset/RGB_T234/';
trackerResultsPath='BBresults_TIP/';
sequencePath='xxx/dataset/RGB_T234/';
saveBasePath='trackingResultsDisplay/';
if(isdir(saveBasePath)==0),mkdir(saveBasePath);
endtracker={'APF'};
%tracker={'PaGLe','CSR','DSST','HCF','JSR','KCF','L1-PF','MDNet','SGT','SOWP','Staple'};%,'STRUCK','CN','CT','MIL','SCM'};%all videos, call self with each video name.
%only keep valid directory names
dirs = dir(basePath);
sequences = {dirs.name};
sequences(strcmp('.', sequences) | strcmp('..', sequences) | strcmp('anno', sequences) | ~[dirs.isdir]) = [];edgeColor={'r','g','b','y','k','m','c','g','b','y','r'};
lineStyle={'-','-','-','-','--','--','--','--','--','--','--'};% for ni=100:numel(sequences)
for ni=120:120 % 选择第120个文件夹,即manwithluggage
% sequence='walkingtogether1';
sequence=sequences{ni};%imshow(uint8(im));
imshow(uint8(im),'border','tight');
  • 更换sequence为RGBT234数据集中不同的序列名称,可在trackingResultsDisplay/文件夹下得到不同视频序列在两个模态下的APFNet的跟踪框的可视化图片。
  • 在项目根目录下新建my_video文件夹和gen_video.py脚本,gen_video.py用于将trackingResultsDisplay/文件夹下已有的所有序列合成视频。
  • 脚本中注意的是上一步保存的图片大小与原图大小不一致,所以脚本中有缩放操作,运行gen_video.py脚本之后,将在my_video下得到对应序列名称的所有视频,其中白色框为gt框,红色框为APFNet算法的跟踪框。

GTOT和RGBT234测评工具箱使用相关推荐

  1. 【金猿产品展】北森一体化人才管理云平台:让中国企业拥有世界领先的人才管理能力...

    北森产品·一体化人才管理云平台 本产品由北森投递数据猿参与评选,更多关于[金猿榜/奖·2019征集评选]的相关信息,请点击这里了解详情丨征案例.征文章.征产品=评企业.评人物.评产品. 大数据产业创新 ...

  2. 大盘点 | 2020年两篇目标跟踪算法最佳综述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨cynthia yawain 编辑丨极市平台 导读 我们对2020年全部计算机视觉综述论文进行了 ...

  3. 实现工具自由!开源的桌面工具箱

    来源: HelloGitHub Rubick,因为开源所有更自由 在一切开始之前,首先要致敬 uTools!如果没有它就没有 Rubick. 大家好,我是"拉比克"(Rubick) ...

  4. 红米Note 8 Pro测评:论如何用1399元买到超大底四摄

    小米手机在业内素来有性价比高的风评,红米更是性价比中的性价比优选.在小米决定要迈向高端旗舰的时刻,红米接过了性价比的接力棒,并且将走得更远. Note系列是红米从小米独立出来的首款产品,最能代表Red ...

  5. 2020h黑苹果 y7000p_联想拯救者 篇一:联想拯救者Y7000P 2020H测评之联想电脑管家(上)...

    联想拯救者 篇一:联想拯救者Y7000P 2020H测评之联想电脑管家(上) 2020-08-06 10:34:35 5点赞 3收藏 2评论 创作立场声明:本文为联想拯救者Y7000P 2020H测评 ...

  6. 家用工具套装_一套适合家用的简洁便携工具箱(WORKPOR)

    一套适合家用的简洁便携工具箱(WORKPOR) 2017-04-06 20:32:20 5点赞 12收藏 4评论 万克宝WORKPRO 50件套高级家用工具组套[行情 报价 价格 评测]-土猫网土猫网 ...

  7. 恰果果囖!测评CSDN浏览器助手--chrome插件

    先放个大致的图给大家康康吧!粉丝们先尝鲜: CSDN浏览器助手使用后的界面,我加了点高斯模糊,毛玻璃特效的感觉更美!朦胧美嘛 文章目录 前言 一.使用体验 1.测评师自我介绍 2.插件使用场景 3.对 ...

  8. 三级等保测评攻略来了,快快评论收藏哦

    今天给大家做了三级等保测评攻略,快快收藏起来哦!现在的人越来越注重安全,不管是人身安全.财产安全.还是网络安全,都是不可忽略的存在.企业更是需要注重信息安全,这也就出现了等级安全保护这项行业.虽然很多 ...

  9. 【最实用的chrome插件】CSDN 浏览器插件:CSDN 开发者助手(测评手册2)

    目录 一.前言 二.插件下载 1.官方插件下载地址 2.[安装包下载方式 ①]crx 文件下载:本地下载 (推荐) 3.[安装包下载方式 ②]zip 文件下载:Beta 版下载(不推荐) 4.[安装包 ...

最新文章

  1. 学习用Pandas处理分类数据!
  2. 海思AI芯片(Hi3519A/3559A)方案学习(十四)JPEG图片转换成bgr文件
  3. 微服务架构可视化平台实践
  4. 简述用 MAT 分析 Android 应用OOM
  5. 北风设计模式课程---深入理解[代理模式]原理与技术
  6. 文巾解题 784. 字母大小写全排列
  7. mime设置 压缩html,MIME设置功能
  8. mysql 不停机_mysql之 mysql 5.6不停机主从搭建(一主一从基于日志点复制)
  9. 教你些技巧,用 Python 自动化办公做一些有趣的事情!太方便了
  10. Python SQLAlchemy --3
  11. winform 读取用户控件的变量_winform中用户控件之间的传值
  12. Win10配置Tensorflow_Object_Detection_API
  13. linux g 链接,图解linux系统的软连接和硬链接
  14. 085 对象的绑定方法
  15. android pickerview 多行,Android-PickerView系列之介绍与使用篇(一)
  16. 我的自定义Spring框架 | Spring核心功能结构
  17. 如何理解庄子所说的“吾生也有涯,而知也无涯。以有涯随无涯,殆己”?
  18. vulnhub--Funbox: Scriptkiddie
  19. hyperf 热重启
  20. 简述linux下用户与组相关的配置文件,Linux用户和群组管理的主要配置文件

热门文章

  1. 缓存算法:LFU和LRU的JAVA实现
  2. CSS | align-content 与 justify-content 的区别
  3. UVM TLM的实现方式
  4. 移动性管理:小区选择与重选
  5. 基于java的消防系统
  6. 安卓系统培训!系统盘点Android开发者必须掌握的知识点,BAT大厂面试总结
  7. c#、java、钉钉、微信小程序、APP采集modbus TCP协义的PLC数据
  8. html登陆后无法跳出页面,详解如何在登录过期后跳出Ifram框架
  9. nginx配置区分移动端和PC端,访问不同域名
  10. python学习笔记:python类和对象,文件操作,网络编程