tsn

news/2025/3/19 16:15:12/

TSN

1.如何提帧

1.1数据集准备

下载网址:http://crcv.ucf.edu/data/UCF101/UCF101.rar

下载成功后的UCF文件夹如下所示:
该文件夹下是各种动作的视频文件,共有101种类别
在这里插入图片描述

下图是UCF101在进行训练和测试时,分割的依据文件

在这里插入图片描述

1.2源码准备

在实验过程中,我们需要使用tsn-pytorch和mmaction的一些代码文件,所以我们提前从Git上获得存储在本地。

下载mmaction:

git clone --recursive https://github.com/open-mmlab/mmaction.git

下载tsn-pytorch:

git clone --recursive https://github.com/yjxiong/tsn-pytorch

1.3提帧

在我们下载好的UCF101数据集中,视频大多是长时间的,很难对其进行动作识别,所以需要进行提帧操作。
首先在mmaction的data/ucf101中创建rawframes、videos、annotations文件夹。

rawframes:视频提帧后存放的文件目录

videos:拷贝ucf101数据集中的101个文件目录,放置其中

annotations:ucf101之后进行分割训练集、测试集的依据文件

在这里插入图片描述

然后在mmaction/data_tools/build_rawframes.py的同级目录下进行视频提帧的代码文件,输入命令如下所示:

python build_rawframes.py ../data/ucf101/videos ../data/ucf101/rawframes/ --level 2  --ext avi

在这里插入图片描述

生成的文件目录形式如下所示:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

运行完成后,将每一个视频的每一帧提取出来,放在特定名称的文件夹中。

1.4生成file_list

在tsn-pytorch的readme文件中可以看到,训练过程中需要<ucf101_rgb_train_list>和<ucf101_rgb_val_list>,所以生成这两个list文件是必需的。使用mmaction/data_tools/buid_file_list.py即可对ucf101生成的帧进行训练集和测试集的划分。输入命令如下所示:

python data_tools/build_file_list.py ucf101 data/ucf101/rawframes/ --level 2 --format rawframes --shuffle

也可在mmaction/data_tools/ucf101/中输入

bash generate_filelist.sh

在这里插入图片描述

生成的filelist在data/ucf101目录下,形式如下:
在这里插入图片描述

file_list的内容如下所示:

在这里插入图片描述

file_list中有三列,第一列代表文件的地址,第二列代表视频的帧数,第三列代表视频的类别。这里仅仅使用ucf101的3个文件夹,所以类别只有0 1 2。

2.如何feed帧出特征

代码修改部分参考 https://blog.csdn.net/qq_39862223/article/details/108461526

2.1IPO

下图展示了,TSN如何将ucf101数据集提出的帧进行分类的过程,标明了每一个阶段的tensor大小

在这里插入图片描述在这里插入图片描述

3.如何save,以便load

定义的保存模型以及参数信息的方法,该方法会在进行模型训练的时候得到调用。

def save_checkpoint(state, is_best, filename='checkpoint.pth.tar'):  filename = '_'.join((args.snapshot_pref, args.modality.lower(), filename)) # 用于保存模型以及参数信息的路径以及文件名torch.save(state, filename)  # 将模型以上述名称保存在该路径下if is_best: # 如果准确率得到提高就进行模型的被备份best_name = '_'.join((args.snapshot_pref, args.modality.lower(), 'model_best.pth.tar')) # 备份路径以及文件名称shutil.copyfile(filename, best_name) # 进行文件复制

对该方法的调用,通过该方法保存模型,准确率,模型参数并判断是否进行模型复制

best_prec1 = max(prec1, best_prec1)save_checkpoint({'epoch': epoch + 1,'arch': args.arch,'state_dict': model.state_dict(),'best_prec1': best_prec1,}, is_best)

加载保存的参数

    if args.resume:  # args.resume是保存模型的路径if os.path.isfile(args.resume): # 判断该绝对路径下是否是文件,也就是保存模型方法中的绝对路径print(("=> loading checkpoint '{}'".format(args.resume)))checkpoint = torch.load(args.resume) # 进行加载checkpoint 字典的形式,里面包括epoch,arch,state_dict,best_prec1 args.start_epoch = checkpoint['epoch']best_prec1 = checkpoint['best_prec1']model.load_state_dict(checkpoint['state_dict'])print(("=> loaded checkpoint '{}' (epoch {})".format(args.evaluate, checkpoint['epoch'])))else:print(("=> no checkpoint found at '{}'".format(args.resume)))


http://www.ppmy.cn/news/781949.html

相关文章

【C语言初阶(10)】函数练习题

文章目录 1. 判断素数2. 判断闰年3. 函数实现二分查找4. 记录函数调用次数 1. 判断素数 题目内容 写一个函数可以判断一个数是不是素数。 素数 素数也叫做质数&#xff0c;一个只能被 1 和它本身整除的数字称之为素数。 例如&#xff1a;7 这个数字只能被 1 和 它本身&#x…

DTD详解

基本概述 文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。它是标准通用标记语言(SGML)和可扩展标记语言(XML)1.0版规格的一部分&#xff0c;文档可根据某种DTD语法规则验证格式是否符合此规则。文档类型定义也可用做保证…

DHT网络简介

DHT网络全称为分布式哈希表网络(Distributed Hash Table net)&#xff0c;是一种由键值对唯一标识的信息按某种协议被分散在多个节点上的“非中心化服务”网络。可在分布式对等网络环境中进行存储、检索、查询、等管理数据。其数据大规模分散在多个节点上的网络。可以有效避免单…

DTN中基于两跳ACK 确认机制的备用副本转发算法

DTN中基于两跳ACK 确认机制的备用副本转发算法 摘要 针对DTN在遇到路由空洞问题&#xff08;由于某些原因&#xff0c;没有合适的下一跳节点&#xff09;时缺乏有效回避路由空洞的方法导致信息端到端传输时延较大的问题&#xff0c;提出了DTN中基于两跳ACK &#xff08;ACK1 …

DTn one 的学习,,,

在今天开始学习了one的代码学习 《机会网络模拟器ONE及其扩展研究*》王朕王新华隋敬麒这。 想看看在one中有没有应用层的使用 看了想明天看 《基于社会网络特性的机会计算服务平台》 陈加忠1, 鞠增伟1, 陈常念1, 李 榕1, 夏 涛1, 王 冼 收获是对DTn中的主要包的主要功能有个…

ION-DTN-AMS(Asynchronous Message Service)实现配置

AMS 概述 Asynchronous Message Service (AMS&#xff09; 是一种数据系统通信架构&#xff0c;由自主的互操作模块组成&#xff0c;任务系统的模块可以被设计为独立运行&#xff0c;每个模块产生和消耗任务信息&#xff0c;而不明确知道其他模块当前正在运行 AMS的目的是通…

层次分析法-基于节点关键度的DTN路由算法

当你看到一个知识点的时候&#xff0c;不是收藏和点赞&#xff0c;而是想办法转化成自己需要的知识&#xff0c;好记性不如烂笔头。 层次分析法 层次分析法(运筹学理论)&#xff0c;简称AHP&#xff0c;是指将于决策总是有关的元素分解成目标、准则、方案等层次&#xff0c;在…

基于ns-3的DTN code安装教程

这是我第100次重装DTN了&#xff0c;再装就自杀。 系统&#xff1a;Ubuntu16.04LTS ns3版本&#xff1a;3.22 装完系统直接装ns3&#xff0c;为防止版本支持问题&#xff0c;用的老版本系统软件。 1 更改镜像源 习惯性装完系统先改成清华镜像源已备不测 &#xff08;1&#…