使用UCF101完成的视频动作分类识别


前言

最近在研究使用UCF101数据集来训练出一个视频动作分类的神经网络。之前因为自己花了1.5w组了台台式就可以轻松跑深度学习,没想到果然是初生牛犊不怕虎,体验过才知道原来是这么吃GPU的…


提示:以下是本篇文章正文内容,下面我的案例可供参考

一、UCF101数据集简述及下载

    UCF101是一个常用的视频分类数据集,包含101个不同的动作类别。每个类别包含大约100到300段视频片段,总共约有13,000个视频片段。这些视频片段来自YouTube上的真实数据,每个视频片段的长度为大约10秒至30秒不等,分辨率为320x240或640x480。UCF101的目的是为了促进计算机视觉和机器学习领域中的行动识别研究。

    把UCF101里的视频全部切分成RGB图像就如下图所示了,本来我整理好放到阿里网盘的,但是发现阿里网盘目前不支持分享zip文件,那只好把切分好的全部RGB图像合包放到百度网盘了(无奈)。并且我进行了以3GB为大小的分包,但是用autoDL控制上传死活上传不到百度网盘,报错文件上传失败upload canceled,后面用自己电脑上传成功了。

链接: https://pan.baidu.com/s/1e13XBc5-sl4M4-s7ecYp-Q 提取码: ir6x

下载完后,windows就直接在同一个文件夹下解压即可,linux下先使用cat zip.* > jpegs_256.zip,接着解压就行。

二、使用Conv3D来处理

项目代码链接

0. 装好各种包

在终端下运行:

pip install numpy
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/cu111/torch_stable.html
pip install matplotlib==3.4.3
pip install scikit-learn==1.1.3

functions.py包含自定义的类库,各种工具函数。

1. 修改main.ipynb的path路径代码,然后运行main.ipynb的全部代码

# set path
# data_path为切割好的全部RGB图像目录路径
#data_path = "./jpegs_256/"    # define UCF-101 RGB data path
data_path = "../temp/jpegs_256/"
action_name_path = './UCF101actions.pkl' #全部动作的名字标签
save_model_path = "./CRNN_ckpt/" #模型参数存放路径
#fnames = os.listdir(data_path)
#fnames

    接着运行main.ipynb的全部代码即可,功能主要为完成epochs=15轮的迭代,保存每一轮的神经网络各层的参数pth,并且保存各轮的损失率loss和准确率score。最后绘制折线图,绘制以训练时期为横坐标、纵坐标分别为损失值和准确率为的两个折线图。
在这里插入图片描述

2. 修改prediction.ipynb的path路径代码,然后运行prediction.ipynb的全部代码

接下来使用UCF101的视频作为预测对象,扔进模型进行预测。

# set path
# data_path为预测的视频切割后的RGB图像目录路径
#data_path = "./jpegs_256/"    # define UCF-101 RGB data path
data_path = "../temp/jpegs_256/"
action_name_path = './UCF101actions.pkl' #全部动作的名字标签
save_model_path = "./CRNN_ckpt/" #将要使用的模型参数存放路径
#fnames = os.listdir(data_path)
#fnames

然后跑完prediction.ipynb的全部代码,会生成包含真实动作名称和预测动作名称文件UCF101_videos_prediction.pkl,用于接下来的结果可视化处理。

3. 运行check_video_predictions.ipynb代码

会提供所有真实标签和预测标签的结果表
在这里插入图片描述
并且会给出最后最后的预测准确率Accuracy
在这里插入图片描述

4. 模型训练好后,可以使用replot_score_loss.ipynb来进行绘图

    可以使用迭代中产生的trantest的损失率和准确率绘制折线图,效果同1的效果。
并且可以找出最准确的模型迭代编号,比如下图为编号14。也就准确率最高的迭代编号为14(3dcnn_epoch14、优化器参数3dcnn_optimizer_epoch14),那就可以使用第14号的pth文件来完成预测,效果我相信会不错,不过Conv3D还不是很给力,至少我训练的结果测试的结果才43%多而已,也可能是迭代次数只有15次的缘故()
在这里插入图片描述

5. 我跑此项目的情况

硬件配置如下,数据盘跑的时候给到的是100GB:
在这里插入图片描述
所花时间(从尾减去头的那段时间段)和GPU的占用率如下:
在这里插入图片描述

三、使用CRNN来处理

项目代码链接

0. 装好各种包

和上面的包情况一致。

1. 修改main.ipynb的path路径代码,然后运行main.ipynb的全部代码

# set path
# data_path为切割好的全部RGB图像目录路径
#data_path = "./jpegs_256/"    # define UCF-101 RGB data path
data_path = "../temp/jpegs_256/"
action_name_path = './UCF101actions.pkl' #全部动作的名字标签
save_model_path = "./CRNN_ckpt/" #模型参数存放路径
#fnames = os.listdir(data_path)
#fnames

    接着运行main.ipynb的全部代码即可,功能主要为完成epochs=15轮的迭代,保存每一轮的神经网络各层的参数pth,并且保存各轮的损失率loss和准确率score。最后绘制折线图,绘制以训练时期为横坐标、纵坐标分别为损失值和准确率为的两个折线图。
在这里插入图片描述

2. 修改prediction.ipynb的path路径代码,然后运行prediction.ipynb的全部代码

接下来使用UCF101的视频作为预测对象,扔进模型进行预测。

# set path
# data_path为预测的视频切割后的RGB图像目录路径
#data_path = "./jpegs_256/"    # define UCF-101 RGB data path
data_path = "../temp/jpegs_256/"
action_name_path = './UCF101actions.pkl' #全部动作的名字标签
save_model_path = "./CRNN_ckpt/" #将要使用的模型参数存放路径
#fnames = os.listdir(data_path)
#fnames

然后跑完prediction.ipynb的全部代码,会生成包含真实动作名称和预测动作名称文件UCF101_videos_prediction.pkl,用于接下来的结果可视化处理。
在这里插入图片描述

3. 运行check_video_predictions.ipynb代码

会提供所有真实标签和预测标签的结果表
在这里插入图片描述

并且会给出最后最后的预测准确率Accuracy
在这里插入图片描述

4. 模型训练好后,可以使用replot_score_loss.ipynb来进行绘图

    可以使用迭代中产生的trantest的损失率和准确率绘制折线图,效果同1的效果。
并且可以找出最准确的模型迭代编号,比如下图为编号93。也就准确率最高的迭代编号为93),那就可以使用第93号的pth文件来完成预测,效果我相信会不错,CRNN还是行的,我训练的结果测试的结果是66.34%,迭代次数为120。训练CRNN训练了好久,也花了不少钱。
在这里插入图片描述

5. 我训练此CRNN的情况

硬件配置如下,数据盘跑的时候给到的是100GB:
在这里插入图片描述

所花时间(从尾减去头的那段时间段)和GPU的占用率如下:
在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
UCF101是一个广泛使用视频动作识别数据集,其中包含101个动作类别,包括从常见的运动动作到日常生活中的各种活动。这个数据集的目的是为了促进动作识别算法的发展和评估。 UCF101数据集中的每个视频都是以RGB的格式存储的,即每个视频帧都有R(红色)、G(绿色)和B(蓝色)三个通道组成的图像。因此,如果你想要进行UCF101数据集中的rgb视频下载,你需要下载整个数据集,并将视频帧保存为RGB图像。 首先,你可以搜索UCF101数据集的官方网站或相关的研究论文,以找到可以下载UCF101数据集的链接或资源。通常,官方网站或研究论文会提供数据集的下载链接和详细的使用说明。 一旦你找到了可用的下载链接,你可以通过单击链接来下载数据集的压缩文件。请注意,UCF101数据集非常大,通常需要大量的存储空间来保存所有的视频帧。因此,在下载数据集之前,请确保你有足够的存储空间。 下载完成后,你可以使用相应的软件来解压缩数据集的压缩文件。解压缩后,你将得到包含所有视频帧的文件夹。每个视频帧都被保存为RGB图像,你可以通过访问这些图像来获取RGB视频。 总结来说,要下载UCF101数据集中的RGB视频,你需要找到可用的下载链接,下载数据集的压缩文件,解压缩文件并访问保存为RGB图像的视频帧。这将需要大量的存储空间和相关的软件来完成。希望这个回答对你有帮助!
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重剑DS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值