这次为SiamMask调用VOT写一个调用的程序,在SiamMask工程文件夹下新建test文件夹,程序写在这里:
为了方便,我在parser的各元素中添加了默认值,另外,大家如果想换例子的话就修改文件头部的name变量:
import glob
from tools.test import *
import sys
import os
name = "bag"
sys.path.append("../experiments/siammask/")
parser = argparse.ArgumentParser(description='PyTorch Tracking Demo')
parser.add_argument('--resume', default='../experiments/siammask/SiamMask_VOT.pth',help='path to latest checkpoint (default: none)')
parser.add_argument('--config', dest='config', default='../experiments/siammask/config_vot.json',
help='hyper-parameter of SiamMask in json format')
parser.add_argument('--base_path', default='../data/VOT2016/'+name+'/', help='datasets')
args = parser.parse_args()
def num_read_directory(directory_name):
filename1=os.listdir(directory_name)
return len(filename1)
def read_directory(directory_name,num):
filename1=os.listdir(directory_name)
img = cv2.imread(directory_name + "/" + filename1[num],cv2.IMREAD_COLOR)
return img
if __name__ == '__main__':
# Setup device
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
torch.backends.cudnn.benchmark = True
# Setup Model
cfg = load_config(args)
from custom import Custom
siammask = Custom(anchors=cfg['anchors'])
if args.resume:
assert isfile(args.resume), '{} is not a valid file'.format(args.resume)
siammask = load_pretrain(siammask, args.resume)
siammask.eval().to(device)
# Parse Image file
img_files = sorted(glob.glob(join(args.base_path, '*.jp*')))
ims = [cv2.imread(imf) for imf in img_files]
num_image=num_read_directory(args.base_path)
f = open(args.base_path+'groundtruth.txt')
frames = np.zeros([num_image, 8])
j = 0
for i in f:
frames[j, :] = i.split(',')
j += 1
f.close()
# Select ROI
cv2.namedWindow("SiamMask", cv2.WND_PROP_FULLSCREEN)
# cv2.setWindowProperty("SiamMask", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
try:
init_rect = cv2.selectROI('SiamMask', ims[0], False, False)
x, y, w, h = init_rect
print([x, y, w, h])
except:
exit()
toc = 0
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter(args.base_path+ "/SiamMask_out.avi", fourcc, 24,
(ims[0].shape[1], ims[0].shape[0]))
for f, im in enumerate(ims):
tic = cv2.getTickCount()
if f == 0: # init
target_pos = np.array([x + w / 2, y + h / 2])
target_sz = np.array([w, h])
state = siamese_init(im, target_pos, target_sz, siammask, cfg['hp']) # init tracker
elif f > 0: # tracking
state = siamese_track(state, im, mask_enable=True, refine_enable=True) # track
location = state['ploygon'].flatten()
mask = state['mask'] > state['p'].seg_thr
im[:, :, 2] = (mask > 0) * 255 + (mask == 0) * im[:, :, 2]
cv2.polylines(im, [np.int0(location).reshape((-1, 1, 2))], True, (0, 255, 0), 3)
cv2.putText(im, "SiamMask", (5, 20), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 2)
cv2.imshow('SiamMask', im)
out.write(im)
key = cv2.waitKey(1)
if key > 0:
break
toc += cv2.getTickCount() - tic
toc /= cv2.getTickFrequency()
fps = f / toc
print('SiamMask Time: {:02.1f}s Speed: {:3.1f}fps (with visulization!)'.format(toc, fps))
这里边进行模板初始化时间还是采用人工选择区域,而在groundtruth.txt中读出来的是一个斜体的矩形框,这一点需要修改原本的siammask初始化程序,暂时还没修改,官方也没说怎么修改。
下边放一下效果吧:
================== 获取网页中span标签里面的t_id的值 public function getpreg(){ $www = 'http://monkey.test.tripb.cn/test/preg.html'; $html = file_get_contents($www); $search = '/<span([^>]*)\s*t_i...
//显存上分配空间CUDA_SAFE_CALL(cudaMalloc((void**)&Dst_d,sizeof(float3) * totalPNum));//显存上传输数据CUDA_SAFE_CALL(cudaMemcpy(Dst_d, Srcdata0_h, sizeof(float3) * numdata0, cudaMemcpyHostToDevice));CUDA_SA
js文件 if ('function' !== typeof RegExp.escape) { RegExp.escape = function(s) { if ('string' !== typeof s) { return s } return s.replace(/([.*+?^=!...
来源:深度学习于机器视觉编辑:nhyilin一、1946 蒙特卡洛方法[1946: John von Neumann, Stan Ulam, and Nick Metropolis, al...
一个storm topology运行起来之后, 会在supervisor 机器上启动一些进程来运行spout和bolt实例.如果一个topology里面一共有一个spout, 一个bolt。 其中spout的parallelism是2, bolt的parallelism是4, 那么我们可以把这个topology的总工作量看成是6, 那么一共有6个task,那么/tasks/{topolog...
近日,几个明星产品的升级很有意思:微博不限字数了,140字这个最重要的标签竟然被干掉了;今日头条悄然公测头条问答对标知乎,还推出了图集、视频等功能;知乎在去年也发布了“读读日报”。这些应用所做的事情越来越一致:都在成为UGC(用户生产内容)的多元化内容平台。今日头条不再只是资讯客户端,知乎不再只是问答平台,微博不再是140字短消息公共发布平台。综观国内U...
http://www.lydsy.com/JudgeOnline/problem.php?id=1178这道题想了好久没想明白,倍增数组通过看题解很快就明白了,但是一小段区间内应有的最多线段数一直不知道怎么记录。后来聪哥提醒我才明白,直接getans(l,r)不就完了吗_(:з」∠)_根本不用记录啊QwQ我用splay维护线段的位置顺序,查找前驱后继等等。上午因为懒得写插入线...
添加依赖:&lt;!-- pagehelper分页模块 --&gt;&lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper&lt;/artifactId&gt; &lt;version&gt;5.1.2&lt;/v
尤其是特殊字段如果有转意义字符就有问题使用 StringEscapeUtils.unescapeJavaScript(jsDataStr) 解决!!!
据说这是高手优化的mysql,供大家参考,其中连接数 max_connections=1500可以根据服务器的性能更改.pc136.com 版权所有#set-variable = connect_timeout=5#set-variable = wait_timeout=5 pc136.com 版权所有建议启用,负担重的服务器可以适当减少持续连接时间PC易上路[mysq...
今天在安装vmtools出现的找不到kernel headers的问题,主要原因是版本不匹配!在第一次安装时,提示gcc路径找不到,安装gcc以后又出现kerneal headers路径找不到。但是检查/usr/src/kernel路径时发现kernel文件时存在的。于是运行:rpm -qa|grep kernelkernel-tools-libs-3.10.0-957.el7.x86_64ker...
教程1教程2http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/root/qt/