前言
前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现Mask R-CNN图像实例分割。
一、什么是图像实例分割?
图像实例分割(Instance Segmentation)是在语义检测(Semantic Segmentation)的基础上进一步细化,分离对象的前景与背景,实现像素级别的对象分离。并且图像的语义分割与图像的实例分割是两个不同的概念,语义分割仅仅会区别分割出不同类别的物体,而实例分割则会进一步的分割出同一个类中的不同实例的物体。
计算机视觉中常见的一些任务(分类,检测,语义分割,实例分割)
二、什么是Mask R-CNN
Mask R-CNN是一个实例分割(Instance segmentation)算法,可以用来做“目标检测”、“目标实例分割”、“目标关键点检测”。 Mask R-CNN算法步骤:
-
首先,输入一幅你想处理的图片,然后进行对应的预处理操作,或者预处理后的图片;
-
将其输入到一个预训练好的神经网络中(ResNeXt等)获得对应的feature map;
-
对这个feature map中的每一点设定预定的ROI,从而获得多个候选ROI;
-
将这些候选的ROI送入RPN网络进行二值分类(前景或背景)和BB回归,过滤掉一部分候选的ROI
-
接着,对这些剩下的ROI进行ROIAlign操作(即先将原图和feature map的pixel对应起来,然后
-
feature map和固定的feature对应起来);
-
最后,对这些ROI进行分类(N类别分类)、BB回归和MASK生成(在每一个ROI里面进行FCN操作)
三、LabVIEW调用Mask R-CNN图像实例分割模型
1、Mask R-CNN模型获取及转换
-
安装pytorch和torchvision
-
获取torchvision中的模型(我们获取预训练好的模型):
model = models.detection.maskrcnn_resnet50_fpn(pretrained=True)
-
转onnx
1 def get_pytorch