Window10下的SlowFast安装、测试

Window10下的SlowFast安装、测试

一、 配置环境(必备)

(1) VS2019【不介绍安装方法】
(2) WINDOWS10【不介绍安装方法】
(3) CUDA 10.2【不介绍安装方法】
    需确保使用 nvcc –version时,显示如下
Window10下的SlowFast安装、测试_第1张图片
(4) Python3.7【不介绍安装方法】
(5) Pytorch 1.8
(6) torchvision0.9.0
(7) torchaudio0.8.0
(8) cudatoolkit=11.1

二、 步骤说明

2.1 安装 Pytorch

(1) 激活虚拟环境

conda activate mmcv

(2) 安装Pytorch

conda install pytorch1.8.0 torchvision0.9.0 torchaudio0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge

(3) 安装完,验证一下,显示如下,则安装成功

Window10下的SlowFast安装、测试_第2张图片
    需要注意的一点是,如果在虚拟环境外的公开环境上还装有pytorch、torchvision、tensorboard的话,默认是引用那些包的,用print(torch.version)检查一下版本就知道了,正确的是要1.8.0版本的

2.2 安装 cocoapi

(1)下载源码

git clone https://github.com/philferriere/cocoapi

(2)编译源码

cd coco/PythonAPI
python setup.py build_ext –inplace

遇到错误:No attribute ‘filelist’
解决方法:pip install setuptools==59.5.0

python setup.py build_ext install

(3)安装完,验证一下,显示如下,则安装成功

在这里插入图片描述
2.3 安装 fvcore
(1)下载源码

https://github.com/facebookresearch/fvcore

(2) 编译源码

python setup.py build --force develop

(3) 安装完,验证一下,显示如下,则安装成功
在这里插入图片描述
(4)注意事项
    【为了区分清楚,如下图,我们把SlowFast/fvcore称为fvcore-master,把SlowFast/fvcore/fvcore称为fvcore】
    需要注意的是,编译完后生成的文件都是在fvcore-master下的,也就是说,你除非cd到根目录(SlowFast/fvcore),否则是无法import fvcore成功的,编译完的文件夹如下

Window10下的SlowFast安装、测试_第3张图片

    而其他库在引用的时候,是使用fvcore的,于是容易出现一旦你当前不在根目录下就import fvcore失败的情况,这个时候我们可以把这个文件夹(fvcore-master)都放在 site-packages下(你可以放在对应envs下的site-package或者公开的site-packages),并重命名为fvcore-master,单独的把fvcore和fvcore.egg-info复制到和fvcore-master同级的目录下,这个时候你就可以在其他位置成功的import fvcore了
    fvcore-master下除了fvcore、fvcore.egg-info外,其他的文件夹存在安装模块和其他工具,当发现import fvcore的某项内容缺失时,请第一时间查看是不是因为这个工具没有放在fvcore下导致引用失败。

2.4 安装 detectron2

重头戏来了,detectron2是所有模块中最容易出现安装问题的

(1)下载源码

git clone https://github.com/conansherry/detectron2

(2)修改以下内容(第一处)
    对应编译过程中会遇到的问题是:nvcc fatal : unknown option ‘-genrate-dependencies-with-compile’
Window10下的SlowFast安装、测试_第4张图片
    修改detectron2的setup.py,修改最末尾的部分,修改内容见下图
Window10下的SlowFast安装、测试_第5张图片
(3)修改以下内容(第二处)
    修改site-packages\torch\utils\cpp_extension.py,修改内容见下图
Window10下的SlowFast安装、测试_第6张图片
(4)修改以下内容(第三处)
    修改site-packages\torch\include\torch\csrc\jit\runtime\argumenta_spec.h, 修改内容见下图
在这里插入图片描述
(5)修改以下内容(第四处)
    修改detectron2\layers\csrc\ROIAlignRotated\ROIAlignRotated_cuda.cu,将所有的ceil改为ceilf

(6)修改以下内容(第五处)
    修改detectron2\layers\csrc\deformable\deform_conv_cuda_kernel.cu,将所有的floor改为floorf

(7)修改以下内容(第六处)
    对应编译过程中会遇到的问题是:“AT_CHECK“:找不到标识符

Window10下的SlowFast安装、测试_第7张图片
    将detectron2\layers\csrc\deformable下三个文件的AT_CHEK全换成TORCH_CHECK

(8)修改以下内容(第七处)
    看到https://blog.csdn.net/zzy153/article/details/120693321此教程表示,还需要进行以下内容的修改,但是我找不到对应的字段,应该是版本不一样
Window10下的SlowFast安装、测试_第8张图片

(9)开始编译

    命令行下执行以下语句

SET MSSdk=1
SET DISTUTILS_USE_SDK=1
call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat” amd64 -vcvars_ver=14.29

在这里插入图片描述

    检查下设置有没有成功,如果显示如下则说明设置成功

cl -Bv

Window10下的SlowFast安装、测试_第9张图片
    开始编译

cd detectron2
python setup.py build --force develop

(10)安装完成,测试一下
Window10下的SlowFast安装、测试_第10张图片
(11)注意事项
    和fvcore一样,我们需要把编译好的detectron2和detectron-master复制到site-packages下,使得detectron2可以被import到
    detectron2-master下除了detectron2、detectron2.egg-info外,其他的文件夹存在安装模块和其他工具,当发现import detectron2的某项内容缺失时,请第一时间查看是不是因为这个工具没有放在detectron2下导致引用失败。

2.5 安装 slowfast
只要detectron2可以安装成功,那么就成功一大半了
(1)下载源码

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

(2)修改文件
    将setup.py里的PIL注释掉,我们用PIL被pillow取代,如果不注释掉就容易安装不上

(3)编译源码

python setup.py build develop

2.6 安装 pythorchvideo
    大部分教程不会讲到pytorchvideo的安装,可能因为他们之前安装过,实际测试SlowFast是有需要的,所以在这里顺便提一下
    不建议直接通过pip install pytorchvideo的方式直接安装,我一开始就是直接安装了但是引用的时候存在问题,使用以下方法就不会有引用的问题

(1)下载源码

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

(2)编译源码

cd pytorchvideo
pip install -e .

(3)注意事项
    在install -e 后面有个点,不可以忽略,下图是源码的安装指引
Window10下的SlowFast安装、测试_第11张图片

2.7 更新 pytorch-image-models/timm
    当我安装完SlowFast,在测试使用的过程中,出现一个错误
ImportError: cannot import name ‘Mlp‘ from ‘timm.models.layers ‘
解决方法:
    timm库的源码地址为https://github.com/rwightman/pytorch-image-models,直接git clone整个库的代码,然后将timm(只要timm,见下图指向的文件夹)复制到AppData\Roaming\Python\Python37\site-packages\timm-0.1.20-py3.7.egg下

Window10下的SlowFast安装、测试_第12张图片

2.8 安装 win32gui
    对应错误:ModuleNotFoundError:No module name ‘win32con’
    解决方法:pip install win32gui

三、 测试

3.1 下载权重
    在https://github.com/facebookresearch/SlowFast/blob/main/MODEL_ZOO.md里下载以下权重

Window10下的SlowFast安装、测试_第13张图片

3.2 制作label
    建一个json文件,我命名为action.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}

3.3 更改配置文件
修改SlowFast/demo/AVA/SLOWFAST_32x2_R101_50_50.yaml
需要更改的地方有
● BATCH_SIZE>>>避免资源耗尽,先改为1,然后再渐渐调大
● CHECKPOINT_FILE_PATH>>>填写权重存放的地址
● TENSORBOARD>>>注释掉
● MODEL_VIS>>>注释掉
● TOPK: 2>>>注释掉
● LABEL_FILE_PATH: “test_data/action.json”>>>填写label存放的地址
● INPUT_VIDEO: “test_data/100.mp4”>>>新增这个字段,并填写检测视频地
● OUTPUT_FILE: “test_data/result.mp4”>>>新增这个字段,并填写检测视频结果存放地址
完整配置文件内容如下(我真实可以运行的)

TRAIN:
  ENABLE: False
  DATASET: ava
  BATCH_SIZE: 1
  EVAL_PERIOD: 1
  CHECKPOINT_PERIOD: 1
  AUTO_RESUME: True
  CHECKPOINT_FILE_PATH: test_data/SLOWFAST_32x2_R101_50_50.pkl  #path to pretrain model
  CHECKPOINT_TYPE: pytorch
DATA:
  NUM_FRAMES: 16
  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: 1
DATA_LOADER:
  NUM_WORKERS: 1
  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: "test_data/action.json" # Add local label file path here.
  INPUT_VIDEO: "test_data/100.mp4"
  OUTPUT_FILE: "test_data/result.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

3.4 运行检测

conda activate mmcv
cd SlowFast
python tools/run_net.py --cfg demo/AVA/SLOWFAST_32x2_R101_50_50.yaml

    运行出现以下错误:
RuntimeError: COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml not available in Model Zoo!

    解决方法:查看site-packages\detectron2\model_zoo\configs\COCO-Detection\faster_rcnn_R_50_FPN_3x.yaml是否存在,如果没有的话,将 detectron2-master/configs文件下的所有文件全都复制到site-packages\detectron2\model_zoo\configs下,再次测试就可以了

你可能感兴趣的:(安装,python,深度学习,pytorch)