Ubuntu20.04LTS从零开始配置SlowFast环境
注意:除个别包外尽量使用anaconda安装,方便以后备份和恢复环境
1. 安装Anaconda并换源(按需)
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
2. 安装CUDA11.0
3. 安装cudnn8
4. 新建虚拟环境
conda create -n slowfast python=3.8
5. 安装git
conda install git
6. 安装pytorch
conda install pytorch torchvision torchaudio cudatoolkit=11.0
如果中途断了或者失败,重新运行指令。成功的标志是出现这几行
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
安装好后进入python,import torch看看是否报错,报错可以卸载用pip重装
7. 安装OpenCV
用conda安装opencv会有各种小毛病比如说无法调用,或者python版本不支持。
所以用pip安装好一点。
pip3 install opencv-python
自动安装最新版本的opencv
安装完成后进入python检查是否可以调用
$python3
>>>import cv2
>>>print(cv2.__version__)
4.4.0
8. 安装simplejson
conda install simplejson
9. 安装fvcore
按照作者团队说的安装完这个会自动安装ffmepg,PyYaml等包,但是我这边并没有安装,还需要按下面写的手动安装一下。
pip install 'git+https://github.com/facebookresearch/fvcore'
10. 安装PyAV
conda install av -c conda-forge
11. 安装PyYaml
conda install pyyaml
12. 安装tqdm
conda install tqdm
13. 安装tensorboard和moviepy(选装)
如果暂时不想调试可以先不装
pip install tensorboard
conda install -c conda-forge moviepy
14. 安装psutil(注)
如果之前的包装的没问题这个应该已经是装好的了,以防万一还是运行一下这个指令吧。
pip install psutil
15. 安装detectron2
- 安装ninja,缺少可能会在安装detectron2时报错
conda install ninja
- 安装detectron2
方法1
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
方法2
git clone https://github.com/facebookresearch/detectron2.git
下载到本地后进入~
输入指令
python -m pip install -e detectron2
方法3
进入detectron2找到你配置对应的预安装指令,直接运行即可
报错处理
1.报错 Command '['ninja', '-v']' returned non-zero exit status 1.
. 解决办法:修改torch包里的cpp_extention.py的1479行
#command = ['ninja', '-v'] (line1479)
command = ['ninja', '--version']
- 报错
error: command ':/usr/local/cuda-11.0/bin/nvcc' failed with exit status 1
解决方法:修改cuda路径为以下形式
gedit ~/.bashrc
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda=11.0
# 将上面的语句修改成:
export CUDA_HOME=/usr/local/cuda=11.0
source ~/.bashrc
- 一些依赖项报错
用conda uninstall
卸载报错的依赖项改用pip安装。
16. 测试detectron2
测试video
python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --input--video input/video/video_0002.mp4 --opts MODEL.WEIGHTS ../models/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/model_final_f10217.pkl
报了个警告124:UserWarning: This overload of nonzero is deprecated:
解决办法:
修改your-path/detectron2/detectron2/modeling/roi_heads/fast_rcnn.py
文件的124行。
filter_inds = filter_mask.nonzero()
#将124行修改为
filter_inds=torch.nonzero(filter_mask, as_tuple=False)
我习惯性的把输出格式改成MPEG-4
修改demo.py的
138行.mkv---->.mp4和
147行改为fourcc=cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),
再运行一遍:
输入视频:
输出视频:
17. 安装SlowFast
git clone https://github.com/facebookresearch/slowfast
将Slowfast加入python环境
gedit ~/.bashrc
#在结尾加入
export PYTHONPATH=$PYTHONPATH:/home/你的路径/slowfast/slowfast
#保存关闭
source ~/.bashrc
进入slowfast根目录(注意大小写,原来的是SlowFast,我改成slowfast了)后安装。
cd slowfast
python setup.py build develop
成功的标志:
出现Finished processing dependencies for slowfast==1.0
18. 运行Demo
ava.json下载
简单修改一下配置文件
TRAIN:
ENABLE: False
DATASET: ava
BATCH_SIZE: 64
EVAL_PERIOD: 5
CHECKPOINT_PERIOD: 1
AUTO_RESUME: True
CHECKPOINT_FILE_PATH: /home/abali/slowfast/pre_model/AVA/SLOWFAST_32x2_R101_50_50_v2.1.pkl
#path to the pretrain checkpoint file.
CHECKPOINT_TYPE: caffe2
DATA:
NUM_FRAMES: 4
SAMPLING_RATE: 16
TRAIN_JITTER_SCALES: [256, 320]
TRAIN_CROP_SIZE: 224
TEST_CROP_SIZE: 256
INPUT_CHANNEL_NUM: [3]
DETECTION:
ENABLE: True
ALIGNED: False
AVA:
DETECTION_SCORE_THRESH: 0.9
TRAIN_PREDICT_BOX_LISTS: [
"ava_train_v2.2.csv",
"person_box_67091280_iou90/ava_detection_train_boxes_and_labels_include_negative_v2.2.csv",
]
TEST_PREDICT_BOX_LISTS: ["person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv"]
RESNET:
ZERO_INIT_FINAL_BN: True
WIDTH_PER_GROUP: 64
NUM_GROUPS: 1
DEPTH: 50
TRANS_FUNC: bottleneck_transform
STRIDE_1X1: False
NUM_BLOCK_TEMP_KERNEL: [[3], [4], [6], [3]]
SPATIAL_DILATIONS: [[1], [1], [1], [2]]
SPATIAL_STRIDES: [[1], [2], [2], [1]]
NONLOCAL:
LOCATION: [[[]], [[]], [[]], [[]]]
GROUP: [[1], [1], [1], [1]]
INSTANTIATION: softmax
BN:
USE_PRECISE_STATS: False
NUM_BATCHES_PRECISE: 200
SOLVER:
BASE_LR: 0.1
LR_POLICY: steps_with_relative_lrs
STEPS: [0, 10, 15, 20]
LRS: [1, 0.1, 0.01, 0.001]
MAX_EPOCH: 20
MOMENTUM: 0.9
WEIGHT_DECAY: 1e-7
WARMUP_EPOCHS: 5.0
WARMUP_START_LR: 0.000125
OPTIMIZING_METHOD: sgd
MODEL:
NUM_CLASSES: 80
ARCH: slow
MODEL_NAME: ResNet
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: .
DEMO:
ENABLE: True
LABEL_FILE_PATH: "./demo/AVA/ava.json" # Add local label file path here.
INPUT_VIDEO: "./data/input/0002.mp4"
OUTPUT_FILE: "./data/output/0002.mp4"
WEBCAM: -2
DETECTRON2_CFG: "COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"
DETECTRON2_WEIGHTS: "/home/abali/detectron2/models/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/model_final_f10217.pkl"
然后运行
python tools/run_net.py --cfg configs/conv/AVA/SLOW_8x8_R50_SHORT.yaml
输出结果:
demo_net.py: 119: Finish demo in: 31.476146697998047
2020/11/15 19:50:44