本文將引導快速使用 Detectron2 ,介紹用攝像頭測試實時目標檢測。html
安裝,node
# 建立 Python 虛擬環境 conda create -n detectron2 python=3.8 -y conda activate detectron2 # 安裝 PyTorch with CUDA conda install pytorch==1.7.1 torchvision==0.8.2 cudatoolkit=10.2 -c pytorch -y # 安裝 Detectron2 git clone https://github.com/facebookresearch/detectron2.git python -m pip install -e detectron2 # 安裝 OpenCV ,捕獲相機圖像及顯示 pip install opencv-python
檢查,python
$ python - <<EOF import torch, torchvision print(torch.__version__, torch.cuda.is_available()) import cv2 as cv print(cv.__version__) EOF 1.7.1 True 4.5.1
從其 model zoo 選擇一個感興趣的模型進行推斷。這裏以 COCO
R50-FPN
3x
訓練的各種模型進行演示。git
下載 model
進以下路徑,github
detectron2/models/ ├── COCO-Detection │ └── faster_rcnn_R_50_FPN_3x │ └── 137849458 │ ├── metrics.json │ └── model_final_280758.pkl ├── COCO-InstanceSegmentation │ └── mask_rcnn_R_50_FPN_3x │ └── 137849600 │ ├── metrics.json │ └── model_final_f10217.pkl ├── COCO-Keypoints │ └── keypoint_rcnn_R_50_FPN_3x │ └── 137849621 │ ├── metrics.json │ └── model_final_a6e10b.pkl └── COCO-PanopticSegmentation └── panoptic_fpn_R_50_3x └── 139514569 ├── metrics.json └── model_final_c10459.pkl
執行,web
cd detectron2/ mkdir -p _output python demo/demo.py \ --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml \ --input ../data/bicycle.jpg \ --output _output/bicycle_COCO-Detection.jpg \ --confidence-threshold 0.5 \ --opts MODEL.WEIGHTS models/COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl
結果,json
執行,bash
python demo/demo.py \ --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \ --input ../data/bicycle.jpg \ --output _output/bicycle_COCO-InstanceSegmentation.jpg \ --confidence-threshold 0.5 \ --opts MODEL.WEIGHTS models/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl
結果,ide
執行,測試
python demo/demo.py \ --config-file configs/COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml \ --input ../data/bicycle.jpg \ --output _output/bicycle_COCO-Keypoints.jpg \ --confidence-threshold 0.5 \ --opts MODEL.WEIGHTS models/COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x/137849621/model_final_a6e10b.pkl
結果,
執行,
python demo/demo.py \ --config-file configs/COCO-PanopticSegmentation/panoptic_fpn_R_50_3x.yaml \ --input ../data/bicycle.jpg \ --output _output/bicycle_COCO-PanopticSegmentation.jpg \ --confidence-threshold 0.5 \ --opts MODEL.WEIGHTS models/COCO-PanopticSegmentation/panoptic_fpn_R_50_3x/139514569/model_final_c10459.pkl
結果,
獲取本機的 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)}")
運行,
python demo/demo.py \ --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml \ --webcam \ --confidence-threshold 0.5 \ --opts MODEL.WEIGHTS models/COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl
效果,
GoCoding 我的實踐的經驗分享,可關注公衆號!