pysot-toolkit--eval.py笔记(读取算法结果,根据评价指标计算结果并可视化)

本文详细探讨了pysot toolkit的eval.py,强调其与pysot eval的区别,特别是包含了VOT2019等最新数据集的评估程序。eval.py用于处理OTB系列、VOT2016、2018、VOT2018-LT、NFS、UAV及LaSOT等数据集的跟踪结果,并进行性能计算与可视化。

pysot toolkit 的eval文件

目前pysot toolkit与pysot的eval不同之处在于是否有VOT2019等最新的数据集评价程序。
包含的数据有:

  • OTB系列
  • VOT2016, 2018(2017)短时序列
  • VOT2018-LT
  • NFS
  • UAV
  • LaSOT
import os
import sys
import time
import argparse
import functools
sys.path.append("./")
sys.path.append("C:/Users/lpf/Desktop/Code_of_Paper/pysot-toolkit")
from glob import glob
from tqdm import tqdm
from multiprocessing import Pool
from pysot.datasets import OTBDataset, UAVDataset, LaSOTDataset, VOTDataset, NFSDataset, VOTLTDataset
from pysot.evaluation import OPEBenchmark, AccuracyRobustnessBenchmark, EAOBenchmark, F1Benchmark
from pysot.visualization import draw_success_precision, draw_eao, draw_f1


dataset_dir = r"C:\Users\lpf\Desktop\Code_of_Paper\pysot-master\testing_dataset\OTB100"
# dataset_dir = r"F:\Linux2Win10\OTB1001\OTB100"
dataset = r"OTB100"

# tracker_results_dir = r"F:\Linux2Win10\OTB1001\OTB100_backup"
tracker_results_dir =  r"C:\Users\lpf\Desktop\Code_of_Paper\pysot-toolkit\results\OTB100"
# 'MDNet',
trackers = [ 'SiamCAR', 'CFNet', 'DaSiamRPN', 'GradNet', 'SRDCF', 'fDSST', 'DeepSRDCF', 'SiamRPN', 'SiamDWfc', 'Staple']
num = 10

if __name__ == '__main__':
    #step1、创建一个解析器——创建 ArgumentParser() 对象
    parser = argparse.ArgumentParser(description='Single Object Tracking Evaluation')

    #step2、添加参数——调用 add_argument() 方法添加参数
    parser.add_argument('--dataset_dir', type=str, default=dataset_dir, help='dataset root directory')#数据集根目录
    parser.add_argument('--dataset', type=str, default=dataset, help='dataset name')#数据集名称
    parser.add_argument('--tracker_result_dir', type=str, default=tracker_results_dir, help='tracker result root')#tracker 结果路径
    parser.add_argument('--trackers', default=trackers, nargs='+',help='Trackers name')#nargs='+' 设置一个或多个参数, 同时评估多个tracker
    parser.add_argument('--vis', dest='vis', action='store_true')#可视化,为真时绘图
    parser.add_argument('--show_video_level', dest='show_video_level', action='store_true')
    parser.add_argument('--num', type
### Pysot-toolkit 帧率优化与测量方法 对于提高 `pysot-toolkit` 的帧率(FPS),可以从多个方面入手,包括算法层面的改进、硬件加速以及软件配置调整。 #### 算法效率提升 通过分析跟踪器的核心算法寻找潜在瓶颈来实现性能优化。常见的做法是对计算密集型部分进行针对性优化: - **减少冗余运算**:去除不必要的重复计算操作,确保每次迭代只处理必需的数据[^1]。 - **数据结构优化**:采用更高效的数据存储方式可以显著降低访问延迟和内存占用量。例如,在某些场景下使用稀疏矩阵代替稠密矩阵能够节省大量空间加快处理速度。 ```python import numpy as np def optimized_data_structure(data): sparse_matrix = scipy.sparse.csr_matrix(data) return sparse_matrix ``` #### 利用多线程或多进程技术 现代计算机通常配备有多个CPU核心,利用发编程模型可以让不同任务同时执行从而充分利用资源: - Python 中可以通过 `concurrent.futures` 或者 `multiprocessing` 库轻松创建子线程/子进程来进行异步I/O读写或其他耗时较长的任务处理。 ```python from concurrent.futures import ThreadPoolExecutor, as_completed def process_frame(frame): # 处理单个图像帧逻辑... pass with ThreadPoolExecutor(max_workers=8) as executor: futures = {executor.submit(process_frame, frame): frame for frame in frames} for future in as_completed(futures): result = future.result() ``` #### GPU 加速支持 图形处理器擅长于大规模行计算任务,因此非常适合用于视觉识别类应用中的特征提取等工作负载。借助 CUDA 平台上的 PyTorch/TensorFlow 等框架可方便地移植现有代码至GPU上运行以获得数倍乃至数十倍的速度增益。 ```python import torch device = 'cuda' if torch.cuda.is_available() else 'cpu' model.to(device) input_tensor = input_tensor.to(device) output = model(input_tensor) ``` #### 测量 FPS 方法 为了准确评估上述措施的效果,建议采取如下几种手段记录程序实际表现出来的每秒传输画面数量(FPS): - 使用时间戳标记每一帧开始结束时刻,据此计算平均间隔作为最终统计依据; - 调试工具如 NVIDIA NSight Systems 可提供详细的性能剖析报告帮助定位具体问题所在; ```python import time start_time = time.time() while True: ret, frame = cap.read() if not ret: break end_time = time.time() elapsed_time = end_time - start_time fps = 1 / elapsed_time print('FPS:', fps) start_time = end_time ```
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值