Detectron2 快速开始,使用 WebCam 测试
本文将引导快速使用 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 个人实践的经验分享,可关注公众号!
Detectron2 快速开始,使用 WebCam 测试的更多相关文章
- 快速搭建appium自动测试环境
首先申明本文是基本于Python与Android来快速搭建Appium自动化测试环境: 主要分为以下几个步骤: 前提条件: 1)安装与配置python环境,打开 Python官网,找到"Do ...
- 如何快速掌握DDT数据驱动测试?
1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...
- 使用docker快速搭建Permeate渗透测试系统实践
一.背景 笔者最近在做一场Web安全培训,其中需要搭建一套安全测试环境:在挑选渗透测试系统的时候发现permeate渗透测试系统比较满足需求,便选择了此系统:为了简化这个步骤,笔者将系统直接封装到了d ...
- IntelliJ IDEA快速自动生成Junit测试类
1.背景 测试是保证代码必不可少的环节,自己构建测试方法太慢,并且命名也不规范,idea中提供了,一键构建测试结构的功能...废话不多说,直接写步骤 2.步骤 1.在需要做测试的类的当前窗口,直接按快 ...
- Sqlite 快速批量插入数据 测试
public static int insertDbBatch() { string sql = ""; SQLiteConnection conn = new SQLiteCon ...
- python pandas 使用列表快速创建数据 用于测试
创建数据和行append数据 >>> df = pd.DataFrame([['AA', 1.00], ['Ks', 2.00]], columns=['name', 'age']) ...
- Rspec: everyday-rspec实操: 第9章 快速编写测试,编写快速的测试。
Make it work, make it right, make it fast. 测试运行的时间.应用和测试组件的增长,速度会越来越慢,目标是保持代码的readable, maintainable ...
- 疫情期,如何用A/B测试快速迭代你的产品?
作者:友盟+数据科学家 杨玉莲.陆子骏 冠状病毒来袭牵动着每个人的心,但是病毒影响的不仅仅是我们的健康,也以极快的速度极深远地影响了整个移动互联网的发展.主流阵地原本在线下的需求,如医疗和生鲜电商,快 ...
- 移动应用开发测试工具Bugtags集成和使用教程
前段时间,有很多APP突然走红,最终却都是樱花一现.作为一个创业团队,突然爆红是非常难得的机会.然并卵,由于没有经过充分的测试,再加上用户的激增,APP闪退.服务器数据异常等问题就被暴露出来,用户的流 ...
随机推荐
- IntelliJ IDEA2019.3.2破解/永久激活/安装教程
我想大家用过史上最好的开发工具就是idea了,没有之一!看到大家都在找idea的激活教程,今天我也在这里跟大家分享一下. 本教程针对现在官网针对的版本是idea2019.3.2,为防止以后会更新破解失 ...
- C#获取引用组件的版本信息
/// <summary> /// 当前目录下文件版本 /// </summary> public void FilesVersion ...
- 【题解】「P6832」[Cnoi2020]子弦
[题解]「P6832」[Cnoi2020]子弦第一次写月赛题解( 首先第一眼看到这题,怎么感觉要用 \(\texttt{SAM}\) 什么高科技的?结果一仔细读题,简单模拟即可. 我们不难想出,出现最 ...
- 题解-Words
题面 Words 有 \(n\) 天,每天插入一个字符集大小为 \(c\) 长度为 \(l\) 的字符串,求每一天建立 \(\tt Trie\) 树的期望节点数(根节点不算)模 \(998244353 ...
- ACM训练赛:第20次
这次的题思维都很强,等之后的考试结束会集中精力重新训练一些思维题. A - A simple question CodeForces - 520B 思路: 直接看的话,很容易发现如果 \(n > ...
- Java堆内存中为什么有两个survival区及为什么与年轻代比例是1:1:8?
Java堆内存分为年轻代和老年代,其中,年轻代分为Eden区和survival区,survival又分为fromSurvival和toSurvival. 首先第一个问题:为什么要有Survival区? ...
- python叠加矩形框图层
两种方式以及效果: 方式一,使用PIL.Image.blend方式: from PIL import Image, ImageDraw im = Image.open('d:/tmp/58.249.0 ...
- Docker 安装 Redis 需要注意的地方
Docker 安装 Redis 需要注意的地方 拉取镜像 docker pull redis 可以使用redis:xxx xxx为版本号,不写默认是latest 启动容器 无配置文件无密码: dock ...
- Angular:使用service进行http请求的简单封装
①使用ng g service services/storage创建一个服务组件 ②在app.module.ts 中引入HttpClientModule模块 ③在app.module.ts 中引入创建 ...
- SpringBoot如何利用Actuator来监控应用?
目录 Actuator是什么? 快速开始 引入依赖 yml与自动配置 主程序类 测试 Endpoints 官方列举的所有端点列表 启动端点 暴露端点 配置端点 发现页面 跨域支持 实现一个定义的端点 ...