使用opencv实现实例分割,一学就会|附源码

本文介绍如何使用OpenCV和Mask R-CNN进行实例分割,实现视频背景模糊。通过实例分割,可以检测并分割出图像中的每个对象,并在隐私模式下模糊背景。虽然CPU上的实时性能有限,但未来GPU支持有望提升处理速度。
摘要由CSDN通过智能技术生成

无论是从酒店房间接听电话、在办公里楼工作,还是根本不想在家庭办公室等情况,电话会议模糊功能都可以让会议与会者专注于自己,这样的功能对于在家工作并希望保护其家庭成员隐私的人特别有用。
为了实现这样的功能,微软利用计算机视觉、深度学习以及实例分割技术实现。
在之前的博文中,介绍了如何利用YOLO以及OpenCV实现目标检测的功能,今天将采用Mask R-CNN来构建视频模糊功能。

使用OpenCV进行实例分割

1
https://youtu.be/puSN8Dg-bdI


在本教程的第一部分中,将简要介绍实例分割;之后将使用实例分割和OpenCV来实现:
  • 从视频流中检测出用户并分割;
  • 模糊背景;
  • 将用户添加回流本身;

什么是实例分割?

2
图1:对象检测和实例分割之间的区别


如上图所示,对于 对象检测(左图,Object Detection)而言,在各个对象周围绘制出一个框。 实例分割(右图,Instance Segmentation)而言,是需要尝试确定哪些像素属于对应的对象。通过上图,可以清楚地看到两者之间的差异。
执行对象检测时,是需要:
  • 计算每个对象的边界框(x,y的)-坐标;
  • 然后将类标签与每个边界框相关联;

从上可以看出,对象检测并没有告诉我们关于对象本身的形状,而只获得了一组边界框坐标。而另一方面,实例分割需要计算出一个逐像素掩模用于图像中的每个对象。
即使对象具有相同的类标签,例如上图中的两只狗,我们的实例分割算法仍然报告总共三个独特的对象:两只狗和一只猫。
使用实例分割,可以更加细致地理解图像中的对象——比如知道对象存在于哪个(x,y)坐标中。此外,通过使用实例分割,可以轻松地从背景中分割前景对象。
本文使用Mask R-CNN进行实例分割。

项目结构

项目树:

$ tree --dirsfirst
.
├── mask-rcnn-coco
│   ├── frozen_inference_graph.pb
│   ├── mask_rcnn_inception_v2_coco_2018_01_28.pbtxt
│   └── object_detection_classes_coco.txt
└── instance_segmentation.py

1 directory, 4 files

项目包括一个目录(由三个文件组成)和一个Python脚本:

  • mask-rcnn-coco/:Mask R-CNN模型目录包含三个文件:

    • frozen_inference_graph .pb:Mask R-CNN模型的权重,这些权重是在COCO数据集上预先训练所得到的;
    • mask_rcnn_inception_v2_coco_2018_01_28 .pbtxt:Mask R-CNN模型的配置文件,如果你想在自己的数据集上构建及训练自己的模型,可以参阅网上的一些资源更改该配置文件
    • object_detection_classes_coco.txt:此文本文件中列出了数据集中包含的90个类,每行表示一个类别。
  • instance_segmentation .py:背景模糊脚本,本文的核心内容, 将详细介绍该代码并评估其算法性能。

使用OpenCV实现实例分割

下面开始使用OpenCV实现实例分割。首先打开instance_segmenta

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值