1. 程式人生 > >Da-SiamRPN的復現(非vot toolkit環境)

Da-SiamRPN的復現(非vot toolkit環境)

剛開始看到這演算法很新奇,決定好好看看,所以有了這篇部落格。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 進行下一張。