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完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
Python中利用sorted()函数排序的简单教程
Apr 27 Python
详解python开发环境搭建
Dec 16 Python
python 全文检索引擎详解
Apr 25 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
提升Python程序性能的7个习惯
Apr 14 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
Django 解决开发自定义抛出异常的问题
May 21 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
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
Js sort排序使用方法
2011/10/17 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
Python将xml和xsl转换为html的方法
2015/03/10 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
python 实时遍历日志文件
2016/04/12 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
python 字典(dict)按键和值排序
2016/06/28 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
前处理组长岗位职责
2014/03/01 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
安全目标责任书
2014/07/22 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书