当前位置:   article > 正文

Win11安装detectron2和slowfast以及踩坑解决_detectron2 windows

detectron2 windows

系统win11

软件anaconda3

CUDA version 12.0

第一步:新建虚拟环境python==3.8,直接从anaconda3里新建就可以

在prompt里激活环境

activate slowfast

第二步:安装pytorch

pip install torch==1.10.0+cu102 torchaudio==0.10.0+cu102 torchlibrosa==0.1.0 torchvision==0.11.1+cu102

第三步:下载并安装slowfast,fvcore,cocoapi,detectron2

下载

https://github.com/facebookresearch/SlowFast
https://github.com/facebookresearch/fvcore
https://github.com/philferriere/cocoapi
https://github.com/conansherry/detectron2

安装过程请参考自以下博文第三四五步,写得非常好:win10下detectron2编译安装方法及问题汇总_detectron2的安装nvcc 编译 cuda 源文件时出现了堆栈溢出的问题-CSDN博客

安装detectron2,在anaconda prompt里cd到detectron2的安装路径,编译安装

cd C:\softwaredownload\slowfast_need\detectron2-masterV2\detectron2-master
python setup.py build develop

安装过程中会提示缺什么包,就pip install什么包,直到编译成功。编译之后会在detectron2子文件夹生成一个.pyd文件

测试detectron2编译环境,新建一个test_windows_install.py文件,放在“C:\softwaredownload\slowfast_need\detectron2-masterV2\detectron2-master\tests”文件夹下,

test_windows_install.py代码内容请复制粘贴以下内容:

  1. from detectron2.engine import DefaultPredictor
  2. from detectron2.data import MetadataCatalog
  3. from detectron2.config import get_cfg
  4. from detectron2.utils.visualizer import ColorMode, Visualizer
  5. from detectron2 import model_zoo
  6. import cv2
  7. import numpy as np
  8. import requests
  9. # Load an image
  10. res = requests.get("https://live.staticflickr.com/700/33224654191_fdaee2e3f1_c_d.jpg")
  11. image = np.asarray(bytearray(res.content), dtype="uint8")
  12. image = cv2.imdecode(image, cv2.IMREAD_COLOR)
  13. config_file = 'COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml'
  14. cfg = get_cfg()
  15. cfg.merge_from_file(r'C:\softwaredownload\slowfast_need\detectron2-masterV2\detectron2-master\configs/'+config_file)#cfg.merge_from_file(model_zoo.get_config_file(config_file))
  16. cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.75 # Threshold
  17. cfg.MODEL.WEIGHTS ='https://dl.fbaipublicfiles.com/detectron2/COCO-Detection/faster_rcnn_R_101_FPN_3x/137851257/model_final_f6e8b1.pkl'
  18. #cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(config_file)
  19. cfg.MODEL.DEVICE = "cpu" # cpu or cuda
  20. # Create predictor
  21. predictor = DefaultPredictor(cfg)
  22. # Make prediction
  23. output = predictor(image)
  24. print(output)
  25. v = Visualizer(image[:, :, ::-1],
  26. scale=0.8,
  27. metadata=MetadataCatalog.get(cfg.DATASETS.TRAIN[0]),
  28. instance_mode=ColorMode.IMAGE
  29. )
  30. v = v.draw_instance_predictions(output["instances"].to("cpu"))
  31. cv2.imshow('images', v.get_image()[:, :, ::-1])
  32. cv2.waitKey(0)

如果运行过程中有以下报错,表示没有这个对象,需要从自己复制config文件路径

解决方案:

1,把cfg.merge_from_file(model_zoo.get_config_file(config_file))改成cfg.merge_from_file(r'C:\softwaredownload\slowfast_need\detectron2-masterV2\detectron2-master\configs/'+config_file)

2,把cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(config_file)改成cfg.MODEL.WEIGHTS ='https://dl.fbaipublicfiles.com/detectron2/COCO-Detection/faster_rcnn_R_101_FPN_3x/137851257/model_final_f6e8b1.pkl'

第2步是直接重新从官网找的模型权重

官网链接 选择的是R101-FPN,右键model复制链接即可粘贴到代码中

 (上边的代码已经是解决了的。注释部分是原来的代码,原代码参考win10下detectron2编译安装方法及问题汇总_detectron2的安装nvcc 编译 cuda 源文件时出现了堆栈溢出的问题-CSDN博客

运行结果如图:

第四步:编译slowfast

打开slowfast源码,找到setup.py文件,修改1个地方,把PIL改成pillow

安装slowfast

python setup.py build develop
conda install pywin32

在C:\softwaredownload\slowfast_need\SlowFast-main\demo\AVA下新建ava.json文件

  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. }

参考自Windows 11 安装 SlowFast_slowfast_32x2_r101_50_50.pkl百度网盘-CSDN博客

下载模型权重文件modelzoo官网,选第3个,点link,下载到C:/softwaredownload/slowfast_need/SlowFast-main/demo/models/SLOWFAST_32x2_R101_50_50.pkl

第五步:修改C:\softwaredownload\slowfast_need\SlowFast-main\demo\AVA\SLOWFAST_32x2_R101_50_50.yaml

用记事本打开.yaml文件,修改这几行

添加模型路径

CHECKPOINT_FILE_PATH: "C:/softwaredownload/slowfast_need/SlowFast-main/demo/models/SLOWFAST_32x2_R101_50_50.pkl" #path to pretrain model

添加标签路径
LABEL_FILE_PATH: "C:/softwaredownload/slowfast_need/SlowFast-main/demo/AVA/ava.json" # Add local label file path here.

你输入的视频路径,写绝对路径
 INPUT_VIDEO: "C:/softwaredownload/slowfast_need/SlowFast-main/vinput/1.mp4"

输出的是视频路径
  OUTPUT_FILE: "C:/softwaredownload/slowfast_need/SlowFast-main/voutput/1_output.mp4"

注释掉以下四句

#TENSORBOARD:
#  MODEL_VIS:
#    TOPK: 2

 #WEBCAM: -1

完整的修改后的文件如下:

  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: "C:/softwaredownload/slowfast_need/SlowFast-main/demo/models/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: "C:/softwaredownload/slowfast_need/SlowFast-main/demo/AVA/ava.json" # Add local label file path here.
  75. INPUT_VIDEO: "C:/softwaredownload/slowfast_need/SlowFast-main/vinput/1.mp4"
  76. OUTPUT_FILE: "C:/softwaredownload/slowfast_need/SlowFast-main/voutput/1_output.mp4"
  77. #WEBCAM: -1
  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

在slowfast根目录下运行

cd C:\softwaredownload\slowfast_need\SlowFast-main
python .\tools\run_net.py --cfg .\demo\AVA\SLOWFAST_32x2_R101_50_50.yaml  

_______________________________________

以下是踩坑记录:

1,首先,测试detectron2,出现报错

ImportError:DLL load failed while importing _C:找不到指定的程序路径

原因:解压detectron2压缩包时,丢了一个东西,应该就是这个DLL文件

解决方案:重新解压安装包,重新安装编译

如果抱的错是找不到_C,那么需要把_C文件复制到你的运行目录下。

2,运行slowfast,出现报错

OSError: Video C:/softwaredownload/slowfast_need/SlowFast-main/vinput/1.mp4 cannot be opened

原因:视频重命名的时候直接打“1.mp4”,打“1”就行了,“.mp4”是后缀

解决方案:重命名,记得把路径打对了

3,测试detectron2和slowfast,出现报错

AttributeError:module 'detectron2.model_zoo' has no attribute 'get_config_file'

原因:我安装的版本时0.1,也许是版本过低,需要在报错的.py文件下修改代码,先寻找configs的路径,把报错部分改成自己的路径+config_file

例如我在运行slowfast的时候就报了这个错误,

解决方案,找到predictor.py,修改报错的第174行。注释部分是原本的代码

(注:因为我在自己电脑的cpu运行,所以把cuda也改成cpu了,因为我的电脑cuda带不动,会出现:RuntimeError: Not compiled with GPU support)

  1. self.cfg = get_cfg()
  2. self.cfg.merge_from_file(r'C:\softwaredownload\slowfast_need\detectron2-masterV2\detectron2-master\configs/'+cfg.DEMO.DETECTRON2_CFG)
  3. #self.cfg.merge_from_file(
  4. # model_zoo.get_config_file(cfg.DEMO.DETECTRON2_CFG)
  5. #)
  6. self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = cfg.DEMO.DETECTRON2_THRESH
  7. #self.cfg.MODEL.WEIGHTS ='https://dl.fbaipublicfiles.com/detectron2/COCO-Detection/faster_rcnn_R_101_FPN_3x/137851257/model_final_f6e8b1.pkl'
  8. self.cfg.MODEL.WEIGHTS = cfg.DEMO.DETECTRON2_WEIGHTS
  9. self.cfg.INPUT.FORMAT = cfg.DEMO.INPUT_FORMAT
  10. if cfg.NUM_GPUS and gpu_id is None:
  11. gpu_id = torch.cuda.current_device()
  12. self.cfg.MODEL.DEVICE = "cpu"
  13. #self.cfg.MODEL.DEVICE = (
  14. # "cuda:{}".format(gpu_id) if cfg.NUM_GPUS > 0 else "cpu"
  15. #)

4,测试slowfast出现报错:typeError:cannot unpack non-iterable NoneType object

原因:AVA.json文件里除了要复制的东西,不能写其他东西。把多余的删了,比如抬头默认的时间用户等。

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat Mar 9 21:03:46 2024
  4. @author: someone
  5. """

5,最后,运行slowfast报错

RuntimeError: CUDA out of memory. Tried to allocate 16.00 MiB (GPU 0; 4.00 GiB total capacity; 3.26 GiB already allocated; 0 bytes free; 3.44 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

逐一排查以上错误并解决后,顺畅无比,马上就要轻舟已过万重山了,谁知最后内存不足,泪了。

参考资料

【slowfast 代码解析 输出检测数据】_slowfast导出数据-CSDN博客

Windows 11 安装 SlowFast_slowfast_32x2_r101_50_50.pkl百度网盘-CSDN博客

【SlowFast复现】SlowFast Networks for Video Recognition复现代码 使用自己的视频进行demo检测_经典视频编码复现-CSDN博客

detectron2和slowfast的安装与使用_oserror: video 0 cannot be opened-CSDN博客

win10下detectron2编译安装方法及问题汇总_detectron2的安装nvcc 编译 cuda 源文件时出现了堆栈溢出的问题-CSDN博客

win10 下配置 slowfast 环境_slowfast算法复现windows-CSDN博客

Detectron2安装踩坑记录(比较详细版)-CSDN博客

win10安装detectron2_"no instance of overloaded function \"std::min\" m-CSDN博客

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

闽ICP备14008679号