Detectron2 快速開始,使用 WebCam 測試
阿新 • • 發佈:2021-01-19
本文將引導快速使用 Detectron2 ,介紹用攝像頭測試實時目標檢測。
- Detectron2: https://github.com/facebookresearch/detectron2
環境準備
基礎環境
- Ubuntu 18.04
- 系統安裝,可見 製作 USB 啟動盤,及系統安裝
- Nvidia Driver
- 驅動安裝,可見 Ubuntu 初始配置 - Nvidia 驅動
- Anaconda Python
- 從這裡下載 Linux 版本,並安裝
Detectron2
安裝,
# 建立 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 - <<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
訓練的各類模型進行演示。
下載 model
進如下路徑,
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
目標檢測 - Faster R-CNN
執行,
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
結果,
例項分割 - Mask R-CNN
執行,
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
結果,
姿態估計 - Keypoint R-CNN
執行,
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
結果,
全景分割 - Panoptic FPN
執行,
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 攝像頭使用
獲取本機的 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 個人實踐的經驗分享,可關注公眾號!