SlowFast-入门1-动作识别-部署与测试

2023-10-24 12:11

本文主要是介绍SlowFast-入门1-动作识别-部署与测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SlowFast-部署与测试

目录

  • SlowFast-部署与测试
    • 简介
    • 安装部署
    • 测试
      • 准备pkl文件并上传
      • 上传ava.json文件
      • 准备yaml文件
      • 准备素材
      • 运行
    • 运行结果
    • 后记——不重要的痛苦的过程

SlowFast系列:
SlowFast-入门1-动作识别-部署与测试
Slowfast-入门2-学论文【SlowFast Networks for Video Recognition】

简介

GitHub:
https://github.com/facebookresearch/SlowFast
官方给的运行示例图是这样的。
特点是:识别的动作为原子动作;每个人同一时刻可能被识别出多个动作。
在这里插入图片描述

安装部署

部署平台:极链AI云

部署机器:Tesla V100
部署环境:Pytorch 1.6.0, Python 3.7, CUDA 10.2
这里注意!!!!!!!!
选择Pytorch框架版本可以为1.6.0的机器,这样才能选择到3.7的Python。
由于Detectron2需要Pytorch>=1.7,所以之后会需要再升Pytorch的版本。
但一定要选择Python为3.7!!!!!!!!
要先保证Python为3.7!!!!!!!!在这里插入图片描述

安装过程:

pip install 'git+https://github.com/facebookresearch/fvcore'
pip install simplejson
conda install av -c conda-forge
y
pip install -U iopath
pip install psutil
pip install moviepy
pip install tensorboard
pip install pytorchvideo
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
git clone https://github.com/facebookresearch/detectron2.git
pip install -e detectron2
git clone https://github.com/facebookresearch/SlowFast.git
cd SlowFast
python setup.py build develop

安装结束后,成功安装好了fvcore、detectron2、slowfast。
有提示以下错误。
error: Could not find suitable distribution for Requirement.parse(‘PIL’)
但是我看安装教程中,没有特意提到这个PIL库,而且用pip list查看的时候,已经有Pillow库了。
Pillow、PIL更多了解
然后后续的推断测试中也没影响,爷累了,所以先不管他。

安装完后,再用pip list查看:

fvcore                             0.1.5
detectron2                         0.5                 /root/detectron2
sklearn                            0.0
slowfast                           1.0                 /root/SlowFast
torch                              1.7.1+cu110
torchaudio                         0.7.2
torchvision                        0.8.2+cu110

测试

基本安装部署了,接下来要怎么用呢。
Getting Started with PySlowFast
This document provides a brief intro of launching jobs in PySlowFast for training and testing. Before launching any job, make sure you have properly installed the PySlowFast following the instruction in README.md and you have prepared the dataset following DATASET.md with the correct format.

准备pkl文件并上传

看了一下DATASET.md里的介绍,有Kinetics(132GB)、AVA(好像是500GB+)、Charades、Something-Something V2。
下载、处理,都很艰难。
博主试过按照AVA的准备方法准备。下载、裁剪、提取帧、下载标注文件(这个还好)。原始视频19GB多的,整套流程下来电脑跑了两天多,昼夜不停的跑。
【以后有机会再写对这个部分AVA数据集的处理训练方法】

所以,先用人家官方给的,玩玩。在MODEL_ZOO.md,下载了如下的模型。
(这个表的解释,之后在解读论文的时候,可能再解释解释)
下载下来的文件名为:【SLOWFAST_32x2_R101_50_50.pkl】
下载后上传到云端。我是上传到/root/SlowFast路径。
在这里插入图片描述

上传ava.json文件

制作ava.json文件内容如下,记录了80个动作类别。
上传至/root/SlowFast/demo/AVA路径下。

{"bend/bow (at the waist)": 0, "crawl": 1, "crouch/kneel": 2, "dance": 3, "fall down": 4, "get up": 5, "jump/leap": 6, "lie/sleep": 7, "martial art": 8, "run/jog": 9, "sit": 10, "stand": 11, "swim": 12, "walk": 13, "answer phone": 14, "brush teeth": 15, "carry/hold (an object)": 16, "catch (an object)": 17, "chop": 18, "climb (e.g., a mountain)": 19, "clink glass": 20, "close (e.g., a door, a box)": 21, "cook": 22, "cut": 23, "dig": 24, "dress/put on clothing": 25, "drink": 26, "drive (e.g., a car, a truck)": 27, "eat": 28, "enter": 29, "exit": 30, "extract": 31, "fishing": 32, "hit (an object)": 33, "kick (an object)": 34, "lift/pick up": 35, "listen (e.g., to music)": 36, "open (e.g., a window, a car door)": 37, "paint": 38, "play board game": 39, "play musical instrument": 40, "play with pets": 41, "point to (an object)": 42, "press": 43, "pull (an object)": 44, "push (an object)": 45, "put down": 46, "read": 47, "ride (e.g., a bike, a car, a horse)": 48, "row boat": 49, "sail boat": 50, "shoot": 51, "shovel": 52, "smoke": 53, "stir": 54, "take a photo": 55, "text on/look at a cellphone": 56, "throw": 57, "touch (an object)": 58, "turn (e.g., a screwdriver)": 59, "watch (e.g., TV)": 60, "work on a computer": 61, "write": 62, "fight/hit (a person)": 63, "give/serve (an object) to (a person)": 64, "grab (a person)": 65, "hand clap": 66, "hand shake": 67, "hand wave": 68, "hug (a person)": 69, "kick (a person)": 70, "kiss (a person)": 71, "lift (a person)": 72, "listen to (a person)": 73, "play with kids": 74, "push (another person)": 75, "sing to (e.g., self, a person, a group)": 76, "take (an object) from (a person)": 77, "talk to (e.g., self, a person, a group)": 78, "watch (a person)": 79}

准备yaml文件

在/root/SlowFast/demo/AVA路径下,对【SLOWFAST_32x2_R101_50_50.yaml】文件进行修改:

  1. TRAIN下的CHECKPOINT_FILE_PATH,修改成上一步中下载并上传到云端的pkl文件的位置。
  2. TENSORBOARD、MODEL_VIS、TOPK这三行注释掉。
  3. 在DEMO下,注释掉WEBCAM,增加INPUT_VIDEO、OUTPUT_FILE,赋值的路径、名称可自定义。
  4. 在DEMO下,LABEL_FILE_PATH写ava.json的位置。
    在这里插入图片描述

在这里插入图片描述

准备素材

准备mp4的测试素材文件,上传到对应的文件夹。
我在/root/SlowFast路径下,创建了Video_Input、Video_Output文件夹。
在Video_Input文件夹下放了个命名为1.mp4的素材。

运行

在/root/SlowFast路径下,执行:

python tools/run_net.py --cfg demo/AVA/SLOWFAST_32x2_R101_50_50.yaml

在这里插入图片描述

运行结果

这次运行了三个视频片段。
第一个视频片段来源于《初来乍到》美剧。
第二、三个视频是成龙的打戏,下载自b站。虽然有一个视频有点糊,但是能识别出martial art就很感人。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后记——不重要的痛苦的过程

一开始我在这样的环境里配置:
Pytorch 1.7.0, Python 3.8.8, CUDA 11.0
与上面步骤是一样的(这个不需要升pytorch的那句),
最后安装slowfast的时候,也会出现PIL的问题
但是重点不是这个
运行推断的时候会出现:

Traceback (most recent call last):File "tools/run_net.py", line 6, in <module>from slowfast.utils.misc import launch_jobFile "/root/SlowFast/slowfast/utils/misc.py", line 21, in <module>from slowfast.models.batchnorm_helper import SubBatchNorm3dFile "/root/SlowFast/slowfast/models/__init__.py", line 6, in <module>from .video_model_builder import ResNet, SlowFast  # noqaFile "/root/SlowFast/slowfast/models/video_model_builder.py", line 18, in <module>from . import head_helper, resnet_helper, stem_helperFile "/root/SlowFast/slowfast/models/head_helper.py", line 8, in <module>from detectron2.layers import ROIAlign
ImportError: cannot import name 'ROIAlign' from 'detectron2.layers' (unknown location)

感谢这位博主的这篇博客:
https://blog.csdn.net/WhiffeYF/article/details/113527759
让我还是回去从Python3.7开始配,即使安装detectron2的时候,要先将Pytorch升级为1.7.0,但是就不会出现这个难搞的错误了。

还有升级为Pytorch1.7的时候,用的是这句:

pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

因为当时,单纯升级pytorch为1.7,不同时将cuda10.2升级为11的时候,会出现Could not run ‘torchvision::nms’这个问题。
幸好这个我之前遇到过解决过了。
在这篇博客:
https://blog.csdn.net/weixin_41793473/article/details/118574493?spm=1001.2014.3001.5501

前面提到的PIL的那个问题:

Installed /root/SlowFast
Processing dependencies for slowfast==1.0
Searching for sklearn
Reading https://pypi.org/simple/sklearn/
Downloading https://files.pythonhosted.org/packages/1e/7a/dbb3be0ce9bd5c8b7e3d87328e79063f8b263b2b1bfa4774cb1147bfcd3f/sklearn-0.0.tar.gz#sha256=e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31
Best match: sklearn 0.0
Processing sklearn-0.0.tar.gz
Writing /tmp/easy_install-bhbw6vsc/sklearn-0.0/setup.cfg
Running sklearn-0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-bhbw6vsc/sklearn-0.0/egg-dist-tmp-2gs9d87i
file wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141.py (for module wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141) not found
file wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141.py (for module wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141) not found
file wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141.py (for module wheel-platform-tag-is-broken-on-empty-wheels-see-issue-141) not found
warning: install_lib: 'build/lib' does not exist -- no Python modules to installcreating /opt/conda/lib/python3.8/site-packages/sklearn-0.0-py3.8.egg
Extracting sklearn-0.0-py3.8.egg to /opt/conda/lib/python3.8/site-packages
Adding sklearn 0.0 to easy-install.pth fileInstalled /opt/conda/lib/python3.8/site-packages/sklearn-0.0-py3.8.egg
Searching for PIL
Reading https://pypi.org/simple/PIL/
No local packages or working download links found for PIL
error: Could not find suitable distribution for Requirement.parse('PIL')

这篇关于SlowFast-入门1-动作识别-部署与测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275089

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

如何正确识别一台POE交换机的好坏? 选购可靠的POE交换机注意事项

《如何正确识别一台POE交换机的好坏?选购可靠的POE交换机注意事项》POE技术已经历多年发展,广泛应用于安防监控和无线覆盖等领域,需求量大,但质量参差不齐,市场上POE交换机的品牌繁多,如何正确识... 目录生产标识1. 必须包含的信息2. 劣质设备的常见问题供电标准1. 正规的 POE 标准2. 劣质设

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c