文章目录

  • 简介
  • 安装
  • 1. Conda
  • 2. Python
  • 3. CUDA和cuDNN
  • 4. PyTorch
  • 5. Python库
  • 6. Detectron2
  • 7. SlowFast
  • 总结
  • 术语
  • 初试
  • 详解
  • 遇到的坑
  • 参考文献


简介

PySlowfast 是 FAIR 开源的基于 PyTorch 的视频理解代码库,让研究者可以轻而易举地复现从基础至前沿的视频识别 (Video Classification) 和行为检测 (Action Detection) 算法。

论文:SlowFast Networks for Video Recognition

python手动实现SIFT python fastdtw_深度学习


安装

1. Conda


2. Python

Python>=3.8

conda create -n py38 python=3.8
conda activate py38


3. CUDA和cuDNN

安装过程略

查看CUDA和cuDNN版本

cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2


4. PyTorch

PyTorch>=1.7

进入官网搜索CUDA版本后执行命令

如本人CUDA为10.1

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch


5. Python库

conda install -c fvcore -c iopath -c conda-forge fvcore
conda install av -c conda-forge
conda install moviepy -c conda-forge
pip install simplejson
pip install psutil
pip install opencv-python
pip install tensorboard
pip install pytorchvideo


6. Detectron2

git clone https://github.com/facebookresearch/detectron2
pip install -e detectron2

测试图片 test.jpg

python手动实现SIFT python fastdtw_python手动实现SIFT_02

直接点击下方超链接下载 模型库 里的模型,测试图片test.jpg放在image文件夹中,新建文件夹output,模型文件放在model文件夹中

目标检测(Object Detection)

python demo/demo.py --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml --input image/test.jpg --output output/1.jpg --opts MODEL.WEIGHTS 'model/model_final_b275ba.pkl'

python手动实现SIFT python fastdtw_深度学习_03


实例分割(Instance Segmentation)

python demo/demo.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --input image/test.jpg --output output/2.jpg --opts MODEL.WEIGHTS 'model/model_final_f10217.pkl'

python手动实现SIFT python fastdtw_行为识别_04


人体关键点检测(Person Keypoint Detection)

python demo/demo.py --config-file configs/COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml --input image/test.jpg --output output/3.jpg --opts MODEL.WEIGHTS 'model/model_final_a6e10b.pkl'

python手动实现SIFT python fastdtw_行为识别_05


全景分割(Panoptic Segmentation)

python demo/demo.py --config-file configs/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml --input image/test.jpg --output output/4.jpg --opts MODEL.WEIGHTS 'model/model_final_cafdb1.pkl'

python手动实现SIFT python fastdtw_行为识别_06


7. SlowFast

git clone https://github.com/facebookresearch/slowfast
cd slowfast

setup.py 中的 PIL 改为 pillow

python setup.py build develop


总结


功能

PyTorch

深度学习框架

fvcore

FAIR团队开发计算机视觉框架中的核心功能

torchvision

pytorch中的数据集,模型和图片转换工具

simplejson

JSON编解码器

PyAV

FFmpeg的Python接口

psutil

跨平台进程和系统监控

opencv-python

计算机视觉库

tensorboard

TensorFlow的可视化工具包

moviepy

视频编辑库

PyTorchVideo

视频理解研究的深度学习库

Detectron2

检测和分割算法库


术语

视频识别基准(Benchmarks)

  1. Kinetics:视频识别。根据版本不同,该数据集包含多达65万个视频片段的URL链接,涵盖400/600/700个人类动作类。这些视频包括弹奏乐器等人和物互动,以及握手和拥抱等人与人之间的互动。每个动作类至少有400/600/700个视频剪辑。每个剪辑都带有一个单独的动作类,持续约10秒。
  2. Charades:一个指导我们研究非结构化视频活动识别和日常人类活动常识推理的数据集。
  3. AVA:行为检测。AVA数据集对430个电影剪辑中的80个小视觉动作进行了细致注释,这些动作在空间和时间上都是本地化的,产生了1.62万个动作标签,每个人有多个标签。剪辑是从15分钟的连续电影片段中提取的,为对活动进行时间推理打开了大门。数据集被分成235个视频用于训练,64个视频用于验证,131个视频用于测试。

X3D:扩展高效视频识别架构


初试

下载 SLOWFAST_32x2_R101_50_50.pkl 放到 slowfast\demo\AVA

下载 ava_classids.json 放到 slowfast\demo\AVA

cd slowfast/demo/AVA
wget https://dl.fbaipublicfiles.com/pyslowfast/dataset/class_names/ava_classids.json

修改 SLOWFAST_32x2_R101_50_50.yaml

TRAIN:
  ENABLE: False
  DATASET: ava
  BATCH_SIZE: 16
  EVAL_PERIOD: 1
  CHECKPOINT_PERIOD: 1
  AUTO_RESUME: True
  CHECKPOINT_FILE_PATH: "/home/xercis/code/slowfast/demo/AVA/SLOWFAST_32x2_R101_50_50.pkl"
  CHECKPOINT_TYPE: pytorch

……

NUM_GPUS: 1
NUM_SHARDS: 1
RNG_SEED: 0
OUTPUT_DIR: .
#TENSORBOARD:
#  MODEL_VIS:
#    TOPK_PREDS: 5  # 多个分类
DEMO:
  ENABLE: True
  LABEL_FILE_PATH: "/home/xercis/code/slowfast/demo/AVA/ava.json"
#  WEBCAM: 0
  INPUT_VIDEO: "/home/xercis/code/slowfast/demo/AVA/3.mp4"
  OUTPUT_FILE: "/home/xercis/code/slowfast/demo/AVA/4.mp4"
  DETECTRON2_CFG: "COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"
  DETECTRON2_WEIGHTS: detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl
  VIS_MODE: "thres" # top-k or thres

移动到slowfast目录下执行命令

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

若速度较慢,可手动下载 model_final_280758.pkl 放到 /home/xercis/.torch/iopath_cache/detectron2/COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/

效果

python手动实现SIFT python fastdtw_行为识别_07

下载测试视频

python手动实现SIFT python fastdtw_行为识别_08


python手动实现SIFT python fastdtw_行为识别_09


详解

配置详情查看slowfast/config/defaults.py

DATA:
  NUM_FRAMES: 8  # 间隔多少帧预测一次

调整字体大小,修改 slowfast/visualization/video_visualizer.pyfont_size


遇到的坑

1. 报错AssertionError: Invalid type <class ‘NoneType’> for key POOL_KVQ_KERNEL

pip install yacs==0.1.8

2. 设置中文标签

参考 Linux Anaconda设置matplotlib中文字体font


参考文献

  1. PySlowfast GitHub
  2. PySlowfast Paper
  3. PySlowFast YouTube
  4. AVA 在线查看