图片模糊与去模糊之后对于Siamese网络追踪效果的影响
1.数据集准备
(1)原始OTB100数据集,即序列A。
(2)27个序列用deblurGAN去模糊之后的OTB100数据集(因为原始的OTB100中有27个序列是模糊的),即序列B。
(注:以下27个序列是原始模糊的 Biker, BlurBody, BlurCar1, BlurCar2, BlurCar3, BlurCar4, BlurFace, BlurOwl, Board,Box, Boy, Deer, DragonBaby, Girl2, Human2, Ironman, Liquor, MotorRolling, Soccer, Tiger1, Tiger2, Woman ClifBar, David, Human7, Human9, Jump)
(3)原始OTB100数据集加模糊(除了原来已经有模糊的27个序列),也得到100个序列,即序列C。
(注:加模糊的python代码如下:)
(注:加模糊后的图片存储的时候直接把原始图片覆盖了,所以需要单独拷贝一个OTB100出来进行操作)
(4)序列C用deblurGAN去模糊之后得到新的100个序列,即序列D。
2.实验模型准备
1.去模糊模型
见上一篇博客
2.OTB100数据集在tracker_benchmark_v1.0上的配置
- 主要配置流程在这篇博客目标跟踪tracker_benchmark_v1.0的配置已经讲解的非常详细,下面是一些需要注意的点:
(1)打开perfPlot.m,更改103行为:
evalTypeSet = {‘OPE’};
同时不要更改140行为:
for j=1:1(否则后面对多个模型追踪结果进行评估时会报错)
(2)原文提供的修改好的路径大小写混用,因为matlab不区分路径大小写,所以没有影响,用原文提供的修改好的路径即可。 - 因为很多算法还没有matlab版本,所以无法拿到benchmark里面直接运行,所以要先跑出txt格式的结果,然后转换为benchmark所需的.mat格式用来画图,具体转换方式见https://blog.csdn.net/qq_33970986/article/details/88582774,如果结果数据没有外层文件夹的话,可以采用以下这个test.m文件进行转换,具体需要修改的地方在代码中都有注释。
- 在将所有序列的测试结果转为.mat文件后,将其放入benchmark根目录下的result文件夹下的results_OPE\results_OPE_OTB100路径下,最后results_OPE_OTB100文件夹中的.mat文件如下图所示:上图中每个mat文件的名称结构为:原视频序列名+测试所用序列名(或测试所用模型 +测试所用序列名)
- 调整线条的颜色与形状:
如上图,在perfPlot.m文件中修改plotDrawStyleAll里面每个结构体中的颜色数值即可。需要注意的在不同的结果图上线的颜色与追踪器名称并不是一致的,而是根据追踪结果的排名在上图中从上到下选择颜色。 - 调整画出的跟踪框的颜色
(1) 打开drawResultBB.m
(2) 注释掉86-115行。
(3) 根据追踪器的个数(设为n),将87-114行复制n次,修改下图所示位置的数字即可选择不同的颜色。
3.PySot模型在OTB100数据集上的配置
这一步其实较为简单,github上提供了较为详细的步骤,一步一步执行即可,其中有一些小问题可以参考这个博客。具体用experments文件夹下的哪个模型跑依照实际需求而定,但过程都是一样的。
3.结果准备
以下实验模型均在PySot根目录下的experments文件下,模型文件名结尾有OTB100的说明该模型对于OTB100数据集做过优化,对于每个跟踪器的具体命名应该不同,便于在benchmark里画图做比较时以示区别。
第一步,使用序列A做实验
- 使用siameseRPN跟踪,得到100个文本结果,记录为A_RPN_results。我们将此作为一种跟踪器,跟踪器名为
original
- 使用siameseRPN++跟踪,得到100个文本结果,记录为A_RPN++_results。相应的跟踪器名为
siamrpn_origin
- 使用siameseMask跟踪,得到100个文本结果,记录为A_Mask_results。相应的跟踪器名为
siammask_origin
第二步,使用序列B做实验
- 使用siameseRPN跟踪,得到100个文本结果,记录为B_RPN_results。相应的跟踪器名为
27deblurring
- 使用siameseRPN++跟踪,得到100个文本结果,记录为B_RPN++_results。相应的跟踪器名为
siamrpn_deblur27
- 使用siameseMask跟踪,得到100个文本结果,记录为B_Mask_results。相应的跟踪器名为
siammask_deblur27
第三步,使用序列C做实验
- 使用siameseRPN跟踪,得到100个文本结果,记录为C_RPN_results。相应的跟踪器名为
all_blur_ch12
- 使用siameseRPN++跟踪,得到100个文本结果,记录为C_RPN++_results。相应的跟踪器名为
siamrpn_blurall_ch12
- 使用siameseMask跟踪,得到100个文本结果,记录为C_Mask_results。相应的跟踪器名为
siammask_blurall_ch12
第四步,使用序列D做实验
- 使用siameseRPN跟踪,得到100个文本结果,记录为D_RPN_results。相应的跟踪器名为
all_deblur_ch12
- 使用siameseRPN++跟踪,得到100个文本结果,记录为D_RPN++_results。相应的跟踪器名为
siamrpn_deblurall_ch12
- 使用siameseMask跟踪,得到100个文本结果,记录为D_Mask_results。相应的跟踪器名为
siammask_deblurall_ch12
第五步,得到结果与类型转换
- 经过上述四个步骤,我们一共的到了1200个测试结果txt文件,每100个文本文件的名称均是OTB100中的视频序列名。
- 用模型准备中提供的test.m文件将其全部转换为.mat文件,注意按照程序中的注释将每个序列命名为前四个步骤中我们给定的名字。
4.测试数据可视化
1.画图方法
更改util\configTrackers.m为:
上图中trackersNew中的每个struct就是需要画图的测试序列名,将其改为自己所需的测试序列名即可。(e.g. 修改struct中“siammask_blurall_ch12”部分)
2.论述deblurGan对原始序列标注模糊的影响
挑出序列A的300个结果和序列B的300个结果
- 将
original
和27deblurring
放在一起画图。挑出motion blur
的precision plots和success plots - 将
siamrpn_origin
和siamrpn_deblur27
放在一起画图。挑出motion blur
的precision plots和success plots - 将
siammask_origin
和siammask_deblur27
放在一起画图。挑出motion blur
的precision plots和success plots
论述deblurGan对严重模糊的影响
挑出序列C的300个结果和序列D的300个结果
4. 将all_blur_ch12
和all_deblur_ch12
放在一起画图。
5. 将siamrpn_blurall_ch12
和siamrpn_deblurall_ch12
放在一起画图。
6. 将siammask_blurall_ch12
和siammask_deblurall_ch12
放在一起画图。
单独将所有motion blur
的precision plots和success plots挑出来,论述deblurGan对motion blur中严重模糊的影响
挑选其他属性图片,论述其他场景下严重模糊时deblurGan对三种跟踪器带来的影响
来源:CSDN
作者:WHUwyc
链接:https://blog.csdn.net/qq_42569857/article/details/103359215