手把手教你使用LabVIEW实现Mask R-CNN图像实例分割( 二 )



手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 可以看到 , labels的类型为INT64,所以我们的源码中需要“Get_Rresult_int64.vi,index为1,因为labels为第二层,即下标为1;

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 另外三个输出我们都可以使用float32来获取了 , masks虽然数据类型是uint8,但在实操过程中发现,它其实做过归一化处理了 , 也可以使用float32.

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 后处理并实现实例分割 因为后处理内容较多,所以直接封装为了一个子VI, mask_rcnn_post_process.vi,源码如下:

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 整体的程序框架如下:

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 实例分割结果如下,我们会发现这个模型跑起来 , 他花的时间比之前就更长了 。因为他不但要获取每一个对象的区域,还要也要把这个区域的轮廓给框出来 , 我们可以看到五个人及篮球都框出来了,使用不同的颜色分割出来了 。

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
3、LabVIEW调用 Mask R-CNN 实现实时图像分割(mask rcnn_camera.vi)整体思想和上面检测图片的实力分割差不多,不过使用了摄像头,并加了一个循环,对每一帧对象进行实力分割,3080系列显卡可选择TensorRT加速推理,分割会更加流畅 。我们发现这个模型其实很考验检测数量的,所以如果你只是对人进行分割,那可以选择一个干净一些的背景,整体检测速度就会快很多 。
手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
四、Mask-RCNN训练自己的数据集(检测行人)1.准备工作
  • 训练需要jupyterlab环境,没有安装的同学需要通过pip install jupyterlab 安装
  • 如果无法解决jupyterlab环境 可以使用colab或者kaggle提供的免费gpu环境进行训练
  • 训练源码:mask-rcnn.ipynb
2.开始训练
  • 根据提示运行这段代码 , 自动或手动下载依赖文件数据集并建立数据集解析类

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 定义单轮训练的函数:网络结构直接采用torchvison里现有的,不再重新定义

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 出现如下输出表示训练进行中

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
  • 修改这个文件名 , 改成自己的图片名字,运行看下训练效果

手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
3、训练效果
手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
4、导出ONNX
手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

文章插图
总结以上就是今天要给大家分享的内容 。大家可关注微信公众号: VIRobotics , 回复关键字:Mask R-CNN图像实例分割源码  获取本次分享内容的完整项目源码及模型 。
如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299,进群请备注暗号:LabVIEW 机器学习 。
如果文章对你有帮助 , 欢迎关注、点赞、收藏

推荐阅读