OTB数据集批量设置代码——设置configSeq.m并复制groundtruth文件

2024-01-18 05:40

本文主要是介绍OTB数据集批量设置代码——设置configSeq.m并复制groundtruth文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

(1)configSeq.m代码自动编写

OTB数据集Benchmark中的数据集设置十分繁琐,OTB2015中有100个视频序列,如果手动添加每个视频序列的属性效率极低,因此本文通过Matlab代码实现自动获取数据集每个视频序列的属性,按照configSeq中的结构体样式编写属性代码并存入txt文件中,随后将代码复制进configSeq中即可。

(2)自动将原数据集中的groundtruth文件复制进anno文件夹中并重命名

由于Benchmark在测试算法之后要根据groundtruth文件计算跟踪精度等指标,需要将数据集中的gd文件复制进Benchmark中的anno文件夹,如果手动操作会变得十分繁琐,本代码可以实现自动获取原数据集文件夹中的groundtruth文件并复制进Benchmark中的anno文件夹,并重命名为Benchmark的格式。

%此代码实现的功能为:
%读取数据集文件下的所有子文件夹名称,并以configSeqs.m中的格式创建结构体
%并将groundtruth文件存入anno文件夹
OTB100 = 'Basketball Biker Bird1 Bird2 BlurBody BlurCar1 BlurCar2 BlurCar3 BlurCar4 BlurFace BlurOwl Board Bolt Bolt2 Box Boy Car1 Car2 Car24 Car4 CarDark CarScale ClifBar Coke Couple Coupon Crossing Crowds Dancer Dancer2 David David2 David3 Deer Diving Dog Dog1 Doll DragonBaby Dudek FaceOcc1 FaceOcc2 Fish FleetFace Football Football1 Freeman1 Freeman3 Freeman4 Girl Girl2 Gym Human2 Human3 Human4 Human5 Human6 Human7 Human8 Human9 Ironman Jogging Jump Jumping KiteSurf Lemming Liquor Man Matrix Mhyang MotorRolling MountainBike Panda RedTeam Rubik Shaking Singer1 Singer2 Skater Skater2 Skating1 Skating2 Skiing Soccer Subway Surfer Suv Sylvester Tiger1 Tiger2 Toy Trans Trellis Twinnings Vase Walking Walking2 Woman';
OTB100 = strsplit(OTB100);
base_path = 'E:\single_object_tracking\Benchmark\';
files = dir(base_path);%数据集文件夹的路径%% 处理configSeq
fid=fopen('configSeq.txt','wt');
for i = 1:numel(files)temp_name = files(i).name;if ~ismember(temp_name,OTB100) %如果文件夹的名字不存在于OTB数据集中,则执行下一循环continueendtemp_path = [base_path temp_name '\' 'img\'];temp_files = dir([temp_path '*.jpg']);endFrame = numel(temp_files);temp_1 = ['struct(''name'',' '''' temp_name '''' ',' '''path'','];%字符串中有单引号用两个单引号表示temp_res = [temp_1 '''' temp_path '''' ',' '''startFrame'',' '1,' '''endFrame'',' num2str(endFrame) ',' '''nz'',' '4,' '''ext'',' '''jpg'',' '''init_rect'', ' '[0,0,0,0]),' '...'];fprintf(fid,'%s\n',temp_res);%写入文本文件disp(['write down:' temp_name])end
disp('configSeq done')%% 处理groundtruth文件
for i = 1:numel(files)temp_name = files(i).name;if ~ismember(temp_name,OTB100) %如果文件夹的名字不存在于OTB数据集中,则执行下一循环continueendtxt_name = ['./anno/' temp_name '.txt'];if exist(txt_name,'file') %如果原本存在groundtruth文件则执行下一个循环disp(['exsting txt file : ' temp_name])continueendgd_file = [base_path temp_name '/' 'groundtruth_rect.txt'];%数据集中的gd文件copyfile(gd_file,'./anno');%移动到anno文件夹path = pwd;%保存当前目录cd('./anno')eval(['!rename' 32 'groundtruth_rect.txt' 32 [temp_name '.txt']]); %使用系统命令更改文件名,32为ASCII空格cd(path)%返回目录disp(['move done: ' temp_name])
end

这篇关于OTB数据集批量设置代码——设置configSeq.m并复制groundtruth文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618189

相关文章

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我