下载链接:https://github.com/PaddlePaddle/PaddleSeg/tree/develop/EISeg
EISeg(Efficient Interactive Segmentation)是以RITM及EdgeFlow算法为基础,基于飞桨开发的一个高效智能的交互式分割标注软件。涵盖了通用、人像、遥感、医疗等不同方向的高质量交互式分割模型,方便开发者快速实现语义及实例标签的标注,降低标注成本。 另外,将EISeg获取到的标注应用到PaddleSeg提供的其他分割模型进行训练,便可得到定制化场景的高精度模型,打通分割任务从数据标注到模型训练及预测的全流程。
在使用EIseg前,请先下载模型参数。EISeg 0.4.0版本开放了在COCO+LVIS、大规模人像数据、mapping_challenge及LiTS(Liver Tumor Segmentation Challenge)上训练的四个垂类方向模型,满足通用场景、人像场景、建筑物标注及医疗影像肝脏的标注需求。其中模型结构对应EISeg交互工具中的网络选择模块,用户需要根据自己的场景需求选择不同的网络结构和加载参数。
(1)基于HRNet18_OCR64结构的高精度模型,适用于通用场景的图像标注,static_hrnet18_ocr64_cocolvis
(2)基于HRNet18s_OCR48结构的轻量化模型,适用于通用场景的图像标注,static_hrnet18s_ocr48_cocolvis
(3)基于HRNet18_OCR64结构的高精度模型,适用于人像标注场景,static_hrnet18_ocr64_human
(4)基于HRNet18s_OCR48 结构的轻量级模型,适用于人像标注场景,static_hrnet18s_ocr48_human
(5)基于EdgeFlow结构的高精度模型,适用于通用图像标注场景, static_edgeflow_cocolvis
(6)基于HRNet18s_OCR48结构的轻量级模型,适用于遥感建筑物标注场景,static_hrnet18_ocr48_rsbuilding_instance
(7)基于HRNet18s_OCR48结构的轻量级模型,适用于医疗肝脏标注场景,static_hrnet18s_ocr48_lits
NOTE: 将下载的模型结构*.pdmodel及相应的模型参数*.pdiparams需要放到同一个目录下,加载模型时只需选择*.pdiparams结尾的模型参数位置即可, *.pdmodel会自动加载。
EISeg提供多种安装方式,其中使用pip和运行代码方式可兼容Windows,Mac OS和Linux。为了避免环境冲突,推荐在conda创建的虚拟环境中安装。
版本要求:PaddlePaddle >= 2.2.0
PaddlePaddle安装请参考官网。在安装EISeg前,请先安装Paddle。注意:下面提供的所有安装EISeg的方法都需要先安装Paddle才能使用。
通过git将PaddleSeg克隆到本地:
git clone -b develop https://github.com/PaddlePaddle/PaddleSeg.git
安装所需环境(若需要使用到GDAL和SimpleITK请参考垂类分割进行安装):
pip install -r requirements.txt
安装好所需环境后,进入EISeg,可通过直接运行eiseg打开EISeg:
cd PaddleSeg\EISeg
python -m eiseg
或进入eiseg,运行exe.py打开EISeg:
cd PaddleSeg\EISeg\eiseg
python exe.py
pip安装方式如下:
pip install eiseg
pip会自动安装依赖。安装完成后命令行输入:
eiseg
即可运行软件。
打开软件后,在对项目进行标注前,需要进行如下设置:
1.模型参数加载
根据标注场景,选择合适的网络模型及参数进行加载。目前在EISeg0.4.0中,已经将动态图预测转为静态图预测,全面提升单次点击的预测速度。选择合适的模型及参数下载解压后,模型结构*.pdmodel及相应的模型参数*.pdiparams需要放到同一个目录下,加载模型时只需选择*.pdiparams结尾的模型参数位置即可。静态图模型初始化时间稍长,请耐心等待模型加载完成后进行下一步操作。正确加载的模型参数会记录在近期模型参数中,可以方便切换,并且下次打开软件时自动加载退出时的模型参数。
2.图像加载
按下Ctrl+A,打开要标注图片的文件夹,加载图片。
3.标签添加/加载
添加/加载标签。可以通过添加标签新建标签,标签分为4列,分别对应像素值、说明、颜色和删除。新建好的标签可以通过保存标签列表保存为txt文件,其他合作者可以通过加载标签列表将标签导入。通过加载方式导入的标签,重启软件后会自动加载。
4.自动保存设置
在使用中可以将自动保存设置上,设定好文件夹即可,这样在使用时切换图像会自动将完成标注的图像进行保存。
1.多边形
2.保存格式
3.生成mask
4.界面模块
5.垂类分割
6.脚本工具使用
EISeg目前提供包括标注转PaddleX数据集、划分COCO格式以及语义标签转实例标签等脚本工具,相关使用方式详见脚本工具使用。
在个人使用的过程中,发现标注完得到的灰度图,标签的ID号是从0到class_num-1,当需要将ID号改为指定的数值时,可以参考下面代码:
# -*- coding:utf8 -*-
import os
from PIL import Image
im = Image.open('/media/***/label/100.png') # 打开图片
print(im.mode)
pix = im.load() # 导入像素
width = im.size[0] # 获取宽度
height = im.size[1] # 获取长度
for x in range(width):
for y in range(height):
a = im.getpixel((x, y))
rgba = (a)
if (a == 0):
im.putpixel((x, y), (0))
if (a == 1):
im.putpixel((x, y), (255))
im = im.convert('L')
print(im.mode)
im.save('/media/***/label/100_1.png')
批量修改灰度图中的像素值
# -*- coding:utf8 -*-
import os
from PIL import Image
path = 'SegmentationClass(RGBA)/'
savedpath = 'SegmentationClass/'
filelist = os.listdir(path)
for item in filelist:
im = Image.open( path + item )#打开图片
width = im.size[0]#获取宽度
height = im.size[1]#获取长度
for x in range(width):
for y in range(height):
a = im.getpixel((x, y))
rgba = (a)
if (a == 0):
im.putpixel((x, y), (0))
if (a == 1):
im.putpixel((x, y), (255))
im = im.convert('L')
im.save(savedpath + item)
print('item of %s is saved '%(item))
参考链接:
Python之修改图片像素值的方法