1、基本介绍
EISeg(Efficient Interactive Segmentation)是以RITM及EdgeFlow算法为基础,基于飞桨开发的一个高效智能的交互式分割标注软件。涵盖了通用、人像、遥感、医疗等不同方向的高质量交互式分割模型,方便开发者快速实现语义及实例标签的标注,降低标注成本。 另外,将EISeg获取到的标注应用到PaddleSeg提供的其他分割模型进行训练,便可得到定制化场景的高精度模型,打通分割任务从数据标注到模型训练及预测的全流程。
1.1 模型准备
在使用EIseg前,请先下载模型参数。EISeg 0.5.0版本开放了在COCO+LVIS、大规模人像数据、mapping_challenge,Chest X-Ray,MRSpineSeg,LiTS及百度自建质检数据集上训练的7个垂类方向模型,满足通用场景、人像场景、建筑物标注,医疗影像肝脏,胸腔,椎骨及铝板质检的标注需求。其中模型结构对应EISeg交互工具中的网络选择模块,用户需要根据自己的场景需求选择不同的网络结构和加载参数。
模型类型 | 适用场景 | 模型结构 | 模型下载地址 |
---|---|---|---|
高精度模型 | 通用场景的图像标注 | HRNet18_OCR64 | static_hrnet18_ocr64_cocolvis |
轻量化模型 | 通用场景的图像标注 | HRNet18s_OCR48 | static_hrnet18s_ocr48_cocolvis |
高精度模型 | 通用图像标注场景 | EdgeFlow | static_edgeflow_cocolvis |
高精度模型 | 人像标注场景 | HRNet18_OCR64 | static_hrnet18_ocr64_human |
轻量化模型 | 人像标注场景 | HRNet18s_OCR48 | static_hrnet18s_ocr48_human |
轻量化模型 | 遥感建筑物标注场景 | HRNet18s_OCR48 | static_hrnet18_ocr48_rsbuilding_instance |
高精度模型* | x光胸腔标注场景 | Resnet50_Deeplabv3+ | static_resnet50_deeplab_chest_xray |
轻量化模型 | 医疗肝脏标注场景 | HRNet18s_OCR48 | static_hrnet18s_ocr48_lits |
轻量化模型* | MRI椎骨图像标注场景 | HRNet18s_OCR48 | static_hrnet18s_ocr48_MRSpineSeg |
轻量化模型* | 质检铝板瑕疵标注场景 | HRNet18s_OCR48 | static_hrnet18s_ocr48_aluminium |
NOTE: 将下载的模型结构*.pdmodel
及相应的模型参数*.pdiparams
需要放到同一个目录下,加载模型时只需选择*.pdiparams
结尾的模型参数位置即可, *.pdmodel
会自动加载。在使用EdgeFlow
模型时,请将使用掩膜
关闭,其他模型使用时请勾选使用掩膜
。其中,高精度模型
推荐使用带有显卡的电脑,以便获得更流畅的标注体验。
1.2 安装
EISeg提供多种安装方式,其中使用pip和运行代码方式可兼容Windows,Mac OS和Linux。为了避免环境冲突,推荐在conda创建的虚拟环境中安装。
版本要求:
- PaddlePaddle >= 2.2.0
PaddlePaddle安装请参考官网。
通过git将PaddleSeg克隆到本地:
git clone 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安装方式如下:
pip install eiseg
pip会自动安装依赖。安装完成后命令行输入:
python -m eiseg
即可运行软件。
1.2 使用
打开软件后,在对项目进行标注前,需要进行如下设置:
-
模型参数加载
根据标注场景,选择合适的网络模型及参数进行加载。目前在EISeg0.4.0中,已经将动态图预测转为静态图预测,全面提升单次点击的预测速度。选择合适的模型及参数下载解压后,模型结构
*.pdmodel
及相应的模型参数*.pdiparams
需要放到同一个目录下,加载模型时只需选择*.pdiparams
结尾的模型参数位置即可。静态图模型初始化时间稍长,请耐心等待模型加载完成后进行下一步操作。正确加载的模型参数会记录在近期模型参数
中,可以方便切换,并且下次打开软件时自动加载退出时的模型参数。 -
图像加载
打开图像/图像文件夹。当看到主界面图像正确加载,
数据列表
正确出现图像路径即可。 -
标签添加/加载
添加/加载标签。可以通过
添加标签
新建标签,标签分为4列,分别对应像素值、说明、颜色和删除。新建好的标签可以通过保存标签列表
保存为txt文件,其他合作者可以通过加载标签列表
将标签导入。通过加载方式导入的标签,重启软件后会自动加载。 -
自动保存设置
在使用中可以将
自动保存
设置上,设定好文件夹即可,这样在使用时切换图像会自动将完成标注的图像进行保存。
当设置完成后即可开始进行标注,默认情况下常用的按键/快捷键如下,如需修改可按E
弹出快捷键修改。
部分按键/快捷键 | 功能 |
---|---|
鼠标左键 | 增加正样本点 |
鼠标右键 | 增加负样本点 |
鼠标中键 | 平移图像 |
Ctrl+鼠标中键(滚轮) | 缩放图像 |
S | 切换上一张图 |
F | 切换下一张图 |
Space(空格) | 完成标注/切换状态 |
Ctrl+Z | 撤销 |
Ctrl+Shift+Z | 清除 |
Ctrl+Y | 重做 |
Ctrl+A | 打开图像 |
Shift+A | 打开文件夹 |
E | 打开快捷键表 |
Backspace(退格) | 删除多边形 |
鼠标双击(点) | 删除点 |
鼠标双击(边) | 添加点 |
1.3 特色功能使用说明
-
多边形
- 交互完成后使用Space(空格)完成交互标注,此时出现多边形边界;
- 当需要在多边形内部继续进行交互,则使用空格切换为交互模式,此时多边形无法选中和更改。
- 多边形可以删除,使用鼠标左边可以对锚点进行拖动,鼠标左键双击锚点可以删除锚点,双击两点之间的边则可在此边添加一个锚点。
- 打开
保留最大连通块
后,所有的点击只会在图像中保留面积最大的区域,其余小区域将不会显示和保存。
-
保存格式
- 打开保存
JSON保存
或COCO保存
后,多边形会被记录,加载时会自动加载。 - 若不设置保存路径,默认保存至当前图像文件夹下的label文件夹中。
- 如果有图像之间名称相同但后缀名不同,可以打开
标签和图像使用相同扩展名
。 - 还可设置灰度保存、伪彩色保存和抠图保存,见工具栏中7-9号工具。
- 打开保存
-
生成mask
- 标签按住第二列可以进行拖动,最后生成mask时会根据标签列表从上往下进行覆盖。
-
界面模块
- 可在
显示
中选择需要显示的界面模块,正常退出时将会记录界面模块的状态和位置,下次打开自动加载。
- 可在
-
垂类分割
EISeg目前已添加对遥感图像和医学影像分割的支持,使用相关功能需要安装额外依赖。
- 分割遥感图像请安装GDAL,相关安装及介绍具体详见遥感标注垂类建设。
- 分割医学影像请安装SimpleITK,相关安装及介绍具体详见医疗标注垂类建设。
-
脚本工具使用
EISeg目前提供包括标注转PaddleX数据集、划分COCO格式以及语义标签转实例标签等脚本工具,相关使用方式详见脚本工具使用。
2、遥感相关
以下内容为EISeg中遥感垂类相关的文档,主要包括环境配置和功能介绍两大方面。
2.1 环境配置
EISeg中对遥感数据的支持来自GDAL/OGR,GDAL是一个在X/MIT许可协议下的开源栅格空间数据转换库,OGR与其功能类似但主要提供对矢量数据的支持。
2.2 依赖安装
关于GDAL的安装,可参考如下安装方式:
2.2.1 Windows
Windows用户可以通过这里下载对应Python和系统版本的二进制文件(*.whl)到本地,以GDAL‑3.3.3‑cp39‑cp39‑win_amd64.whl为例,进入下载目录:
cd download
安装依赖:
pip install GDAL‑3.3.3‑cp39‑cp39‑win_amd64.whl
2.2.2 Linux/Mac安装
Mac用户建议利用conda安装,如下:
conda install gdal
2.3 功能介绍
目前EISeg中的遥感垂类功能建设还比较简单,基本完成了GTiff类数据加载、大幅遥感影像切片与合并、地理栅格/矢量数据(GTiff/ESRI Shapefile)导出。并基于各类建筑提取数据集40余万张数据训练了一个建筑分割的交互式模型。
2.3.1 数据加载
目前EISeg仅支持了*.tif/tiff图像后缀的的遥感影像读取,由于训练数据都是来自于RGB三通道的遥感图像切片,因此交互分割也仅在RGB三通道上完成,也就表示EISeg支持多波段数据的波段选择。
当使用EISeg打开GTiff图像时,会获取当前波段数,可通过波段设置的下拉列表进行设置。默认为[b1, b1, b1]。下例展示的是天宫一号多光谱数据设置真彩色:
2.3.2 大幅数据切片
目前EISeg对于大幅遥感图像(目前最大尝试为900M,17000*10000大小三通道图像),支持切片预测后合并,其中切片的重叠区域overlap为24。
下面是一副来自谷歌地球的重庆部分地区的切片演示:
2.3.3 地理数据保存
当打开标注的GTiff图像带有地理参考,可设置EISeg保存时保存为带有地理参考的GTiff和ESRI Shapefile。
- GTiff:已成为GIS和卫星遥感应用的行业图像标准文件。
- ESRI Shapefile:是最常见的的矢量数据格式,Shapefile文件是美国环境系统研究所(ESRI)所研制的GIS文件系统格式文件,是工业标准的矢量数据文件。 所有的商业和开源GIS软件都支持。无处不在的它已成为行业标准。
2.4 遥感标注模型选择
建筑物标注建议使用static_hrnet18_ocr48_rsbuilding_instance
3、EISeg打包
打包步骤
-
克隆当前repo(可有可无的步骤):
git clone https://github.com/geoyee/eiseg2exe.git
-
在当前能够正常使用EISeg的环境中安装QPT:
python -m pip install qpt -i https://mirrors.bfsu.edu.cn/pypi/web/simple
-
将EISeg最新的代码(去掉.git文件)替换文件夹下的EISeg文件夹:
- PaddlePaddle/PaddleSeg(内部的EISeg文件夹)
- PaddleCV-SIG/EISeg
-
进入
EISeg
文件夹,删除.github
和.idea
文件夹。 -
再运行
qpt_pack.py
脚本:python qpt_pack.py
-
进入
EISeg/requirements_with_opt.txt
,注释掉GDAL,添加QPT,并将paddlepaddle-gpu改为paddlepaddle,回车确认,等待打包完成。# -------------Mainly depends on package analysis results--------------pycocotools==2.0.2 paddlepaddle==2.2.0 # 替换 paddlepaddle-gpu==2.2.0 beautifulsoup4==4.9.3 # gdal==3.2.3 # 注释 qtpy==1.9.0 albumentations==0.5.2 simpleitk==2.0.2 easydict==1.9 visualdl==2.2.0 pyqt5==5.15.4 paddleseg==2.3.0 imgaug==0.4.0 qpt==1.0b1.dev11 # 增加
-
复制目录下的
GDAL-3.2.3-cp38-cp38-win_amd64.whl
到out/Debug(Release)/opt/packages
下,完成GDAL的打包。
使用
- Debug下的exe用于测试。
- 发布只需把Release打包为zip即可。