目标追踪之SiamMask的学习四_天辰孤煞&的博客-程序员宝宝

技术标签: SiamMask  目标追踪  

这次为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初始化程序,暂时还没修改,官方也没说怎么修改。

下边放一下效果吧:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lj19940110/article/details/89676898

智能推荐

抓取网页中数据 -----51book中城市码_weixin_30901729的博客-程序员宝宝

================== 获取网页中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...

CPU 与 GPU 之间数据转换 cudaMemcpy_xiaoheibaqi的博客-程序员宝宝

//显存上分配空间CUDA_SAFE_CALL(cudaMalloc((void**)&Dst_d,sizeof(float3) * totalPNum));//显存上传输数据CUDA_SAFE_CALL(cudaMemcpy(Dst_d, Srcdata0_h, sizeof(float3) * numdata0, cudaMemcpyHostToDevice));CUDA_SA

extjs-3.4.1多选下拉框实现_平凡之路无尽路的博客-程序员宝宝_extjs mon mousedown

js文件 if ('function' !== typeof RegExp.escape) { RegExp.escape = function(s) { if ('string' !== typeof s) { return s } return s.replace(/([.*+?^=!...

细数二十世纪最伟大的10大算法_人工智能学家的博客-程序员宝宝

来源:深度学习于机器视觉编辑:nhyilin一、1946 蒙特卡洛方法[1946: John von Neumann, Stan Ulam, and Nick Metropolis, al...

storm中supervisor, task, worker, spout, bolt之间的关系_iteye_14294的博客-程序员宝宝

一个storm topology运行起来之后, 会在supervisor 机器上启动一些进程来运行spout和bolt实例.如果一个topology里面一共有一个spout, 一个bolt。 其中spout的parallelism是2, bolt的parallelism是4, 那么我们可以把这个topology的总工作量看成是6, 那么一共有6个task,那么/tasks/{topolog...

微博取消140字“贴吧化”,为何要做内容大杂烩?_weixin_33682719的博客-程序员宝宝

近日,几个明星产品的升级很有意思:微博不限字数了,140字这个最重要的标签竟然被干掉了;今日头条悄然公测头条问答对标知乎,还推出了图集、视频等功能;知乎在去年也发布了“读读日报”。这些应用所做的事情越来越一致:都在成为UGC(用户生产内容)的多元化内容平台。今日头条不再只是资讯客户端,知乎不再只是问答平台,微博不再是140字短消息公共发布平台。综观国内U...

随便推点

【BZOJ 1178】【APIO 2009】CONVENTION会议中心_as2886089的博客-程序员宝宝

http://www.lydsy.com/JudgeOnline/problem.php?id=1178这道题想了好久没想明白,倍增数组通过看题解很快就明白了,但是一小段区间内应有的最多线段数一直不知道怎么记录。后来聪哥提醒我才明白,直接getans(l,r)不就完了吗_(:з」∠)_根本不用记录啊QwQ我用splay维护线段的位置顺序,查找前驱后继等等。上午因为懒得写插入线...

PageHelper实现_飞乐鸟的博客-程序员宝宝_pagehelper实现

添加依赖:<!-- pagehelper分页模块 --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</v

fastjson后某些字符有转义符_树上的疯子^的博客-程序员宝宝_fastjson 转义字符

尤其是特殊字段如果有转意义字符就有问题使用 StringEscapeUtils.unescapeJavaScript(jsDataStr) 解决!!!

mysql5.5 my.ini优化,mysql优化 my.ini高手设置_一瓶辣酱的博客-程序员宝宝

据说这是高手优化的mysql,供大家参考,其中连接数 max_connections=1500可以根据服务器的性能更改.pc136.com 版权所有#set-variable = connect_timeout=5#set-variable = wait_timeout=5 pc136.com 版权所有建议启用,负担重的服务器可以适当减少持续连接时间PC易上路[mysq...

linux7安装tools提示目录不在,关于Centos7安装vmtools时,存在kernalheaderd仍然找不到路径的问题..._weixin_39664585的博客-程序员宝宝

今天在安装vmtools出现的找不到kernel headers的问题,主要原因是版本不匹配!在第一次安装时,提示gcc路径找不到,安装gcc以后又出现kerneal headers路径找不到。但是检查/usr/src/kernel路径时发现kernel文件时存在的。于是运行:rpm -qa|grep kernelkernel-tools-libs-3.10.0-957.el7.x86_64ker...

QT 资料档案库_小松萘的博客-程序员宝宝_qt资料档案库

教程1教程2http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/root/qt/

推荐文章

热门文章

相关标签