Python代码实现图像语义分割

本文介绍了如何使用Python中的PixelLib库进行图像语义分割,包括环境部署、模型加载和图像分割步骤。通过加载在Pascalvoc数据集上训练的Xception模型,对图像进行分割,并展示了生成带有分段叠加层的图像的代码。同时,文章提到了可能遇到的错误及其解决方法。
摘要由CSDN通过智能技术生成

Python代码实现图像语义分割的步骤详解

原文链接:https://www.jb51.net/article/187249.htm

在网上看到了这篇,代码简洁,身为还没完全入门的小白,每跑通一个程序真的都好开心~

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模型用于语义分割。
下载链接: 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")

在这里插入图片描述

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

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

可能会遇到的错误:

original_keras_version = f.attrs[‘keras_version’].decode(‘utf8’)
AttributeError: ‘str’ object has no attribute ‘decode’

解决办法:
卸载原来的h5py模块,安装2.10版本

pip uninstall h5py

pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/

执行效果如下图:

在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值