5行Python代码实现图像分割的步骤详解


Posted in Python onMay 25, 2020

众所周知图像是由若干有意义的像素组成的,图像分割作为计算机视觉的基础,对具有现有目标和较精确边界的图像进行分割,实现在图像像素级别上的分类任务。

5行Python代码实现图像分割的步骤详解

图像分割可分为语义分割和实例分割两类,区别如下:

  • 语义分割:将图像中每个像素赋予一个类别标签,用不同的颜色来表示;
  • 实例分割:无需对每个像素进行标记,只需要找到感兴趣物体的边缘轮廓。

图像分割通常应用如下所示:

  • 专业检测:应用于专业场景的图像分析,比如在卫星图像中识别建筑、道路、森林,或在医学图像中定位病灶、测量面积等;
  • 智能交通:识别道路信息,包括车道标记、交通标志等。

本博客主要通过PixelLib模块帮助用户快速便捷实现图像分割。

5行Python代码实现图像分割的步骤详解

1、环境部署

在进行项目设计前,需要安装所需的第三方库文件:TensorFlow、Pillow、OpenCV-Python、scikit-image和PixelLib,指令如下所示:

pip install tensorflow
pip install pillow
pip install opencv-python
pip install scikit-image
pip install pixellib

2、语义分割

PixelLib使用Deeplabv3+框架实现语义分割,在pascalvoc数据集上训练的Xception模型用于语义分割。

第1步:导入PixelLib模块,代码如下所示:

import pixellib
from pixellib.semantic import semantic_segmentation

第2步:创建用于执行语义分割的类实例,代码如下所示:

segment_image = semantic_segmentation()

第3步:调用load_pascalvoc_model()函数加载在Pascal voc上训练的Xception模型,代码如下所示:

segment_image.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")

第4步:调用segmentAsPascalvoc()函数对图像进行分割,并且分割采用pascalvoc的颜色格式进行。此函数有两个必选参数:

  • path_to_image:分割的目标图像的路径;
  • path_to_output_image:保存分割后输出图像的路径。

将路径替换为自己环境路径即可,代码如下所示:

segment_image.segmentAsPascalvoc("path_to_image", output_image_name = "path_to_output_image")

上传图像,语义分割后效果如下所示:

5行Python代码实现图像分割的步骤详解

也可以生成了带有分段叠加层的图像,只需要将segmentAsPascalvoc()函数的overlay属性设置为True,代码如下所示:

segment_image.segmentAsPascalvoc("sample1.jpg", output_image_name = "image_new.jpg", overlay = True)

分段叠加层效果如下所示:

5行Python代码实现图像分割的步骤详解

3、即时分割

PixelLib的实例分割基于MaskRCNN框架实现,也仅需5行Python代码实现。

第1步:导入PixelLib模块,代码如下所示:

import pixellib
from pixellib.instance import instance_segmentation

第2步:导入用于执行实例细分的类并创建该类的实例,代码如下所示:

segment_image = instance_segmentation()

第3步:调用load_model()函数加载Mask RCNN模型以执行实例分割的代码,代码如下所示:

segment_image.load_model("mask_rcnn_coco.h5")

第4步:调用segmentImage()函数对图像执行实例分割。此函数有两个必选参数:

  • path_to_image:模型要预测的图像的路径;
  • output_image_name:保存分割结果的路径。

将路径替换为自己环境路径即可,代码如下所示:

segment_image.segmentImage("path_to_image", output_image_name = "output_image_path")

上传图像,即时分割后效果如下所示:

5行Python代码实现图像分割的步骤详解

也可以生成分割蒙版边界框,只需要将show_bboxes()函数的overlay属性设置为True,代码如下所示:

segment_image.segmentImage("sample2.jpg", output_image_name = "image_new.jpg", show_bboxes = True)

生成分割蒙版边界框效果如下所示:

5行Python代码实现图像分割的步骤详解

到此这篇关于5行Python代码实现图像分割的步骤详解的文章就介绍到这了,更多相关Python 图像分割内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python进阶篇之字典操作总结
Nov 16 Python
python线程中同步锁详解
Apr 27 Python
python3处理含有中文的url方法
May 10 Python
python实现京东秒杀功能
Jul 30 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
python hough变换检测直线的实现方法
Jul 12 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
python如何编写win程序
Jun 08 Python
python Matplotlib数据可视化(1):简单入门
Sep 30 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 #Python
keras .h5转移动端的.tflite文件实现方式
May 25 #Python
Python虚拟环境venv用法详解
May 25 #Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 #Python
tensorflow转换ckpt为savermodel模型的实现
May 25 #Python
基于Python把网站域名解析成ip地址
May 25 #Python
使用keras和tensorflow保存为可部署的pb格式
May 25 #Python
You might like
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
Python函数参数类型*、**的区别
2015/04/11 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
wxPython的安装与使用教程
2018/08/31 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
岗位职责风险点
2014/03/12 职场文书
幼儿园课题方案
2014/06/09 职场文书
消防安全月活动总结
2015/05/08 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS