文章目录
- 简介
- 安装
- 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
安装
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
直接点击下方超链接下载 模型库 里的模型,测试图片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'
实例分割(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'
人体关键点检测(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'
全景分割(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'
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)
- Kinetics:视频识别。根据版本不同,该数据集包含多达65万个视频片段的URL链接,涵盖400/600/700个人类动作类。这些视频包括弹奏乐器等人和物互动,以及握手和拥抱等人与人之间的互动。每个动作类至少有400/600/700个视频剪辑。每个剪辑都带有一个单独的动作类,持续约10秒。
- Charades:一个指导我们研究非结构化视频活动识别和日常人类活动常识推理的数据集。
- 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/
中
效果
下载测试视频
详解
配置详情查看slowfast/config/defaults.py
DATA:
NUM_FRAMES: 8 # 间隔多少帧预测一次
调整字体大小,修改 slowfast/visualization/video_visualizer.py 的 font_size
遇到的坑
1. 报错AssertionError: Invalid type <class ‘NoneType’> for key POOL_KVQ_KERNEL
pip install yacs==0.1.8
2. 设置中文标签
参考 Linux Anaconda设置matplotlib中文字体font
参考文献