Mask R-CNN with OpenCV(下)

实战教程

作者:Adrian Rosebrock

编译整理:萝卜兔

项目主要包含两个脚本,但还有其他几个重要的文件。我们按照下图的方式组织项目:

OpenCV and Mask R-CNN in images

下面我们一起来看看Mask R-CNN是如何工作的。在开始之前,确保Python环境安装了OpenCV3.4.3或者更高的版本。需要下载的源代码以及示例图(链接附文末)

打开mask_rcnn.py插入以下代码:

首先,我们将在Lines 2-7导入NumPy和OpenCV。然后解析命令行参数:

我们的脚本要求命令行参数标志和参数在运行时在终端传递。参数在第10-21行解析,其中前两个是必须的,其余的是可选的。

命令行参数存储在args字典中,加载标签和颜色:

加载模型:

接下来,我们将通过Mask R-CNN神经网络加载并传递图像:

现在已经在图像上执行了Mask R-CNN的前向传递,我们要过滤+可视化我们的结果。这正是下一个for循环完成的。这部分很长,我们从下面开始分成五个代码块来看:

图像分割要求我们找到目标的所有像素,因此我们将在目标上层放置一个透明覆盖层,以查看算法的执行情况。为此,我们将计算一个掩膜:

下一个块实现mask、roi和segmented instance可视化:

继续可视化:

最后,我们将在图像上绘制边界框和类别标签+置信度值,并显示结果!

让我们一起试一下Mask R-CNN代码。确认通过本教程给的链接下载了源代码,经过训练的Mask R-CNN和示例图像,从那里打开终端并执行以下命令:

Figure 7:Mask R-CNN应用于汽车场景。Python和OpenCV用于生成蒙版。

在上图中,我们可以看到,Mask R-CNN不仅定位了图像中的每个车辆,而且还构建了像素方式的掩膜,允许我们从图像中分割每辆车。

如果我们运行相同的命令,提供--visualize标志,也可以可视化ROI、Mask以及instance:

Figure 8:使用--visualize flag,可视化ROI、mask和instance

尝试另一张照片:

Figure 9: Mask R-CNN进行实例分割

正确检测并分割了人、狗、马和卡车。

最后一个图像示例:

Mask R-CNN in video streams

上面讲了如何将Mask R-CNN应用于图像,接下来我们来看如何应用于视频。

打开 mask_rcnn_video.py 文件插入下面的代码:

首先,我们导入必要的包并解析命令行参数。然后加载LABELS、COLORS和Mask R-CNN网络:

现在,让我们初始化视频和视频读写器:

接着开始帧处理循环:

循环处理检测到的对象:

我们过滤掉置信度低的候选框,然后确定边界框坐标并获得mask和roi。

现在让我们绘制对象的掩膜,边界框和标签+置信度:

最后,将视频文件写入磁盘并释放视频流对象:

我们来看一下结果,在源代码链接中我没有给出视频文件,需要的话可以去YouTube下载,或者从文末的链接中下载。

打开终端执行以下命令:

Figure11 视频处理结果

上面的视频中可以看到应用了Mask R-CNN的狗和猫的有趣的视频剪辑。

第二个例子:

本教程中的Mask R-CNN是在COCO数据集上预先训练好的,源代码也提供在文末的链接中了。如果想要在自己的数据集上训练Mask R-CNN,可以参考文末的论文以及书籍链接。

参考资料

YOLO Object detector:

https://www.pyimagesearch.com/2018/11/12/yolo-object-detection-with-opencv/

Mask R-CNN论文:

https://arxiv.org/abs/1703.06870

《Deep Learning for Computer Vision with Python》:

https://www.pyimagesearch.com/deep-learning-computer-vision-python-book/

原文链接:

https://www.pyimagesearch.com/2018/11/19/mask-r-cnn-with-opencv/

源代码下载链接:

https://www.getdrip.com/forms/192164124/submissions

视频文件链接:

https://www.youtube.com/watch?v=EtH9Yllzjcc

https://www.youtube.com/watch?v=i59v0p-gAtk

>

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181129A08ALP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券