视频分类——C3D使用

整体比较分散,可能很多源码都需要修改,需要有耐心。

一、数据准备

PS

调研后,上手容易代码比较简洁的是:https://github.com/Niki173/C3D/tree/main

因为源码很多参数都写死到了源码中,没有解耦,并且默认只支持ucf101和hmdb51两个数据集,所以建议最快的方式是将自己的数据集命名为ucf101然后修改对应的参数。以下均以此为前提进行说明。

1、数据组织结构

一般建议是准备原始视频文件,然后源码会自动拆帧为图片,这里以ucf101为例

抽帧前的视频组织形式,不区分train/val/test, 不同类别的视频数据放到不同的文件夹中。

Ucf101

—class_name_1

——video_1

——…

—...

PS:这里要注意视频长度不要过长,因为源码是一次性将一个视频所有帧读到内存然后进行crop指定帧数(16帧)和大小(112),所以也要看你的特征不被crop掉(源码是先缩放到128*171然后随机crop 112*112)

源码处理完后的路径如下,要注意默认源码会按照4帧间隔,6:2:2(近似)分割train/val/test集合。

Ucf101

—train

——class_name_1

———video_frames_dir_1

———…

——...

—val

——class_name_1

———video_frames_dir_1

———…

——…

—test

——class_name_1

———video_frames_dir_1

———…

——...

2、修改数据源和类别数(必选)

https://github.com/Niki173/C3D/blob/main/train.py#L28

建议复用ucf101,只修改对应的num_classes变量的值。

3、修改label信息(必选)

https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L58

源码仅仅实现了ucf101、hmdb51,这里有两种方式,最简单的就是复用ucf101的名字,只不过是自己的数据,然后删除掉源码的“dataloaders/ucf_labels.txt ”文件,让源码自己根据数据重新生成,也可以自己修改这个文件,文件的格式如下:

4、修改视频文件路径(必须)

这里源码的处理逻辑是自动一级一级检查图片帧目录,是否存在,并且会检查第一个类别的第一个视频的图片帧的分辨率是否符合要求。

https://github.com/Niki173/C3D/blob/main/mypath.py

5、修改视频帧尺寸(可选)

逻辑是抽帧的时候resize成这个尺寸,然后训练的时候中心crop成112。源码需要修改两个地方。

1)https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L31

2)https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L105

    6、修改归一化特征值(可选)

    https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L208

     

7、修改是否需要test(可选)

一般现实工程数据较少时或者上线有其他测试集,建议关闭test分割,方式就是注销相关代码,下面标红框。

https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L115

 

https://github.com/Niki173/C3D/blob/main/train.py#L23

https://github.com/Niki173/C3D/blob/main/train.py#L100

注销红框

8、修改抽帧间隔(可选)

默认是4秒。

https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L170

 二、训练超参数

https://github.com/Niki173/C3D/blob/main/train.py#L21

三、网络结构

    1、C3D结构

    2、R(2+1)D结构

    3、区别

    1)R2D模块就是传统的2d卷积,将输入c×l×h×w看作是cl×h×w(把多张当作一整张),只是将2d卷积作用于multi-frames上。

    2)f-R2D,采取R2D相反的方式,分别对每帧做操作,在最后全局池化层在做所有帧的信息融合。

    3)C3D:就是将时间维度单独成一维。网络结构如上面的图。

    4)R3D模块就是前面讲的C3D模块,只不过是放到ResNet网络中。

    5)R(2+1)D:作者设计了2d卷积和1d卷积filter个数的匹配公式。相比于R3D,虽然参数没变,但由于R(2+1)D添加更多Relu激活层,模型的表达能力应该更强,同时也更容易训练优化。

    6)P3D:R(2+1)D更接近P3D-A,把R(2+1)D都设计为相同的block,但P3D的第一层使用的是2d卷积。

    

开源实现

https://github.com/HHTseng/video-classification

https://github.com/kenshohara/3D-ResNets-PyTorch

几个不同网络区别:[论文笔记] C3D | P3D | R2D - 知乎

C3D代码总结(Pytorch)-CSDN博客

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

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

相关文章

5.20Git

版本控制工具Git,其他的工具还有SVN 共享代码,追溯记录,存储.c文件 Git实现的功能:回溯(以前某个时间节点的数据情况)共享(大家共享修改) Git:80% SVN&#xff…

The Missing Semester of Your CS Education(计算机教育中缺失的一课)

Shell 工具和脚本(Shell Tools and Scripting) 一、shell脚本 1.1、变量赋值 在bash中为变量赋值的语法是foobar,访问变量中存储的数值,其语法为 $foo。 需要注意的是,foo bar (使用空格隔开)是不能正确工作的&…

基于灰狼优化算法优化RBF(GWO-RBF)的数据回归预测(多输入多输出)

代码原理及流程 基于灰狼优化算法优化多输入多输出(MIMO)的RBF神经网络的数据回归预测,可以采取以下步骤: 1. 数据准备:准备包含多个输入特征和多个输出目标的数据集,确保数据已经经过预处理和归一化。 …

CSS基础(第二天)

Emmet语法 快速生成HTML结构语法 1. 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多个相同标签 加上 * 就可以了 比如 div*3 就可以快速生成3个div 3. 如果有父子级关系的标签&#xff0c;可以…

算法刷题笔记 数的范围(C++实现)(二分法重要例题)

文章目录 题目描述题目思路题目代码&#xff08;C&#xff09;题目感想 题目描述 给定一个按照升序排列的长度为n的整数数组&#xff0c;以及q个查询。对于每个查询&#xff0c;返回一个元素k的起始位置和终止位置&#xff08;位置从0开始计数&#xff09;。如果数组中不存在该…

自动化测试--利用pytest实现整条业务链路测试

​ 概述 前面一章讲解了单个接口的测试&#xff0c;但是实际项目中&#xff0c;因为权限和登录状态的限制&#xff0c;大部分接口没办法直接访问到&#xff0c;这时候我们想访问到一个系统的接口&#xff0c;就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息…

vivado2020.2创建hls仿真工程实现led闪烁

下载vivado2020.2后会有这个出现在桌面 点击进入创建工程&#xff0c;这里注意不要有前面的\我再复制的时候复制错了导致创建失败 按f光标就会跳转到下一个f开头的函数处&#xff0c;要查找其他函数也同理 生成了一个synthesis summary文件 找到目录下生成的.v文件 an 点…

Pod进阶——资源限制以及探针检查

目录 一、资源限制 1、资源限制定义&#xff1a; 2、资源限制request和limit资源约束 3、Pod和容器的资源请求和限制 4、官方文档示例 5、CPU资源单位 6、内存资源单位 7、资源限制实例 ①编写yaml资源配置清单 ②释放内存&#xff08;node节点&#xff0c;以node01为…

有些错误,常犯常新、常新常犯:记录一个使用element-plus的tooltip组件的错误

使用element-plus的tooltip组件&#xff0c;最开始的写法是这样的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

【C语言】程序员自我修养之文件操作

【C语言】程序员自我修养之文件操作 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C语言学习之路 文章目录 【C语言】程序员自我修养之文件操作前言一.文件介绍1.1为什么使用文件1.2文件分类1.3二进制文件和文本文件 二.文件的打开和关闭2.…

桌面藏线大法

1有线改无线&#xff1a; 蓝牙鼠标 蓝牙键盘 蓝牙耳机 2将排插贴到桌子底下 购物软件上搜 3断舍离 不要的电子产品统统扔掉 4 洞洞板和挂钩 这个不用介绍了

暴雨信息液冷计算解决方案亮相CCIG 2024

5月24日&#xff0c;2024中国图象图形大会&#xff08;CCIG&#xff09;在陕西西安正式开幕。作为涵盖图像图形各专业领域的综合性的全国性学术会议&#xff0c;CCIG面向开放创新、交叉融合的发展趋势&#xff0c;为图像图形相关领域的专家学者和产业界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些优势?智慧医疗云(HIS)低成本与安全保障的完美结合

JavaSpring MySQL MyCat云HIS有哪些优势&#xff1f;智慧医疗云(HIS)低成本与安全保障的完美结合 云HIS的优点包括节省成本、便捷高效、稳妥安全等。通过云HIS&#xff0c;医疗机构无需在本地建立机房、购买服务器和应用软件&#xff0c;降低了硬件和人力成本。同时&#xff0…

虚拟化介绍

虚拟化介绍 概述概念特点优势实现手段 虚拟化架构概述寄居虚拟化架构裸金属虚拟化架构操作系统虚拟化架构混合虚拟化架构几种虚拟化架构的比较虚拟化架构与虚拟化技术的关系 虚拟化技术分类服务器虚拟化技术分类 存储虚拟化技术分类网络虚拟化技术分类 服务器虚拟化技术处理器虚…

开源软件 | 一文彻底搞懂许可证的定义、起源、分类及八大主流许可证,让你选型不再头疼

为什么开源软件会存在许可证&#xff0c;许可证的起源与产生目的是为了解决什么问题&#xff1f;许可证的定义又是怎样的&#xff1f;什么是Copyleft&#xff0c;与Copyright有何区别&#xff1f;开源软件常见的许可证有哪些&#xff1f;这些许可证都有什么特点&#xff1f;接下…

Zabbix实现7x24小时架构监控

上篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/138774511 文章目录 Zabbix功能介绍Zabbix平台选择安装Zabbix监控端部署MySQL数据库Zabbix参数介绍登录Zabbix WEBWEB界面概览修改WEB界面语言添加被控主机导入监控模板主机绑定模板查看主机状态查看监控数据解…

代码随想录算法训练营第三十四天 | 理论基础、455.分发饼干、376、摆动序列、53.最大子序和

目录 理论基础 455.分发饼干 思路 代码 376.摆动序列 思路 代码 53.最大子序和 思路 代码 理论基础 代码随想录 455.分发饼干 代码随想录 思路 可以是大饼干优先满足大胃口&#xff0c;也可以是小饼干优先满足小胃口。 代码 class Solution:def findContentChildre…

ArkUI-X开发指南:【SDK配置和构建说明】

ArkUI-X SDK配置和构建说明 ArkUI-X SDK是ArkUI-X开源项目的编译产物&#xff0c;可将ArkUI-X SDK集成到现有Android和iOS应用工程中&#xff0c;使开发者基于一套ArkTS主代码&#xff0c;就可以构建支持多平台的精美、高性能应用。SDK内容包含ArkUI跨平台运行时&#xff0c;组…

B站自动回复插件_无需千粉,轻松适配引流拉新资源分享

项目介绍 B站关键词自动回复插件&#xff0c;无需千粉&#xff0c; 很适合做流量做引流做私欲的朋友&#xff0c; 前期没有千粉是无法开启官方自动回复的&#xff0c; 适当的情况下可以用这个插件顶一下&#xff0c; 三联好评领取资源的打法真的超级涨粉&#xff0c; 感谢插件…

HAL库点LED灯

文章目录 一、创建CubeMX项目操作步骤1.STM32CubeMX创建工程2.选择芯片3.Pinout & Configuration配置4.Clock Configuration配置5.Project Manager配置 二、实验&#xff08;一&#xff09;LED流水灯1.Keil修改代码2.实验现象3.keil波形仿真 &#xff08;二&#xff09;2只…