############################################################################################
#### Fot LaSOT dataset
############################################################################################
import os
import numpy as np
import json
import pdb LaSOT_path = "/home/wangxiao/Downloads/pysot/testing_dataset/LaSOT/"
video_files = os.listdir(LaSOT_path)
video_files = np.sort(video_files) ## use this class to avoid some array or other format issues in json.
class NumpyEncoder(json.JSONEncoder):
""" Special json encoder for numpy types """
def default(self, obj):
if isinstance(obj, (np.int_, np.intc, np.intp, np.int8, np.int16, np.int32, np.int64, np.uint8, np.uint16, np.uint32, np.uint64)):
return int(obj)
elif isinstance(obj, (np.float_, np.float16, np.float32, np.float64)):
return float(obj)
elif isinstance(obj, (np.ndarray,)): #### This is the fix
return obj.tolist()
return json.JSONEncoder.default(self, obj) dict = {} # for idx in range(len(video_files)):
for idx in range(5): ## for test this code work or not.
video_name = video_files[idx]
img_path = LaSOT_path + video_name + '/img/'
gt_path = LaSOT_path + video_name + '/groundtruth.txt' print("==>> video Name: ", video_name, " current-index/total: ", idx, "/", len(video_files), ", please wait ... ") img_files = sorted([p for p in os.listdir(img_path) if os.path.splitext(p)[1] == '.jpg']) # pdb.set_trace() gt_files = np.loadtxt(gt_path, delimiter=',')
init_rect = gt_files[0]
init_rect_first = init_rect.tolist() # pdb.set_trace()
img_names_list = []
gt_files_list = [] #### for each image and ground truth
for img_idx in range(len(img_files)):
img_names = video_name + '/img/' + img_files[img_idx]
img_names_list.append(img_names)
gt_files_list.append(gt_files[img_idx]) # pdb.set_trace() #### collect and save into one dict.
dict_collect = {'video_dir': video_name, 'init_rect': init_rect_first, 'img_names': img_names_list, 'gt_rect': gt_files_list}
dict[video_name] = dict_collect dumped = json.dumps(dict, cls=NumpyEncoder)
with open('LaSOT_test.json', 'w+') as f:
json.dump(dumped, f) print("==>> Done !") file = open('LaSOT_test.json','r',encoding='utf-8')
benchmark_info = json.load(file)
print(benchmark_info)

===================    Attention    ===================

when you load the json file, you will find:

" ... [541.0, 280.0, 76.0, 27.0]], "attr": [], "absent": []}}' "

there is a ' at the begining and end of the dict, directly load this json (I mean run the pysot tracker with this json file) will cause following errors:

File "/home/wangxiao/Downloads/pysot/toolkit/datasets/__init__.py", line 26, in create_dataset
   dataset = LaSOTDataset(**kwargs)

 File "/home/wangxiao/Downloads/pysot/toolkit/datasets/lasot.py", line 81, in __init__

   pbar = tqdm(meta_data.keys(), desc='loading '+name, ncols=100)

AttributeError: 'str' object has no attribute 'keys' 

Thus, you need to modify the lasot.py (about line 69):

meta_data = ast.literal_eval(meta_data)

to remove the two ' (this operation actually change the string to dict)

Of course, you also need to add this package: import ast 

Then, everything will be OK.

=========

Referencehttps://www.cnblogs.com/sunshine2016/p/6197836.html

Python script to package the information of tracking benchmarks like LaSOT and GOT-10k into json files for Siamese network based trackers的更多相关文章

  1. java + spring (jython\python\script) Error:SyntaxError: no viable alternative at character '\n'

    使用Jython结合java和Python开发功能时,要是遇到如下情况: 2016-03-10 16:16:49 DEBUG [com.freedom.orion.configs.JyhtonConf ...

  2. python模块module package

    python模块module   package module package 常用模块 模块与包的区别 模块分为内置模块.第三方模块,自定义模块 程序会先从内置到第三方再到当前工作目录下去找你导入的 ...

  3. Windows 配置Apache以便在浏览器中运行Python script的CGI模式

    打开httpd.conf,找到”#ScriptInterpreterSource Registry “,移除前面的注释# (如果找不到这行,就自己添加进去) 找到“Options Indexes Fo ...

  4. Notepad++插件Emmet和Python Script的安装

    最近在做一个项目,涉及到大量的HTML.CSS代码的编写,手动写代码效率实在 是低下.于是想搜索一下,有没有Notepad++插件可以支持自动生成的,果不其然还真有.Emmet,这款神器其实就是 Ze ...

  5. rc.local 注意事項,call python script, file position

    如果要在 rc.local 呼叫 python script python script 的位置需使用絕對路徑 其 python script 裡的有關 file 的位置也需使用 絕對路徑 如果要在 ...

  6. python 包(package)和模块(module)的创建和引入(import)

    python 包(package)和模块(module)的创建和引入(import) 名词解释 实际上,Python中的函数(Function).类(Class).模块(Module).包库(Pack ...

  7. import 本地Python module或package

    很基础很重要的一课,虽然很简单,但是防止以后忘了,还是记下来 这个笔记里说的都是import本地的,自己创建的,或者复制粘贴的别人的,总之“不是安装到library”的module or packag ...

  8. A python script to check NE syncfail and get log from CIPS

    #! /usr/bin/env python # -*- coding: UTF-8 -*- """The script is to check whether NE i ...

  9. ## Python中的Package和Jupyter中import包问题

    前言 关于python包的一些知识 Java中的package概念 我们知道在java中的import package概念, java中的包就是一个目录,里面包含着子目录,子目录套着子目录,当需要引入 ...

随机推荐

  1. 个人项目(JAVA实现)

    一:Github项目地址:https://github.com/candy07213/WC 二:PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分 ...

  2. Spring+Velocity+Mybatis入门(step by step)

    一.开发工具 开发过程中使用的操作系统是OS X,关于软件安装的问题请大家移步高效的Mac环境设置. 本文是我对自己学习过程的一个回顾,应该还有不少问题待改进,例如目录的设置.编码习惯和配置文件的处理 ...

  3. 【转载】TX - row lock contention 的一些场景

    TX - row lock contention 的一些场景 原创 2016-07-11 易欣 云和恩墨 易欣(Eson) 云和恩墨技术专家 本文整理来自7月7日周四晚云和恩墨大讲堂嘉宾易欣分享的主题 ...

  4. 申请软件著作权,wps显示代码行号功能

    申请软件著作权时,要提交代码. 格式要求,每页不少于50行,怎么设置格式,保障每页至少50行呢? 选择[页面布局]---[行号]--[每页重编行号]即可显示出来,根据显示出来的行号,调整行距等格式即可 ...

  5. MySQL/MariaDB数据库的复制加密

      MySQL/MariaDB数据库的复制加密 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的安全问题 1>.基于SSL复制 在默认的主从复制过程或远程连接 ...

  6. 微信小程序~事件绑定和冒泡

    [1]事件绑定和冒泡 事件绑定的写法同组件的属性,以 key.value 的形式. key 以bind或catch开头,然后跟上事件的类型,如bindtap.catchtouchstart.自基础库版 ...

  7. 【python】raise_for_status()抛出requests.HTTPError错误

    1.首先看下面代码的运行情况 import requests res = requests.get("https://www.csdn.net/eee", headers=head ...

  8. JAVA项目部署(1)

    之前小菜觉得项目发布啊部署可难了,今个儿小菜接有幸触了一下java项目的打包和部署,没上手前觉得可高大上了,可难了,小菜这人就是做没做过的事前特别喜欢自己吓唬自己,这个习惯不好,得改!其实自己真正动手 ...

  9. python的zip()函数

    zip() 函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象. 如果各个可迭代对象的元素个数不一致,则返回的对象长度与最短的可迭代对象相同. 利用 * 号 ...

  10. 中断点异常 STATUS_BREAKPOINT(0x80000003)

    简介 STATUS_BREAKPOINT,值为0x80000003,称为中断指令异常,表示在系统未附加内核调试器时遇到断点或断言. 触发条件 通常中断指令异常可以在以下条件下触发: 硬代码中断请求,如 ...