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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
python logging添加filter教程
Dec 24 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python 如何实现数据库表结构同步
Sep 29 Python
pytorch显存一直变大的解决方案
Apr 08 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
javascript实现密码验证
2015/11/10 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
JS作用域链详解
2017/06/26 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
如何在python中判断变量的类型
2020/07/29 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
学校联谊协议书
2014/09/16 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
MySQL基于索引的压力测试的实现
2021/11/07 MySQL