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抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
Python编程之序列操作实例详解
Jul 22 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
Python获取指定字符前面的所有字符方法
May 02 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python仿evething的文件搜索器实例代码
May 13 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
python实现sublime3的less编译插件示例
2014/04/27 Python
Python操作MySQL简单实现方法
2015/01/26 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
详谈python read readline readlines的区别
2017/09/22 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Django自带的用户验证系统实现
2020/12/18 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
linux面试相关问题
2013/04/28 面试题
企划经理的岗位职责
2013/11/17 职场文书
初中女生自我鉴定
2013/12/19 职场文书
申论倡议书范文
2014/05/13 职场文书
2014年医生工作总结
2014/11/21 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
2016高考寄语集锦
2015/12/04 职场文书