文章目录

  • 前言
  • 一、UCF101数据集简述及下载
  • 二、使用Conv3D来处理
    • 0. 装好各种包
    • 1. 修改main.ipynb的path路径代码,然后运行main.ipynb的全部代码
    • 2. 修改prediction.ipynb的path路径代码,然后运行prediction.ipynb的全部代码
    • 3. 运行check_video_predictions.ipynb代码
    • 4. 模型训练好后,可以使用replot_score_loss.ipynb来进行绘图
    • 5. 我跑此项目的情况
  • 三、使用CRNN来处理
    • 0. 装好各种包
    • 1. 修改main.ipynb的path路径代码,然后运行main.ipynb的全部代码
    • 2. 修改prediction.ipynb的path路径代码,然后运行prediction.ipynb的全部代码
    • 3. 运行check_video_predictions.ipynb代码
    • 4. 模型训练好后,可以使用replot_score_loss.ipynb来进行绘图
    • 5. 我训练此CRNN的情况

前言

最近在研究使用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的占用率如下:

使用UCF101完成的视频动作分类识别相关推荐

  1. C3D:视频动作分类demo实现

    C3D:视频动作分类demo实现 C3D这个网络是来自于learning Spatiotemporal feature with 3DConvolutional Networks这篇文章,我也对这篇文 ...

  2. 基于PyTorch搭建CNN实现视频动作分类任务代码详解

    数据及具体讲解来源: 基于PyTorch搭建CNN实现视频动作分类任务 import torch import torch.nn as nn import torchvision.transforms ...

  3. CNN(卷积神经网络)在视频动作分类中的应用

    简介 Large-scale Video Classification with Convolutional Neural Networks Fusion Method Multi-resolutio ...

  4. 视频动作行为识别简述

    视觉行为识别是对已经分割好的视频片段进行动作行为分类,这类似于图像识别,图像识别是对给定的图像进行分类,判断该图像属于预定义类别集合中的哪个类别.相对图像分类来说,图像目标检测更复杂的多,目标检测不仅 ...

  5. 基于PyTorch搭建CNN实现视频动作分类任务 有数据有代码 可直接运行

    目录 介绍 任务描述 数据集 运行环境 模型概述

  6. 基于CNN实现视频动作分类任务

    前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...

  7. 视频动作识别--Towards Good Practices for Very Deep Two-Stream ConvNets

    Towards Good Practices for Very Deep Two-stream ConvNets http://yjxiong.me/others/action_recog/ http ...

  8. 视频动作识别--Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

    Temporal Segment Networks: Towards Good Practices for Deep Action Recognition ECCV2016 https://githu ...

  9. 视频动作识别--Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos NIPS2014 http://www.robots.ox.ac. ...

最新文章

  1. Keras图像分割实战:数据整理分割、自定义数据生成器、模型训练
  2. 基于OpenGL编写一个简易的2D渲染框架-03 渲染基本几何图形
  3. leetcode算法题--Binary Tree Paths
  4. java同名不同包文件_java – 如何从不同的JAR读取同名的几个资源文件?
  5. PrepareStatement 和Statement 的区别?
  6. VMware-构建下一代的服务器虚拟化平台
  7. 喜庆红色主题新年春节晚会年会背景素材(PSD分层格式)
  8. 【leecode】小练习(简单8题)
  9. git管理github仓库详解
  10. 数据库服务器位置,怎么查看服务器数据库的位置
  11. 楪祈机器人_饥荒联机版罪恶王冠楪祈MOD下载_饥荒楪祈人物MOD下载_玩游戏网
  12. android 日期控件计算星座,21. “我”模块(二)之星座选择
  13. MIT molecular Biology 笔记8 RNA剪接
  14. wps教育版支持latex公式啦
  15. SEO项目管理,该问自己的几个问题?
  16. 华硕 fx-pro(GL552VW) 修改BIOS,关闭超线程
  17. iso计算机术语简单解释,计算机网络知识(上)
  18. 电商后台管理系统(一)项目搭建
  19. Java多线程实现跑步比赛【比赛详解】
  20. HGAME2020第一周杂项题——克苏鲁神话

热门文章

  1. 西门子PLC的MODBUS RTU和modbusTCP通讯
  2. 尹世明:融合生态力量,引领智能变革
  3. 解读ICLR 2021:DoodlerGAN创意草图开山之作
  4. 双层for循环优化版
  5. java教学辅助系统的源码_基于jsp的教学辅助系统-JavaEE实现教学辅助系统 - java项目源码...
  6. tcp协议的三次握手和四次握手
  7. 专利挖掘文章研读笔记
  8. 局部描述子评价数据集HPatches介绍(一)
  9. PE文件学习笔记(五):导入表、IAT、绑定导入表解析
  10. 《自动驾驶感知算法实战专栏(源代码)》专栏概述