行为识别C3D代码(pytorch)实现过程及常见错误

article/2025/10/14 15:33:36

行为识别C3D代码(pytorch)实现过程及常见错误

1.C3D网络代码

C3D(pytorch)实现代码链接:

C3D代码

2.C3D代码复现过程

(1)环境版本要求
pytorch:3.5及以上
opencv:3.4.2(我是这样的,其他低点的版本应该也可以)
tensorboard:2.4
scikit-learn:0.23.2

(2)数据集的制作

首先将UCF-101的数据集结构存储为以下形式:在这里插入图片描述
建议:如果代码中mypath路径不想更改的话,新建一个文件夹(/path/to/),存放UCF-101知道的路径是/path/to/UCF-101。
(很重要)注意:所有的路径尤其是mypath.py的路径不能有中文,中文会导致cv.imread出错,无法将图片存储到文件夹中。
现在网上下载UCF-101数据集超级慢,如果大家需要可以加关注,留qq邮箱,给你发UCF-101压缩包。
目前UCF-101数据集不能发送原因:
(1)因为该数据集在某盘属于敏感文件不能发送;
(2)QQ邮箱中只能发送最大3g文件,而UCF-101是6g文件。
解决方法(获取UCF-101的两种方法)

  1. 需要我本人自己将其压缩分卷成10个700mb压缩包,大家下载十个压缩包后必须要把这10个压缩包放在一个文件夹内,解压任意一个文件即可全部解压。最后就成为一个完整的UCF-101数据集。 下载这10个UCF-101压缩包的地址:UCF-101的十个压缩包
  2. 需要我本人自己将其压缩分卷成10个700mb压缩包,然后一个一个的以邮箱的形式发送给大家,大家下载十个压缩包后必须要把这10个压缩包放在一个文件夹内,解压任意一个文件即可全部解压。最后就成为一个完整的UCF-101数据集
    最后谢谢大家的关注!!!

(3)下载预训练model
预训练model下载地址:
预训练model
接下来在之前所创建好的文件下(/path/to)下再创建一个Models文件夹存放预训练模型,最终的预训练模型是/path/to/Models/ucf101-caffe.pth

(4)处理UCF-101数据集
处理UCF-101数据集就是将视频按一定的帧次分割成一张一张图片。该代码所在处是dataset.py。
首先对mypath.py进行修改因为之前创建了文件夹,所以root-dir和model_dir的路径不用更改。只需要在/path/to/文件夹下创建一个VAR文件夹,再VAR文件夹中创建UCF-101,最终的路径是/path/to/VAR/ucf101。这个路径就是out_dir的路径,所以mypath里面的路径不需要更改了。
对dataset.py代码更改如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这些改完之后,运行database.py,处理时间比较长,可以先做点其他的事情。最后分割图片后的结果如图:
在这里插入图片描述

(5)对inference.py和train.py文件改动
接下来就是在预训练之前所做的代码改动问题了,按我写的代码改动即可。
先对inference.py更改
在这里插入图片描述
对train.py的更改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
已更改完成

(6)运行程序
在命令行:train.py即可,视频处理完之后,将process的True改为False,以后直接训练即可,不需要再次对视频处理为图片。
最后运行程序如下图
在这里插入图片描述

C3D的复现完成,谢谢大家留言评论

常见错误

1.os.listdir(os.path.join(self.output_dir, ‘train’, video_class, video)))[0])
IndexError: list index out of range。

问题原因:表示没有将视频分割的图片存储到文件夹中。
解决方法:mypath的路径都是英文的,不能出现中文,否则cv,write的时候图片写不进文件夹中去。
2.LongTensor的问题
问题原因:标签的类型应该是LongTensor,而不是Tensor,故需要更改、
解决方法:看以上的train.py的更改图片。
3.GPU内存不够,处理数据太大问题
问题原因:batch_size太大
解决方法:按照以上train.py中第一张图片的batch_size更改。

谢谢大家,有什么问题留言即可。一起加油!!!


http://chatgpt.dhexx.cn/article/XVyLLWhp.shtml

相关文章

C3D的视频分类

很久之前做了C3D的视频分类,现在详细把整个项目的细节描述一下。 首先介绍一下C3D:对于一段视频来说,它是连续的帧图像叠加起来的,所以可以考虑在生成通道图像的时候,把多帧图像叠加的特性讨论进去。 一个视频段输入&…

C3D源码解读(基于3D卷积的动作识别)

UCF数据集下载地址:https://www.crcv.ucf.edu/data/UCF101.php 1.推理效果与项目配置 执行inference.py,需要指定3个参数,第一个是标签文件地址,存储了各个标签的含义,第二个是权重文件地址,第三个是要进行推理的视频…

C3D代码总结(Pytorch)

C3D代码总结(Pytorch) github:https://github.com/Niki173/C3D 介绍数据介绍文件介绍具体操作流程运行结果 介绍: 本次C3D模型用的是pytorch框架,我们在UCF101和HMDB51数据集上训练这些模型,本次实验以U…

C3D论文笔记

论文链接:http://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf 代码链接:https://github.com/jfzhang95/pytorch-video-recognition 1. C3D是什么? C3D,全称Convolutional 3D,即3D卷积。3D卷积方法是把视频划分成很多固定…

C3D网络介绍

1. 模型简介 C3D模型广泛用于3D视觉任务。C3D网络的构造类似于常见的2D卷积网,主要区别在于C3D使用像卷积3D这样的3D操作,而2D卷积网则是通常的2D架构。要了解有关C3D网络的更多信息,您可以阅读原始论文学习3D卷积网络的时空特征。 3D卷积图…

视频分析模型(行为识别):C3D

C3D 文章目录 C3D1. 简介1.1 背景1.2 C3D特点1.3 视频描述符1.4 C3D的结果 2. 架构2.1 工作流程2.2 网络结构2.3 3D卷积和池化2.4 kernel 的时间深度 3. 可视化3.1 特征图3.2 特征嵌入 4. 应用场景4.1 动作识别4.2 动作相似度标注4.3 场景和目标识别4.4 运行时间分析 1. 简介 …

C3D论文精读

论文地址:https://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf Abstract 作者的研究结果有三个方面: 1)与二维相比,三维卷积网更适合时空特征学习;2)所有层具有333的小卷积核的同构架构是3D卷积网的最佳架构之一;3)学习到的特征&am…

基于C3D网络的视频分析与动作识别

卷积神经网络(CNN)被广泛应用于计算机视觉中,包括分类、检测、分割等任务。这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维)。而对于基于视频分析的问题,2D convolutio…

《QDebug 2022年12月》

一、Qt Widgets 问题交流 二、Qt Quick 问题交流 1、在 C 中关联 QQuickWindow 的 closing 信号提示 "使用了未定义类型QQuickCloseEvent" 因为 closing 信号中的参数类型是 private 模块中定义的,但是通过第二句提示我们知道找到了完整定义才能使用 Q_…

4.4 案例8 用qDebug()输出信息

本案例对应的源代码目录:src/chapter04/ks04_04。 在开发C/S(Client/Server,客户端/服务端)模式的软件时,服务端程序(有时也称作服务)经常运行在两种模式下。 (1)终端模…

Qt扫盲-QDebug理论总结

QDebug理论使用总结 一、概述二、使用1. 基础使用2. 格式化选项3.将自定义类型写入流 一、概述 每当开发人员需要将调试或跟踪信息写入设备、文件、字符串或控制台时,都会使用QDebug。这个就可以方便我们调试,基本上Qt所有的内容都能通过调试打印出来&a…

Qt重定向QDebug,自定义一个简易的日志管理类

0.前言 相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等。 在 Qt4 中使用 qInstallMsgHandler 函数设置重定向的函数指针: typedef void (*QtMsgHandler)(QtMsgType,…

qDebug 控制台输出

做个小笔记:qDebug 控制台输出 Ⅰ&#xff1a;*.pro文件中添加 win32:CONFIG console Ⅱ&#xff1a;配置项目运行设置&#xff0c;将Run in terminal 复选框打勾 Ⅲ&#xff1a;添加头文件 #include <QDebug> Ⅳ&#xff1a;用qDebug()<<"xxxx";输…

Qt ——debug调试

程序调试&#xff1a; 方法一&#xff1a;断点调试法方法二&#xff1a;使用qDebug()函数 方法一&#xff1a;断点调试法 我们可以在程序加断点&#xff0c;然后再利用单步调试查看变量的值是否异常。 1. 设置断点。 可以左击相应的代码行前的区域&#xff08;下图用红色框标…

jadx反编译—下载和使用(傻瓜教程,非常详细)

原文地址 一、在GitHub上直接下载 下载地址 可以下这个版本&#xff1a; 二、运行图形化界面 1、将zip文件解压后定位到在lib文件夹中&#xff0c;在此处打开命令行 2、运行jadx-gui-0.7.1.jar&#xff08;前提是已经装好了JDK1.8&#xff09; 命令如下&#xff1a; <sp…

Android APK 反编译工具 JADX

文章目录 JADX 介绍JADX 安装JADX 使用补充APK 目录结构含义APK 打包流程 JADX 介绍 GitHub 地址&#xff1a;https://github.com/skylot/jadx JADX 支持将 APK, dex, aar, zip 中的 dalvik 字节码反编译为 Java 代码&#xff0c;也支持反编译 AndroidManifest.xml 和 resource…

jadx-gui 重命名功能

jad-gui 是大家常用的一款反编译工具&#xff0c;其中有些小使用技巧可以帮助大家更快的“学习”知识。 安装 方法参考项目GitHub主页 重命名 最新的 1.2.0 版本支持了方法、类、字段的重命名&#xff0c;这是一个非常有用的功能&#xff0c;之前反编译出来的都是混淆后的名…

Android 反编译神器jadx的使用

一、前言 今天介绍一个非常好用的反编译的工具 jadx 。jadx 的功能非常的强大&#xff0c;对我而言&#xff0c;基本上满足日常反编译需求。 jadx 优点&#xff1a; 图形化的界面。拖拽式的操作。反编译输出 Java 代码。导出 Gradle 工程。 这些优点都让 jadx 成为我反编译…

jadx工具windows下载

Release v1.2.0 skylot/jadx GitHubDex to Java decompiler. Contribute to skylot/jadx development by creating an account on GitHub.https://github.com/skylot/jadx/releases/tag/v1.2.0选择第三个jadx-gui-1.2.0-with-jre-win.zip解压exe可正常使用

jadx反编译—下载和使用

一、在GitHub上直接下载 https://github.com/skylot/jadx 可以下这个版本&#xff1a; 二、运行图形化界面 1、将zip文件解压后定位到在lib文件夹中&#xff0c;在此处打开命令行 2、运行jadx-gui-0.7.1.jar&#xff08;前提是已经装好了JDK1.8&#xff09; 命令如下&#xf…