基于OpenCV的人员剔除

重磅干货,第一时间送达

把不需要的人从背景中移除是一个有趣的任务。本期,我们一起探索如何使用带OpenCV从实时流中删除一个人。

01.准备工作

1. Python 3.xx(Python 3.7.4)

2. OpenCV(4.1.2版)

要从图像中删除一个对象,我们可能需要一个锚点作为起点,然后复制粘贴每个帧,类似对每个后续帧应用一个Mask。我们可以简单地从锚定框架中复制它,然后将其替换为要从中隐藏对象的当前框架来隐藏要隐藏的区域的坐标。

一个检测帧示例

要解决的第二个问题是找到一种方法来检测要删除的对象。OpenCV提供了一种简单的方法:基于支持向量机的“定向梯度直方图”检测器。它是必不可少的检测器,不是最快,不是最准确,不是最好的,但它可以正常工作。

02.工作流程

1. 实例化 HOGDescriptor

2. 获取视频的第一帧用作遮罩

3. 遍历每一帧,对于每个检测到的人,从第一帧开始用相应的“空”替换该区域

4. 保存输出

03.代码

按照前面描述的工作流程,代码保存在github中,见文末。

让我们测试一下!

像一个老板一样。手放在口袋里消失了!

但是,引用伊隆·马斯克(Elon Musk)的话:“仍有改善的空间”。实际上结果并不是那么精确,尤其是当离相机更近的时候。

在测试了这段代码之后,整个输出看起来有问题且不稳定。因此,需要找到一种方法来改进它:用第一帧替换每个检测到的人似乎是个好方法,因此我可能需要找到一种更好的方法来检测物体!

改进之处:

在搜索COCO的模型ZOO时,我们发现了一个实例分割模型,每幅图像的推理时间为0.07秒,这是最快的实例之一(可能不是最准确的)。

我们自定义了模型,需要安装所有需要的依赖,例如pytorch,torchvision和detectron2:

# install dependencies:!pip install -U torch==1.4+cu100 torchvision==0.5+cu100 -f https://download.pytorch.org/whl/torch_stable.html!pip install cython pyyaml==5.1!pip install -U ‘git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'import torch, torchvision

以下代码和说明已在Google Colab实例上进行了测试,做出此选择是为了使此实验更易于复制,而不会因缺少依赖项,版本冲突和所有经常发生的无聊而苦恼。

然后我们需要安装Detectron2:

# install detectron2:!git clone https://github.com/facebookresearch/detectron2 detectron2_repo!pip install -e detectron2_repo

现在,我们可以继续导入所有需要的库并加载模型:

cfg = get_cfg()cfg.merge_from_file(model_zoo.get_config_file(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”))cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # set threshold for this modelcfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”)predictor = DefaultPredictor(cfg)

无法使用我们的predictor类进行推断,predictor需要在Tensors上返回一个需要转换为numpy数组的数组,然后可以像以前一样迭代该数组:

outputs = predictor(frame)outputs = outputs[“instances”].pred_boxes.to(‘cpu’).tensor.numpy().astype(int)

让我们检查一下最终结果。

Detectron2 VS HOGDetector

从gif可以观察到Detectron2如何更准确地检测到一个人,但是,需要说的是,当然,它需要更多的“深度”配置(依赖有时会很麻烦)。但是,最终结果不言而喻!

代码链接:https://github.com/robertosannazzaro/person-removal-detectron2

交流群

(0)

相关推荐

  • 生物信息

    比较基因组学中,共线性的分析的图无疑是最漂亮的. 共线性分析可以很好地解释进化关系和多倍化事件. 本文主要介绍的是唐老师的Python版McScan(jcvi工具包),这个包很强大,但是其功能在官网的 ...

  • Maskrcnn

    折腾了两天总算跑通了demo,走了不少弯路.参考了很多文章,这里就不详细一一列出了,就总结一下. Github : https://github.com/facebookresearch/maskrc ...

  • Windows10 YOLOV3 VisualStudio2017最新版本超详细过程

    最近两天在看yolo项目,所以想着把作者的项目copy一下运行看一下效果,谁知道一不小心,陷入坑中无法自拔.真实感叹作者的厉害之处. 同时也记录了自己Windows10+YOLOV3+VisualSt ...

  • Shotgun事件驱动的自动化流程

    我们在shotgun中的各种操作都会被记录到Eventlog实体当中,所以如果我们一直轮询Eventlog实体通过对比新增变化就可以实现相关的自动化操作. ShotgunEvents框架 GitHub ...

  • 把你开发的网站免费发布到互联网上(2)

    前几天,我们介绍了通过 PythonAnywhere 在互联网上创建一个站点: 把你开发的网站免费发布到互联网上(1) 本篇是上一篇的延续,来讲一讲如何将已有的 Django 项目部署到 Python ...

  • 社区分享 | TensorFlow Lite 边缘智能快速入门

    导言 这几年我们在日常工作生活中看到越来越多的智能终端设备的出现,如智能家电.商城客服机器人.物流配送无人小车.智能监控等等,它们可以为我们生活带来各种各样的便利.因此,边缘智能与 AIoT 已成为不 ...

  • (4条消息) 用opencv的dnn模块实现Yolo

    最近在微信朋友圈里疯传的Yolo-Fastest(github代码地址是https://github.com/dog-qiuqiu/Yolo-Fastest),据说模型非常小,且运行速度快,而且,这个 ...

  • 基于OpenCV实战:车牌检测

    重磅干货,第一时间送达 拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路的方向发展.如果要给我一张图片,我们如何找到车牌并提取文字? 一般思维步骤: 识别输入数据是图像. 扫描图像以查看由 ...

  • 基于OpenCV实战的图像处理:色度分割

    重磅干货,第一时间送达 通过HSV色阶使用彩色图像可以分割来分割图像中的对象,但这并不是分割图像的唯一方法.为什么大多数人偏爱色度而不是RGB / HSV分割? 可以获得RGB / HSV通道之间的比 ...

  • 基于OpenCV的实战:轮廓检测(附代码解析)

    重磅干货,第一时间送达 利用轮廓检测物体可以看到物体的各种颜色,在这种情况下放置在静态和动态物体上.如果是统计图像,则需要将图像加载到程序中,然后使用OpenCV库,以便跟踪对象. 每当在框架中检测到 ...

  • 基于OpenCV实战:绘制图像轮廓(附代码)

    重磅干货,第一时间送达 山区和地形图中海拔高的区域划出的线称为地形轮廓,它们提供了地形的高程图.这些线条可以手动绘制,也可以由计算机生成.在本文中,我们将看到如何使用OpenCV在简单图像上绘制轮廓线 ...

  • 基于OpenCV实战:动态物体检测

    重磅干货,第一时间送达 最近,闭路电视安全系统运行着多种算法来确保安全,例如面部识别,物体检测,盗窃检测,火灾警报等.我们在运动检测的基础上实现了许多算法,因为在空闲帧上运行所有这些进程没有任何意义. ...

  • 基于OpenCV实战:对象跟踪

    重磅干货,第一时间送达 介绍 跟踪对象的基本思想是找到对象的轮廓,基于HSV颜色值. 轮廓:突出显示对象的图像片段.例如,如果将二进制阈值应用于具有(180,255)的图像,则大于180的像素将以白色 ...

  • (2条消息) 基于OpenCV使用OpenPose进行多个人体姿态估计

    目录 1.网络的体系结构 2.下载模型的权重文件 3. 第一步:生成图片对应的输出 3.1 读取神经网络 3.2 读取图像并生成输入blob 3.3 向前通过网络 3.4 样本输出 4. 第二步:关键 ...

  • 实战:基于OpenCV 的车牌识别

    重磅干货,第一时间送达 车牌识别是一种图像处理技术,用于识别不同车辆.这项技术被广泛用于各种安全检测中.现在让我一起基于OpenCV编写Python代码来完成这一任务. 车牌识别的相关步骤 1.车牌检 ...

  • 实战:基于OpenCV进行长时间曝光(内含彩蛋)

    重磅干货,第一时间送达 在本文中,我们将学习长时间曝光摄影技术,以及如何使用Python和OpenCV(开源计算机视觉库)对其进行仿真. 一.什么是"长时间曝光"? 直接来自维基百 ...