赞
踩
系统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代码内容请复制粘贴以下内容:
- from detectron2.engine import DefaultPredictor
- from detectron2.data import MetadataCatalog
- from detectron2.config import get_cfg
- from detectron2.utils.visualizer import ColorMode, Visualizer
- from detectron2 import model_zoo
-
- import cv2
- import numpy as np
- import requests
-
- # Load an image
- res = requests.get("https://live.staticflickr.com/700/33224654191_fdaee2e3f1_c_d.jpg")
- image = np.asarray(bytearray(res.content), dtype="uint8")
- image = cv2.imdecode(image, cv2.IMREAD_COLOR)
-
- config_file = 'COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml'
- cfg = get_cfg()
- 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))
- cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.75 # Threshold
- cfg.MODEL.WEIGHTS ='https://dl.fbaipublicfiles.com/detectron2/COCO-Detection/faster_rcnn_R_101_FPN_3x/137851257/model_final_f6e8b1.pkl'
- #cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(config_file)
- cfg.MODEL.DEVICE = "cpu" # cpu or cuda
-
- # Create predictor
- predictor = DefaultPredictor(cfg)
-
- # Make prediction
- output = predictor(image)
- print(output)
- v = Visualizer(image[:, :, ::-1],
- scale=0.8,
- metadata=MetadataCatalog.get(cfg.DATASETS.TRAIN[0]),
- instance_mode=ColorMode.IMAGE
- )
- v = v.draw_instance_predictions(output["instances"].to("cpu"))
- cv2.imshow('images', v.get_image()[:, :, ::-1])
- 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文件
- {
- "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
- }
参考自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
完整的修改后的文件如下:
- TRAIN:
- ENABLE: False
- DATASET: ava
- BATCH_SIZE: 16
- EVAL_PERIOD: 1
- CHECKPOINT_PERIOD: 1
- AUTO_RESUME: True
- CHECKPOINT_FILE_PATH: "C:/softwaredownload/slowfast_need/SlowFast-main/demo/models/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: "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"
- #WEBCAM: -1
- 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
在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)
- self.cfg = get_cfg()
- self.cfg.merge_from_file(r'C:\softwaredownload\slowfast_need\detectron2-masterV2\detectron2-master\configs/'+cfg.DEMO.DETECTRON2_CFG)
- #self.cfg.merge_from_file(
- # model_zoo.get_config_file(cfg.DEMO.DETECTRON2_CFG)
- #)
- self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = cfg.DEMO.DETECTRON2_THRESH
- #self.cfg.MODEL.WEIGHTS ='https://dl.fbaipublicfiles.com/detectron2/COCO-Detection/faster_rcnn_R_101_FPN_3x/137851257/model_final_f6e8b1.pkl'
- self.cfg.MODEL.WEIGHTS = cfg.DEMO.DETECTRON2_WEIGHTS
- self.cfg.INPUT.FORMAT = cfg.DEMO.INPUT_FORMAT
- if cfg.NUM_GPUS and gpu_id is None:
- gpu_id = torch.cuda.current_device()
- self.cfg.MODEL.DEVICE = "cpu"
- #self.cfg.MODEL.DEVICE = (
- # "cuda:{}".format(gpu_id) if cfg.NUM_GPUS > 0 else "cpu"
- #)
4,测试slowfast出现报错:typeError:cannot unpack non-iterable NoneType object
原因:AVA.json文件里除了要复制的东西,不能写其他东西。把多余的删了,比如抬头默认的时间用户等。
- # -*- coding: utf-8 -*-
- """
- Created on Sat Mar 9 21:03:46 2024
- @author: someone
- """
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博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。