Da-SiamRPN的复现(非vot toolkit环境)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_36669549/article/details/84637055

刚开始看到这算法很新奇,决定好好看看,所以有了这篇博客。Da SiameseRPN结果可视化看到了可视化的结果真的震撼到了,所以就千方百计的想要跑一下看看,结果不论是Windows的还是Ubantu的vot toolkit都没有通过测试,真是很苦恼了。后来想着绕过vot toolkit,直接跑,结果在windows下的权重文件都读不进去,可能是因为别的原因,后来直接在ubantu上配环境。

CUDA 9.1

PyTorch 0.3.1

显卡有个GTX 1050凑合用着,主要目标就是绕过vot toolkit,直接运行指标什么的先不考虑。

下载过vot-2018-short term测试集就不用再下了。这个我在VOT2018——研究指南已经放出来了。

接下来就是如何改。

首先要知道,运行Da-SiamRPN的接口在vot_SiamRPN.py中,在ubantu上运行的时候会在vot.py(line 104)报错

self._files = [x.strip('\n') for x in open('images.txt', 'r').readlines()]

在vot_SiamRPN.py中的line 32中调用了它,是用来给第一帧的图像初始化坐标用的,在第一帧以后的后续帧,用来更新坐标信息

handle = vot.VOT("polygon")
Polygon = handle.region()
cx, cy, w, h = get_axis_aligned_bbox(Polygon)

这个四个值分别表示

cx----中心点横坐标

cy----中心点纵坐标

w-----宽度

h-----高度

后来实验的时候证明是对的,我还没有仔细看vot里调用这个具体的做法是怎样的,但是我认为比较合理的计算应该是这样的:

cx = (x1+x2+x3+x4)/4
cy = (y1+y2+y3+y4)/4
w = ((x2-x1)+(x3-x4))/2
h = ((y3-y2)+(y4-y1))/2

看过vot-2018-short term数据集的应该知道里面的groundtruth是这样的

137.21,458.36,156.83,460.78,148.35,529.41,128.72,526.99
130.04,468.35,151.58,467.72,153.64,537.86,132.1,538.5
133.08,508.05,150.79,503.65,167.71,571.7,149.99,576.1
.
.
.
.
.
.

分别是四个点的横纵坐标——(x1,y1) (x2,y2) (x3,y3) (x4,y4)。

(cx,cy) 就是(x1,y1) (x2,y2) (x3,y3) (x4,y4)的中心点的坐标。关于w和h,我是简单的认为是两个对应横纵坐标差的均值,草图说明:

 还有就是一些平常的操作,注意几个路径的位置:

target_path--是测试集所在位置,里面有很多的文件夹:ants1、ants3......

sequences_name:就是具体的,里面有color文件夹,还有groundtruth.txt

image_path:里面就是很多图像文件了。“000001.jpg..........”

主体的代码:

for ii in range(1,len(img_name)):
    cx = int(res[0]-res[2]/2)
    cy = int(res[1]+res[3]/2)
    w = int(res[2])
    h = int(res[3])
    target_pos, target_sz = np.array([cx, cy]), np.array([w, h])
    
    im_temp = cv2.imread(image_path+img_name[ii])
    state = SiamRPN_track(state, im_temp)  # track
    res = cxy_wh_2_rect(state['target_pos'], state['target_sz'])
    
    # print(ii)
    # print(img_name[ii])
    # print(res)
    xx = int(res[0])
    yy = int(res[1])
    ww = int(res[2])
    hh = int(res[3])

    cv2.rectangle(im_temp,(xx,yy),(xx+ww,yy+hh),(0,0,255))
    cv2.imshow("prediction",im_temp)
    cv2.waitKey(0)

第一版的全部代码——Da-SiamRPN_No_vot-toolkit

可以得到。

运行:

按Enter 进行下一张。

猜你喜欢

转载自blog.csdn.net/baidu_36669549/article/details/84637055
vot
今日推荐