HMDB51数据集划分

生成训练集、验证集和测试集

每个split文件应该包含:

  • 训练集(id=1): 70个视频
  • 测试集(id=2): 30个视频
  • 未使用(id=0): 剩余视频
    这是一个70/30的训练/测试分割比例。标记为0的视频被排除在当前实验之外。
  • 实际上训练集(id=1),验证集(id=2),测试集(id=0),测试集和验证集可以互换
import os
import glob
from pathlib import Path# 设置数据处理的路径
SPLIT_DIR = r"C:/Users/yanho/Desktop/testTrainMulti_7030_splits"  # split文件所在目录
OUTPUT_DIR = r"C:/Users/yanho/Desktop/hmdb51_annotations"  # 输出目录def process_split_file(split_file, action_class):"""处理单个split文件并生成训练、验证和测试列表"""train_videos = []val_videos = []test_videos = []with open(split_file, 'r') as f:for line in f:video_name, label = line.strip().split()# 为每个视频添加类别标签(action_class)video_info = f'{video_name} {action_class}\n'if label == '1':train_videos.append(video_info)elif label == '2':val_videos.append(video_info)elif label == '0':test_videos.append(video_info)return train_videos, val_videos, test_videosdef main():# 创建输出目录output_dir = Path(OUTPUT_DIR)output_dir.mkdir(parents=True, exist_ok=True)# 用于收集所有训练、验证和测试样本all_train_videos = []all_val_videos = []all_test_videos = []# 处理所有split1文件split_files = glob.glob(os.path.join(SPLIT_DIR, '*_test_split1.txt'))for split_file in split_files:# 从文件名中提取动作类别action_class = Path(split_file).stem.split('_test_split1')[0]# 获取当前类别的动作类别索引class_idx = split_files.index(split_file)print(f'处理类别: {action_class} (索引: {class_idx})')# 处理当前split文件train_videos, val_videos, test_videos = process_split_file(split_file, class_idx)all_train_videos.extend(train_videos)all_val_videos.extend(val_videos)all_test_videos.extend(test_videos)# 写入训练集文件train_file = output_dir / 'train_split1.txt'with open(train_file, 'w') as f:f.writelines(all_train_videos)# 写入验证集文件val_file = output_dir / 'val_split1.txt'with open(val_file, 'w') as f:f.writelines(all_val_videos)# 写入测试集文件test_file = output_dir / 'test_split1.txt'with open(test_file, 'w') as f:f.writelines(all_test_videos)print(f'\n处理完成!')print(f'训练集样本数: {len(all_train_videos)}')print(f'验证集样本数: {len(all_val_videos)}')print(f'测试集样本数: {len(all_test_videos)}')print(f'文件保存在: {output_dir}')if __name__ == '__main__':main()

合并视频到统一目录

import os
import shutil
from pathlib import Pathdef merge_videos(src_dir, dst_dir):"""合并所有视频到统一目录Args:src_dir: 源视频目录dst_dir: 目标目录"""# 创建目标目录Path(dst_dir).mkdir(parents=True, exist_ok=True)# 遍历源目录for root, dirs, files in os.walk(src_dir):for file in files:if file.endswith('.avi'):  # 只处理视频文件# 获取类别名称category = os.path.basename(os.path.dirname(root))# 创建类别子目录category_dir = os.path.join(dst_dir, category)Path(category_dir).mkdir(exist_ok=True)# 源文件和目标文件路径src_path = os.path.join(root, file)dst_path = os.path.join(category_dir, file)# 复制文件shutil.copy2(src_path, dst_path)print(f"Copied {src_path} -> {dst_path}")if __name__ == "__main__":src_dir = "videos_src"  # 源视频目录dst_dir = "data/hmdb51/videos"  # 目标目录merge_videos(src_dir, dst_dir)  # 合并视频到统一目录,一共6766个视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 项目的计算机专业论文参考文献

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

【Linux】Linux安装并配置MongoDB

目录 1.添加仓库 2.安装 MongoDB 包 3.启动 MongoDB 服务 4. 验证安装 5.配置 5.1.进入无认证模式 5.2.1创建用户 5.2.2.开启认证 5.2.3重启 5.2.4.登录 6.端口变更 7.卸载 7.1.停止 MongoDB 服务 7.2.禁用 MongoDB 开机自启动 7.3.卸载 MongoDB 包 7.4.删除数…

2025/517学习

对离群值怎么操作。这个就是拟合操作的。用更弯曲的曲线去拟合,如常见函数log 多元回归和单元回归 如题,如果我有多个自变量,来对一个因变量进行OLS回归,有没有operator可以做到?(ts_regression似乎只支持一个…

RKNN开发环境搭建(ubuntu22.04)

以下情况在RV1106G3的平台上验证正常。 1、conda安装 1)conda --version//确认是否安装 2)创建一个安装目录,进行下一步 3)wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x…

Flutter到HarmonyOS Next 的跨越:memory_info库的鸿蒙适配之旅

Flutter到鸿蒙的跨越:memory_info库的鸿蒙适配之旅 本项目作者:kirk/坚果 您可以使用这个Flutter插件来更改应用程序图标上的角标 作者仓库:https://github.com/MrOlolo/memory_info/tree/master/memory_info 在数字化浪潮的推动下&#…

VLAN扩展技术

端口隔离 🌐 一、原理总结: 端口隔离功能:实现同一VLAN内端口之间的二层隔离。 用户只需将端口加入同一个隔离组(Port-isolate group),即可实现这些端口之间不能互通。 实现效果:更安全、更加…

设计模式 - 单例模式 - Tips

为什么双重检查会带来空指针异常问题? if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } …

【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新

概述 在历经三周的阶段性开发后,RagflowPlus顺利完成既定计划,正式发布v0.3.0版本。 开源地址:https://github.com/zstar1003/ragflow-plus 新功能 1. 用户会话管理 在后台管理系统中,新增用户会话管理菜单。在此菜单中&…

c++重要知识点汇总(不定期更新)

前言 真心希望各位dalao点赞收藏~ 树状数组 作用:高效求出区间前缀和,允许进行修改操作。 举个栗子: 刚开始有8项,分别为1-8。 首先构建二叉树: 1-8/ |/ |/ |/ |/ |1-4 5-8/ | / |/ | / |1-…

Predict Podcast Listening Time-(回归+特征工程+xgb)

Predict Podcast Listening Time 题意: 给你没个播客的信息,让你预测观众的聆听时间。 数据处理: 1.构造新特征收听效率进行分组 2.对数据异常处理 3.对时间情绪等进行数值编码 4.求某特征值求多项式特征 5.生成特征组合 6.交叉验证并enc…

Class类的详细说明

Class类的详细说明 Class 类是Java反射机制的核心,每个Java类或接口在JVM中都有一个对应的 Class 对象,用于表示该类的元数据(如类名、方法、字段、构造器等)。以下是其核心知识点: 1. 获取Class对象的三种方式 方式…

[逆向工程]C++实现DLL注入:原理、实现与防御全解析(二十五)

[逆向工程]C实现DLL注入:原理、实现与防御全解析(二十五) 引言 DLL注入(DLL Injection)是Windows系统下实现进程间通信、功能扩展、监控调试的核心技术之一。本文将从原理分析、代码实现、实战调试到防御方案&#x…

【ROS2实战】在中国地区 Ubuntu 22.04 上安装 ROS 2 Humble 教程

本文介绍如何在中国大陆环境下顺利安装 ROS 2 Humble,包括使用清华镜像源、解决 locale 和 GPG 密钥问题、安装 ROS 软件包以及配置自动环境加载。 🌟 ROS 2 版本简介 ROS 2 是机器人操作系统的第二代版本,目前主要有两个长期支持&#xff0…

嵌入式学习笔记 - STM32 ADC 模块工作模式总结

ADC 模式总结: 一 单ADC模式(是指ADC1,ADC2,ADC3中只有一个ADC被使用) ①单通道: 非连续模式:非连续的意思就是单次,一次转换完成后就停止转换,除非再次被软件或者被外部触发启动&#xff1b…

Python训练打卡Day26

函数专题1:函数定义与参数 知识点回顾: 函数的定义变量作用域:局部变量和全局变量函数的参数类型:位置参数、默认参数、不定参数传递参数的手段:关键词参数传递参数的顺序:同时出现三种参数类型时 到目前为…

使用Docker部署Nacos

sudo systemctl start docker sudo systemctl enable docker docker --version 步骤 2: 拉取 Nacos Docker 镜像 拉取 Nacos 镜像: 你可以从 Docker Hub 上拉取官方的 Nacos 镜像,使用以下命令: docker pull nacos/nacos-server 这会从 …

Ubuntu 添加系统调用

实验内容 通过内核编译法添加一个不用传递参数的系统调用,其功能可自定义。 (1)添加系统调用号,系统会根据这个号找到syscall_table中的相应表项。具体做法是在syscall_64.tbl文件中添加系统调用号和调用函数的对应关系。 &#…

Javascript:WebAPI

获取网页元素 queryselector queryselector是 JavaScript 中用于选择 DOM 元素的重要方法,它允许使用 CSS 选择器语法来查找页面中的元素。 一般queryselector获取的元素都是html中第一个选择器的元素 支持选择器类型:类选择器(.class) &#xff0c…

十二、Hive 函数

作者:IvanCodes 日期:2025年5月1日 专栏:Hive教程 在数据处理的广阔天地中,我们常常需要对数据进行转换、计算、清洗或提取特定信息。Hive 提供了强大的内置运算符和丰富的内置函数库,它们就像魔法师手中的魔法棒&…

Linux之Nginx安装及配置原理篇(一)

Nginx安装及配置 前情回顾 首先针对Nginx进程模型,我们回顾一下它的原理机制,我们知道它是通过Master通过fork分发任务节点给予work节点,然后work节点触发了event事件,之后通过一个access_muttex互斥锁,来单线程调用我…