当前位置:   article > 正文

在linux环境下部署官方slowfast并且测试(很详细RTX4090)_slowfast环境配置

slowfast环境配置

先挂一下我自己学习并且参考的链接,b站迪哥1-slowfast核心思想解读.mp4_哔哩哔哩_bilibili

先说一下我的配置,我自己是用的Windows的Win11,然后通过远程桌面连接实验室服务器的Linux+RTX4090(不建议Windows,当然Windows也能成功配置slowfast)。

亮点:

1.能够避免RTX4090显卡对cuda高要求(cuda>11.8)的问题,并且自动安装torchvision,torch,以及虚拟环境的cuda相关包。其中torchvision=0.14.1,torch=1.13.1,虚拟环境里cuda相关包是cuda11.1。

2.附带一些错误的解决办法。

目录

1.先在Linux终端配置基本的虚拟环境

2.准备下slowfast项目文件

3.继续准备相关的虚拟环境

3.1安装numpy

3.2安装fvcore

3.3安装torch、torchvision、cuda等(成功解决RTX4090显卡对cuda>11.8高版本要求的问题,这会导致torch和torchvision也得高版本,高版本容易报错)

3.4安装simplejson

3.5安装PyAV

3.6安装ffmpeg、PyYaml、tqdm、iopath

3.7安装psutil

3. 8安装opencv

3.9安装tensorboard、moviepy、pytorchvideo

3.10安装detectron2

3.11安装fairscale之类的

3.12Pytorch、PySlowFast、环境变量的添加 

3.13Build一下

4.预训练文件、动作标签文件等文件的准备及修改

4.1预训练文件来源

4.2动作标签文件

4.3修改配置文件

4.4准备一个视频准备测试

4.5错误解决

4.6视频测试


1.先在Linux终端配置基本的虚拟环境

先创建一个虚拟环境吧,这里命名为slowfast1是因为我自己已经有一个能用的slowfast环境了,python版本是3.8:

 conda create -n slowfast1 python=3.8

这里输入y就可以了,环境创建好之后,我们激活这个环境,输入这一行:

conda activate slowfast1

 此时刚刚创建的基本虚拟环境已经激活了,括号的base变成了slowfast1:

2.准备下slowfast项目文件

先得给你的slowfast项目找个容身之地,我这里是/mnt/data1/2

然后在终端cd进这个目录,在我的终端输入,哦不,输入目录是一件很麻烦的事情,特别是目录很长的时候,所以这里我直接返回上一级目录,点击2这个文件夹然后拖动到终端上面,终端就会自动生成文件路径了,但是在拖动之前,不要忘记先在终端输入cd+空格!!!!!

在终端回车之后就可以了。slowfast官网的链接是https://github.com/facebookresearch/slowfast

但是由于我git不下来,所以我在windows上爬梯子下载到我的windows上面了(这个时候解压一下,然后重命名为slowfast),然后通过Winscp这个软件传输到实验室服务器Linux系统的/mnt/data1/2目录下面,这里我把项目包直接给你们准备好了,上滑到顶端下载。

项目弄过来之后,在同级目录创建两个文件夹,一个是input,一个是output,方面项目部署好之后测试效果。

3.继续准备相关的虚拟环境

在终端activate一下虚拟环境然后cd进目录

现在点击并且阅读SlowFast文件夹下面的INSTALL.md文件,一行一行地安装

3.1安装numpy

我这里直接用pip install -i https://pypi.douban.com/simple+(一个空格)安装包名称,用的是豆瓣的镜像,下载还挺快,所以先安装numpy

pip install -i https://pypi.douban.com/simple numpy

下载嘎嘎快

3.2安装fvcore

继续安装,但这里执行官方给的代码:

pip install 'git+https://github.com/facebookresearch/fvcore'

半天卡着不动,无语,并且最后失败了(我代理梯子关了),那就这样:

打开这个网站GitHub - facebookresearch/fvcore: Collection of common code that's shared among different research projects in FAIR computer vision team.(打开之前梯子挂上,但是好像现在csdn自动代理加速来着?csdn这一点很强),然后下载压缩包到我的windows上面,解压,然后通过winscp这个fvcore文件夹传输到我的linux上面

然后在终端cd进fvcore目录(cd然后点击fvcore文件夹拖动到终端里面就行),然后输入

pip install -i https://pypi.douban.com/simple -e .

如果没有中间那一段而是pip install -e .安装就贼慢,很烦,我后面改成了上面 这段代码。

3.3安装torch、torchvision、cuda等(成功解决RTX4090显卡对cuda>11.8高版本要求的问题,这会导致torch和torchvision也得高版本,高版本容易报错)

安装完fvcore之后我们安装torch和torchvision吧,这里我有一些个人的小技巧分享给各位,把cuda之类的也一并安装了,由于我学习这些并没有很久,也没有经验,所以踩了很多坑,自己总结的一点经验,显然一般的项目都尽量不要用太高版本的包,虽然rtx4090这款显卡官方要求cuda11.8以上才能驱动(这必然导致torch和torchvision也得高版本,就会出现一些难以更改的错误),然后我是在linux系统里面装了cuda12.2,然后在conda虚拟环境里面装cuda11.1的低版本,就能够正常使用torch和torchvision低版本的包了。通过我的很多次被搞心态,很多次摸索之后发现:在终端键入

pip install -i https://pypi.douban.com/simple torchvision=0.14.1

会安装torchvision,并且自动安装

torch1.13.1以及

nvidia-cublas-cu11-11.10.3.66       

nvidia-cuda-nvrtc-cu11-11.7.99  

nvidia-cuda-runtime-cu11-11.7.99       

nvidia-cudnn-cu11-8.5.0.96(这四个文件应该就是虚拟环境的cuda11.1相关包了)。下载速度还嘎嘎快,所以,直接执行这条命令即可。

到这里,个人认为环境搭建最麻烦的一步已经搞定了,继续耐心部署吧......

3.4安装simplejson

pip install -i https://pypi.douban.com/simple simplejson

秒了

3.5安装PyAV

直接执行官方这行代码

conda install av -c conda-forge

等待一会,然后输入y

就成功了,如果执行官方的代码没有成功可以评论区留言交流一下

3.6安装ffmpeg、PyYaml、tqdm、iopath

这个直接pass,在上一步已经被一起安装了

3.7安装psutil

 pip install -i https://pypi.douban.com/simple psutil

成功

3. 8安装opencv

老规矩输入

pip install -i https://pypi.douban.com/simple opencv

发现找不到包,这里是豆瓣源,那就换别的源,换了阿里源也没用,那我就干脆去这个网站Links for opencv-python (tsinghua.edu.cn)把opencv安装包扒下来到我的windows上面然后通过winscp传输到linux上,我是选的opencv_python-4.5.4.60-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl这个安装包,直接ctrl+f搜索这个版本就行。下载之后是whl文件直接通过winscp软件传输到linux上面就行

所以这里直接

pip install '/mnt/data1/2/opencv_python-4.5.4.60-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl' 

3.9安装tensorboard、moviepy、pytorchvideo

  1. pip install -i https://pypi.douban.com/simple tensorboard
  2. pip install -i https://pypi.douban.com/simple moviepy
  3. pip install -i https://pypi.douban.com/simple pytorchvideo

秒了

3.10安装detectron2

参见3.2的安装,步骤是一样的,梯子挂上去facebookresearch/detectron2: Detectron2 is a platform for object detection, segmentation and other visual recognition tasks. (github.com)下载压缩包到windows本地,然后解压改名传输到linux文件夹里面

然后cd进去,执行代码

pip install -i https://pypi.douban.com/simple -e .

如果执行的是pip install -e .可能会慢很多。但是发现报错

意思是说cuda12.2版本太高了,RTX4090真该死,查找了解决办法之后我把我的cuda降到11.8了(因为RTX4090至少需要cuda11.8以上才能驱动),这里解释一下,怕大家搞混,我安装了两个cuda,一个是linux服务器的cuda(版本号12.2),一个是虚拟环境里面的cuda(版本11.1,就是步骤3.3说的那四个文件),这里我们不需要动虚拟环境里的cuda,将linux系统的cuda降到11.8版本即可。降版本这件事情大概花了我半天时间,因为中途还碰到安装cuda设备空间(/tmp)不足的问题,安装cuda但是提示/tmp空间不足的解决办法请查看我的另一篇博客。

降低cuda版本之后重新执行就能成功安装detectron2:

pip install -i https://pypi.douban.com/simple -e .

Successfully!!!

3.11安装fairscale之类的

看到第一行,我们还是挂梯子从GitHub - facebookresearch/fairscale: PyTorch extensions for high performance and large scale training.弄下来到我的windows上,然后通过winscp传输到linux上面,最后本地安装

 这是弄下来之后

然后在终端

  1. cd '/mnt/data1/2/fairscale'
  2. pip install -i https://pypi.douban.com/simple -e .

看到第二行,让我们安装torch、torchvision、cython,这里我们安装最后一个就行,前面两个装过了

pip install -i https://pypi.douban.com/simple cython

第三行的fvcore我们装过了,我们安装后面这个PythonAPI,还是去这个网站https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI

把压缩包弄到我的windows上然后弄到linux上,进入这个目录

在终端cd进去/mnt/data1/2/cocoapi/PythonAPI,然后

pip install -i https://pypi.douban.com/simple -e .

第五行的detectron2在上一步已经安装完成了。

3.12Pytorch、PySlowFast、环境变量的添加 

Pytorch和slowfast前面的步骤已经搞定了,这里直接pass

install.md文件第33行提示添加环境变量

然后把

export PYTHONPATH=/path/to/SlowFast/slowfast:$PYTHONPATH

这一行修改成你的slowfast项目路径,我这里是

export PYTHONPATH=/mnt/data1/2/SlowFast/slowfast:$PYTHONPATH

 并且添加到/root/.bashrc(记得显示隐藏文件)文件里面,我添加到末尾了:

3.13Build一下

终端cd进SlowFast,注意不是SlowFast下面的那个小写的slowfast

然后执行

python setup.py build develop

这里提示我没有安装sklearn,那么我们把它的setup.py文件打开修改一下

  1. #!/usr/bin/env python3
  2. # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
  3. from setuptools import find_packages, setup
  4. setup(
  5. name="slowfast",
  6. version="1.0",
  7. author="FAIR",
  8. url="unknown",
  9. description="SlowFast Video Understanding",
  10. install_requires=[
  11. "yacs>=0.1.6",
  12. "pyyaml>=5.1",
  13. "av",
  14. "matplotlib",
  15. "termcolor>=1.1",
  16. "simplejson",
  17. "tqdm",
  18. "psutil",
  19. "matplotlib",
  20. "detectron2",
  21. "opencv-python",
  22. "pandas",
  23. "torchvision>=0.4.2",
  24. "PILLOW",
  25. "scikit-learn",
  26. "tensorboard",
  27. "fairscale",
  28. ],
  29. extras_require={"tensorboard_video_visualization": ["moviepy"]},
  30. packages=find_packages(exclude=("configs", "tests")),
  31. )

内容替换一下,修改了第26行的PIL以及27行的sklearn,它们两个由于版本的迭代被收进了PILLOW以及scikit-learn。

改完之后我们安装一下scikit-learn,终端输入,把pandas一起装了否则后面还要装

  1. pip install -i https://pypi.douban.com/simple scikit-learn
  2. pip install -i https://pypi.douban.com/simple pandas

安装成功

重新在终端执行

python setup.py build develop

安装成功

现在环境已经搭建好了,接下来我们准备并且修改一些文件,来测试一下slowfast效果如何。

4.预训练文件、动作标签文件等文件的准备及修改

4.1预训练文件来源

打开官方链接facebookresearch/SlowFast: PySlowFast: video understanding codebase from FAIR for reproducing state-of-the-art video models. (github.com)

下拉找到Model Zoo,点击

找到这个并且点击下载

在windows下载好之后传输到linux上面,并且最终放到这个目录下面

4.2动作标签文件

在/mnt/data1/2/SlowFast/demo/AVA目录下面创建一个叫做ava.json的文件,在终端输入

  1. cd '/mnt/data1/2/SlowFast/demo/AVA'
  2. vim ava.json

在弹出的窗口先输入i,这个时候可以编辑了,然后把下面的复制进去ctrl+shift+v:

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

然后键盘依次按下Esc、大写键、Z、Z,一共两个Z,成功退出保存。

4.3修改配置文件

这个文件点开

输入:

  1. TRAIN:
  2. ENABLE: False
  3. DATASET: ava
  4. BATCH_SIZE: 16
  5. EVAL_PERIOD: 1
  6. CHECKPOINT_PERIOD: 1
  7. AUTO_RESUME: True
  8. CHECKPOINT_FILE_PATH: '/mnt/data1/2/SlowFast/configs/AVA/c2/SLOWFAST_32x2_R101_50_50.pkl' #path to pretrain model
  9. CHECKPOINT_TYPE: pytorch
  10. DATA:
  11. NUM_FRAMES: 32
  12. SAMPLING_RATE: 2
  13. TRAIN_JITTER_SCALES: [256, 320]
  14. TRAIN_CROP_SIZE: 224
  15. TEST_CROP_SIZE: 256
  16. INPUT_CHANNEL_NUM: [3, 3]
  17. DETECTION:
  18. ENABLE: True
  19. ALIGNED: False
  20. AVA:
  21. BGR: False
  22. DETECTION_SCORE_THRESH: 0.8
  23. TEST_PREDICT_BOX_LISTS: ["person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv"]
  24. SLOWFAST:
  25. ALPHA: 4
  26. BETA_INV: 8
  27. FUSION_CONV_CHANNEL_RATIO: 2
  28. FUSION_KERNEL_SZ: 5
  29. RESNET:
  30. ZERO_INIT_FINAL_BN: True
  31. WIDTH_PER_GROUP: 64
  32. NUM_GROUPS: 1
  33. DEPTH: 101
  34. TRANS_FUNC: bottleneck_transform
  35. STRIDE_1X1: False
  36. NUM_BLOCK_TEMP_KERNEL: [[3, 3], [4, 4], [6, 6], [3, 3]]
  37. SPATIAL_DILATIONS: [[1, 1], [1, 1], [1, 1], [2, 2]]
  38. SPATIAL_STRIDES: [[1, 1], [2, 2], [2, 2], [1, 1]]
  39. NONLOCAL:
  40. LOCATION: [[[], []], [[], []], [[6, 13, 20], []], [[], []]]
  41. GROUP: [[1, 1], [1, 1], [1, 1], [1, 1]]
  42. INSTANTIATION: dot_product
  43. 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]]]
  44. BN:
  45. USE_PRECISE_STATS: False
  46. NUM_BATCHES_PRECISE: 200
  47. SOLVER:
  48. MOMENTUM: 0.9
  49. WEIGHT_DECAY: 1e-7
  50. OPTIMIZING_METHOD: sgd
  51. MODEL:
  52. NUM_CLASSES: 80
  53. ARCH: slowfast
  54. MODEL_NAME: SlowFast
  55. LOSS_FUNC: bce
  56. DROPOUT_RATE: 0.5
  57. HEAD_ACT: sigmoid
  58. TEST:
  59. ENABLE: False
  60. DATASET: ava
  61. BATCH_SIZE: 8
  62. DATA_LOADER:
  63. NUM_WORKERS: 2
  64. PIN_MEMORY: True
  65. NUM_GPUS: 1
  66. NUM_SHARDS: 1
  67. RNG_SEED: 0
  68. OUTPUT_DIR: .
  69. #TENSORBOARD:
  70. #MODEL_VIS:
  71. #TOPK: 2
  72. DEMO:
  73. ENABLE: True
  74. LABEL_FILE_PATH: '/mnt/data1/2/SlowFast/demo/AVA/ava.json'
  75. INPUT_VIDEO: "/mnt/data1/2/input/1.mp4"
  76. OUTPUT_FILE: "/mnt/data1/2/output/1.mp4"
  77. #WEBCAM: 0
  78. DETECTRON2_CFG: "COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"
  79. DETECTRON2_WEIGHTS: detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl

修改了第8行的预训练文件路径,pkl结尾那个

注释掉了70、71、72、78行

并且添加了两行路径作为视频输入inputt和输出output,这两个文件夹已经在第2步创建过了。

修改了动作标签文件的路径,第75行ava.json文件

保存退出。

4.4准备一个视频准备测试

随便找一个MP4格式的视频文件,我这里是准备的叶问打架。并且将文件名改成1.mp4放到/mnt/data1/2/input路径下面,这与我们4.3的配置文件的第76行是对应的。

在终端激活环境并且cd进这个

 cd '/mnt/data1/2/SlowFast' 

然后输入:

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

报错?????汗流浃背了家人们,虽然我以前碰到过

4.5错误解决

第一个错误

ImportError: cannot import name 'cat_all_gather' from 'pytorchvideo.layers.distributed' (/mnt/data1/anaconda3/envs/slowfast1/lib/python3.8/site-packages/pytorchvideo/layers/distributed.py)

我们去这个网站facebookresearch/pytorchvideo: A deep learning library for video understanding research. (github.com)

把压缩包下载下来解压,然后传到我的Linux服务器上面,放在/mnt/data1/2这个目录 

然后终端cd进去,并且安装

  1. cd '/mnt/data1/2/pytorchvideo'
  2. pip install -i https://pypi.douban.com/simple -e .

4.6视频测试

终端输入

  1. cd '/mnt/data1/2/SlowFast'
  2. python tools/run_net.py --cfg demo/AVA/SLOWFAST_32x2_R101_50_50.yaml

等待一会

最后成功生成的视频保存在

这个路径是我们在4.3修改配置文件那里指定好的路径。

我的linux没搞播放器,我用winscp传输到Windows之后看效果:

放大看看框框左上角标签,我截图的是右边框的标签,是fight没错了

搞定!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/806713
推荐阅读
相关标签
  

闽ICP备14008679号