使用PixelLib库,测试进行图像处理

因为个人毕业设计的需求需要进行图像的切割,这是一个难点所以进行依次测试的记录,是否可以达到试卷中的标记物的切割

pixellib库

首先了解pixellib库所能达到的效果,他的图像分割分为两类一个是语义分割和实例分割

  • 语义分割:将图像中每个像素赋予一个类别标签,用不同的颜色来表示
  • 实例分割:无需对每个像素进行标记,只需要找到感兴趣物体的边缘轮廓

安装库之前设置源为国内

进行python库的源修改,改成清华源

pip临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

 pip设为默认

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

 anaconda设置清华源

提供了 Anaconda 仓库的镜像,Windows 用户无法直接创建名为 .condarc 的文件,可先执行以下命令生成该文件之后再修改:

conda config --set show_channel_urls yes

打开c盘中的用户文件夹下的.condarc文件,复制如下内容

channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

修改后可以通过以下命令清除索引缓存,从而保证镜像站提供的索引

conda clean -i

测试是否成功,这个命令会创建一个conda的虚拟环境,其中myenv是虚拟环境的名字,可以创建多个虚拟环境这样就可以多个版本共存

conda create -n myenv numpy

 conda的其他命令:

查看所有的虚拟环境

conda info --envs

创建虚拟环境其中python为3.8并且版本为3.8中最高的

conda create -n myenv python=3.8

删除myenv虚拟环境

conda remove -n myenv --all

进入虚拟环境

conda activate myenv

退出虚拟环境

conda deactivate myenv

安装需要的库

其中包含tensorflow、pillow、opencv-python、scikit-image、pixellib

tensorflow 是一个开源的、基于 Python 的机器学习框架,它由 Google 开发,并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用,是目前最热门的机器学习框架。

pillow 是一个对 PIL 友好的分支,作者是 Alex Clark 和贡献者。而 PIL 是一个 Python 图像处理库

opencv-python是一个强大的图像处理和计算机视觉库,实现了很多实用算法,值得学习和深究下。

scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样,因此,我们最终选择scikit-image进行数字图像处理。

  pixellib是一个库执行图像分割。它支持两种主要类型的图像分割:语义分割和实例分割,只需几行代码就可以实现语义分段和实例分段。这也是我们这次测试的重点。

使用conda install 库名 进行安装

使用conda list  库名 检查是否已经安装 

使用conda update 库名 更新库

进行安装tensorflow第三方包时报错

Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.

尝试更新conda的所有库

conda update --all   

没有效果

然后进行设置修改链接为灵活的方式,再次进行第三方包的安装操作

conda config --add channels conda-forge
conda config --set channel_priority flexible

 没有效果

看到有人说要加prefix命令对prefix进行更新

conda update --prefix E:\SoftwareInstallation\Anaconda3 anaconda

更新完成之后再次更新conda的所有库

conda update --all   

测试还是不行,可能是国内镜像清华中的Anaconda不包含第三方源

最终我们采用pip的方式安装,我们采用上面介绍的使用设置pip的镜像之后

pip install tensorflow
pip install opencv-python
pip install pixellib

 边安装边使用conda list进行检测

使用xception模型(语义分割)代码测试

import pixellib
from pixellib.semantic import semantic_segmentation

segment_image = semantic_segmentation()
segment_image.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")
segment_image.segmentAsPascalvoc("123.png", output_image_name = "new.png")

使用Mask RCNN模型(实例分割)代码测试 

import pixellib
from pixellib.instance import instance_segmentation
segment_image = instance_segmentation()
segment_image.load_model("mask_rcnn_coco.h5")
segment_image.segmentImage("123.png", output_image_name = "new1.png")

在上面的代码中,我们加载了在load_pascalvoc_model上训练的用于分割对象的xception 模型

xception模型(语义分割)下载地址:
https://github.com/bonlime/keras-deeplab-v3-plus/releases/download/1.1/deeplabv3_xception_tf_dim_ordering_tf_kernels.h5

Mask RCNN模型(实例分割)下载地址:
https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5

其中需要注意我们使用VsCode开发,其中图片和训练的模型需要放在最外层的工作区内,不能放在运行文件夹内

  • path_to_image:图像被分割的路径。

  • path_to_output_image:保存输出图像的路径,图像将被保存在你当前的工作目录中。

研究发现该模型是在pascal voc数据集上训练的xception模型,这个数据集有20个对象类别,自行车、小鸟、小船、瓶子、公共汽车、汽车、猫、椅子、奶牛、餐桌、狗、马、摩托车、个人、盆栽植物、羊、沙发、火车、电视监视器。

使用以下的图片进行测试代码

xception模型(语义分割)运行结果 

 

Mask RCNN模型(实例分割)运行结果 

发现这个训练的模型无法满足我现在试卷分析的要求,这些的训练模型是对基于20种数据集的 ,

继续研究一些图切割

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值