一、slowfast 代码复现

小心情:
  今天刚刚在学校打完新冠疫苗,回来后写完的这篇博客,希望可以帮助到同行的小伙伴们,能够快速复现这个模型,可以帮助到你们节省学习时间,避免踩坑。然后对于合肥的突发疫情,希望大家都能在保证安全的基础上,积极工作学习,共筑祖国的健康与强大。为生在中国感到幸福。中国现在很好,将来会更好。此生无悔入华夏,来生愿在种花家。

1.1 配置环境

1.1.1 代码下载

官方地址:

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

上面链接将下载最新版本的代码,但会导致pytorchvideo包与pytorch1.3冲突,这是因为pytorchvideo需求pytorch>=1.8,由于我的GPU设配CUDA版本为10.0,因此报出了关于No module named 'torch.nn.common_types’的错误,因为这是pytorch>=1.8之后的版本才支持的
在这里插入图片描述
解决方法:
下载不需要pytorchvideo包支持的旧版本代码,代码在这里:

git clone https://gitee.com/qiang_sun/SlowFast.git

1.1.2 使用conda搭建环境

按照官网上的步骤来,注意,这里会和官网有一些区别
Installation

# 创建conda环境,python3.7已测试可用
conda create -n slowfast python=3.7
# 激活刚创建的环境
conda activate slowfast
# 安装cuda10.0的pytorch1.4和torchvision0.5.0,已测试可用
pip install torch===1.4.0+cu100 torchvision===0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html
# 安装fvcore
pip install 'git+https://github.com/facebookresearch/fvcore'
# 安装simplejson
pip install simplejson
# 安装PyAv
conda install av -c conda-forge
# 安装iopath
pip install -U iopath
# 安装psutil
pip install psutil
# 安装opencv-python
pip install opencv-python
# 安装tensorboard
pip install tensorboard
# 安装cython
pip install cython
# 安装detectron2,这里与官网安装方式不同
python -m pip install detectron2 -f \
  https://dl.fbaipublicfiles.com/detectron2/wheels/cu100/torch1.4/index.html
# 导入路径,路径如下图所示,修改成你自己的路径即可
export PYTHONPATH=/media/bao/新加卷1/sunqiang/SlowFast/slowfast:$PYTHONPATH
# 进入SlowFast目录
cd SlowFast
# 编译,可以干点别的事等着,非常慢
python setup.py build develo

在这里插入图片描述

1.2 修改部分代码

1.2.1 在/SlowFast/demo/AVA目录下新建ava.json,文件内容如下:

{"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}

1.2.2 修改/SlowFast/demo/AVA/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: "/media/bao/新加卷1/sunqiang/SlowFast/configs/AVA/c2/SLOWFAST_32x2_R101_50_50.pkl"  #path to pretrain model
  CHECKPOINT_TYPE: pytorch
DATA:
  NUM_FRAMES: 32
  SAMPLING_RATE: 2
  TRAIN_JITTER_SCALES: [256, 320]
  TRAIN_CROP_SIZE: 224
  TEST_CROP_SIZE: 256
  INPUT_CHANNEL_NUM: [3, 3]
DETECTION:
  ENABLE: True
  ALIGNED: False
AVA:
  BGR: False
  DETECTION_SCORE_THRESH: 0.8
  TEST_PREDICT_BOX_LISTS: ["person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv"]
SLOWFAST:
  ALPHA: 4
  BETA_INV: 8
  FUSION_CONV_CHANNEL_RATIO: 2
  FUSION_KERNEL_SZ: 5
RESNET:
  ZERO_INIT_FINAL_BN: True
  WIDTH_PER_GROUP: 64
  NUM_GROUPS: 1
  DEPTH: 101
  TRANS_FUNC: bottleneck_transform
  STRIDE_1X1: False
  NUM_BLOCK_TEMP_KERNEL: [[3, 3], [4, 4], [6, 6], [3, 3]]
  SPATIAL_DILATIONS: [[1, 1], [1, 1], [1, 1], [2, 2]]
  SPATIAL_STRIDES: [[1, 1], [2, 2], [2, 2], [1, 1]]
NONLOCAL:
  LOCATION: [[[], []], [[], []], [[6, 13, 20], []], [[], []]]
  GROUP: [[1, 1], [1, 1], [1, 1], [1, 1]]
  INSTANTIATION: dot_product
  POOL: [[[2, 2, 2], [2, 2, 2]], [[2, 2, 2], [2, 2, 2]], [[2, 2, 2], [2, 2, 2]], [[2, 2, 2], [2, 2, 2]]]
BN:
  USE_PRECISE_STATS: False
  NUM_BATCHES_PRECISE: 200
SOLVER:
  MOMENTUM: 0.9
  WEIGHT_DECAY: 1e-7
  OPTIMIZING_METHOD: sgd
MODEL:
  NUM_CLASSES: 80
  ARCH: slowfast
  MODEL_NAME: SlowFast
  LOSS_FUNC: bce
  DROPOUT_RATE: 0.5
  HEAD_ACT: sigmoid
TEST:
  ENABLE: False
  DATASET: ava
  BATCH_SIZE: 8
DATA_LOADER:
  NUM_WORKERS: 2
  PIN_MEMORY: True

NUM_GPUS: 1
NUM_SHARDS: 1
RNG_SEED: 0
OUTPUT_DIR: .

#TENSORBOARD:
#  MODEL_VIS:
#    TOPK: 2
DEMO:
  ENABLE: True
  LABEL_FILE_PATH: "/media/bao/新加卷1/sunqiang/SlowFast/demo/AVA/ava.json"
  INPUT_VIDEO: "/media/bao/新加卷1/sunqiang/SlowFast/Vinput/2.mp4"
  OUTPUT_FILE: "/media/bao/新加卷1/sunqiang/SlowFast/Voutput/1.mp4"

  DETECTRON2_CFG: "COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"
  DETECTRON2_WEIGHTS: https://dl.fbaipublicfiles.com/detectron2/COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl

下面这一行代码存放的是输入视频的位置,当然Vinput这个文件夹是我自己建的,可以自行拍摄一个教室的视频,可以检测出每个人的姿势,如:sit、stand等

INPUT_VIDEO: "/media/bao/新加卷1/sunqiang/SlowFast/Vinput/2.mp4"

下面这一行代码存放的是检测后视频的位置,当然Voutput这个文件夹是我自己建的

OUTPUT_FILE: "/media/bao/新加卷1/sunqiang/SlowFast/Voutput/1.mp4"

1.2.3 下载预训练权重文件

下载页面: link.

下载模型SLOWFAST_32x2_R101_50_50.pkl 到/SlowFast/configs/AVA/c2目录下

下图标记的权重文件下载链接: link
在这里插入图片描述

1.3 代码运行

输入运行命令:

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

代码效果:
在这里插入图片描述

  • 12
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 45
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值