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/
执行效果如下图: