一. 模型相关地址
官网:https://github.com/facebookresearch/detectron2
官方安装教程:https://detectron2.readthedocs.io/en/latest/tutorials/install.html
模型文件下载:https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md
二.环境搭建
Ubantu20.04+cuda11.0
- 创建新环境
conda create -n detectron2 python=3.7
conda activate detectron2
- 安装pytorch
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
按照https://pytorch.org/get-started/locally/官网对应的cuda版本
工作站是cuda11.0 11.3版本的也能用
装的是1.10.2的pytorch(需要大于1.8)
- 安装opencv
conda install -c menpo opencv3
- 安装fvcore
pip install fvcore==0.1.5.post20220212
ps:fvcore版本要大于0.1.2
- 安装pycocotools
pip install cython;
pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
- install detectron2
git clone git@github.com:facebookresearch/detectron2.git
cd detectron2 && pip install -e .
至此环境搭建完毕
三.报错
-
AssertionError: Invalid type <class ‘NoneType‘>
解决办法:https://blog.csdn.net/bb_sy_w/article/details/122213038 -
缺各种包直接pip install 其中termcolor已经存在还是显示缺失 pip uninstall之后重新安装解决
四.测试
在项目下创建images/results/models三个文件夹分别存放图片、输出结果、权重文件
- 目标检测
python demo/demo.py \
--config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml \
--input images/test.jpg \
--output results \
--opts MODEL.WEIGHTS models/model_final_b275ba.pkl
- 实例分割
python demo/demo.py \
--config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \
--input images/test.jpg \
--output results \
--opts MODEL.WEIGHTS models/model_final_f10217.pkl
- 全景分割
python demo/demo.py \
--config-file configs/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml \
--input images/test.jpg \
--output results \
--opts MODEL.WEIGHTS models/model_final_cafdb1.pkl
利用WeCam进行实时视频检测:
--input images/test.jpg \
--output results \
# 改为
--webcam \
获取本机的 WebCam 列表:
$ ls /dev/video*
/dev/video0 /dev/video1 /dev/video2 /dev/video3
# 查看 WebCam 列表
# 如下:有 0, 2 两个 videos
# - 第一个是 video ,第二个是 metadata
# - 从 Linux Kernel 4.16 开始,增加的 metadata node
$ sudo apt install v4l-utils
$ v4l2-ctl --list-devices
HD Webcam: HD Webcam (usb-0000:00:14.0-13):
/dev/video0
/dev/video1
HD Pro Webcam C920 (usb-0000:00:14.0-4):
/dev/video2
/dev/video3
# 查看某 WebCam 支持的格式、分辨率、fps 信息
$ v4l2-ctl -d 2 --list-formats-ext
demo/demo.py 可修改期望打开的摄像头及其分辨率等
elif args.webcam:
cam = cv2.VideoCapture(2)
cam.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cam.set(cv2.CAP_PROP_FPS, 30)
print(f"wencam: {cam.get(cv2.CAP_PROP_FRAME_WIDTH)}x{cam.get(cv2.CAP_PROP_FRAME_HEIGHT)} {cam.get(cv2.CAP_PROP_FPS)}")
参考:https://blog.csdn.net/winorlose2000/article/details/112549795