百度飞浆EISeg高效交互式标注分割软件的使用教程

这篇具有很好参考价值的文章主要介绍了百度飞浆EISeg高效交互式标注分割软件的使用教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

官方原话:EISeg(Efficient Interactive Segmentation)是基于飞桨开发的一个高效智能的交互式分割标注软件。涵盖了高精度和轻量级等不同方向的高质量交互式分割模型,方便开发者快速实现语义及实例标签的标注,降低标注成本。 另外,将EISeg获取到的标注应用到PaddleSeg提供的其他分割模型进行训练,便可得到定制化场景的高精度模型,打通分割任务从数据标注到模型训练及预测的全流程。

官方GitHub:PaddleSeg/EISeg at release/2.6 · PaddlePaddle/PaddleSeg · GitHub

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 由于我也常常使用百度飞浆的PaddleSeg框架,与ElSeg标注得到的文件也是适配的,且相比LabelMe的比较繁琐的标注,ElSeg的标注更加省时省力。ElSeg支持COCO格式和Json格式的保存方式,适配度高。

二、实战

1.安装

安装百度飞浆的SDK:

pip install paddlepaddle

安装EISeg:

pip install eiseg

命令行启动:

eiseg

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 成功开启,这里还没导入相应的预训练模型,需要提前去官网选择下载相关的预训练模型:

官网:PaddleSeg/image.md at release/2.6 · PaddlePaddle/PaddleSeg · GitHub

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 这里我使用的是HRNet18_OCR64通用场景标注的高精度模型,下载好后导入到EISeg中使用:

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 加载完成后,左下角会有一行小字显示:

HRNet18_OCR64模型加载成功

2.数据集处理与标注

将原始数据集进行重命名和归一化处理:

新建 change_name.py  文件

import os
#任何格式的文件都适用
path = r"F:\Datasets\Lane_line_dataset\divide"
filelist = os.listdir(path)
count=0
for file in filelist:
    print(file)
for file in filelist:
    Olddir=os.path.join(path,file)
    if os.path.isdir(Olddir):
        continue
    filename=os.path.splitext(file)[0]
    filetype=os.path.splitext(file)[1]
    Newdir=os.path.join(path,str(count).zfill(6)+filetype)
    os.rename(Olddir,Newdir)
    count+=1

将原始图像的命名格式改为:000000、000001、000002等(以此类推)

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 在EISeg中选择重命名后的数据集文件夹进行标注,将输出标注的格式修改为json格式(默认下是输出COCO格式):

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

我选择的是一个无人车的车道线数据集,自定义分割标签的名称和对应颜色,设置好后导出备用:

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 然后就可以开始标注了,鼠标左键是正向趋势的标注,鼠标右键是逆向趋势的标注,你可以自行尝试使用。重要的一点是,每次标注完一种颜色则需要点保存,再开始标注另一种颜色。

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 全部标注完成后会在原始文件夹下产生一个新的文件夹:labels文件夹,内含:

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 其中,黑色的、只以数字为图像名称的图像就是我们PaddleSeg训练所需要的 annotations,我用程序将其分离开来:

新建  get_annotations.py  :

import os
import shutil


def read_name():
    source_file_path0 = 'data/label/'				#注意opencv库不能打开中文路径
    name0 = os.listdir(source_file_path0)					#读取源路径下所有文件的名称,将其放在一个列表内返回,每个元素代表一个文件名
    new_file_path0 = 'data/annotations/'
    return name0, new_file_path0, source_file_path0


if __name__ == "__main__":
    name, new_file_path, source_file_path = read_name()
    print(name)
    for i in name:
        if 'png' in i:
            png_name=i[:-4]
            print("png:", png_name, type(png_name))
            if png_name.isdigit():#是返回正
                middle_file_name = source_file_path + i			#指定文件的路径为路径名加文件名
                shutil.copy(middle_file_name, new_file_path)	#左边是源文件的路径加文件名称,后面是目标路径,可不加文件名称

PaddleSeg训练所需要数据集架构:

data
    |
    |--annotions          # 存放所有原图
    |  |--000000.jpg
    |  |--000001.jpg
    |  |--...
    |
    |--images           # 存放所有标注图
    |  |--000000.png
    |  |--000001.png
    |  |--...

我们再将annotions内图像进行伪彩色标注图处理

python tools/gray2pseudo_color.py <dir_or_file> <output_dir>

 elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 最后进行数据集划分:

python tools/split_dataset_list.py <dataset_root> images annotations --split 0.6 0.2 0.2 --format jpg png

elseg,深度学习,计算机视觉,语义分割,python,paddlepaddle

 得到最终训练所需的数据集架构:

data
    |
    |--annotions
    |  |--000000.jpg
    |  |--000001.jpg
    |  |--...
    |
    |--images
    |  |--000000.png
    |  |--000001.png
    |  |--...
    |
    |--train.txt
    |
    |--val.txt
    |
    |--test.txt

三个txt文件的内容如下,每行是一张原始图片和标注图片的相对路径(相对于txt文件),两个相对路径中间是空格分隔符。

images\000004.jpg annotations\000004.png
images\000000.jpg annotations\000000.png
...

 至此,PaddleSeg进行语义分割训练所需要的数据集架构基本完成。

使用PaddleSeg训练自己数据集的教程:

PPLiteSeg训练自己的数据集实现自动驾驶并爆改制作成API可供其他Python程序调用实时语义分割(超低延时)_Leonard2021的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-559571.html

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

本文到此结束,如果对你有帮助,欢迎一键三连!

到了这里,关于百度飞浆EISeg高效交互式标注分割软件的使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 人机交互学习-5 交互式系统的需求

    人机交互学习-5 交互式系统的需求

    关于目标产品的一种陈述,它指定了产品应做什么,或者应如何工作 应该是具体、明确和无歧义的 搜集数据 解释数据 提取需求 注:了解 功能不同 智能冰箱:应能够提示黄油已用完 字处理器:系统应支持多种格式 物理条件不同 移动设备运行的系统应尽可能小,屏幕显示限

    2024年02月09日
    浏览(12)
  • 人机交互学习-6 交互式系统的设计

    人机交互学习-6 交互式系统的设计

    Allan Cooper建议不要过早地把重点放在小细节、小部件和精细的交互上会妨碍产品的设计,应先站在一个高层次上关注用户界面和相关行为的整体结构 Allan Cooper提出的交互框架不仅 定义了高层次的屏幕布局 ,同时定义了 产品的工作流、行为和组织 。它包括了6个主要步骤:

    2024年02月09日
    浏览(11)
  • Pyspark交互式编程

    Pyspark交互式编程 有该数据集Data01.txt 该数据集包含了某大学计算机系的成绩,数据格式如下所示: 根据给定的数据集,在pyspark中通过编程来完成以下内容: 该系总共有多少学生; (提前启动好pyspark) 该系共开设了多少门课程; Tom同学的总成绩平均分是多少; 求每名同学的

    2023年04月08日
    浏览(19)
  • 交互式shell

    交互式shell

    交互式模式就是shell等待用户的输入,并且执行用户提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当用户签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模

    2024年02月02日
    浏览(10)
  • 构建一个动态交互式图表

    在Web开发中,JavaScript不仅是实现交互效果的关键,还可以用于构建复杂的可视化组件,如动态交互式图表。在本篇博客中,我将演示如何使用JavaScript和HTML5的Canvas元素来创建一个简单的动态条形图。 HTML结构  首先,我们需要一个HTML结构来容纳我们的图表。 JavaScript实现 接下

    2024年02月20日
    浏览(14)
  • 【非交互式零知识证明】(下)

    【非交互式零知识证明】(下)

    继续上一节的内容,我们首先再回顾一下经典交互式零知识证明。 交互式零知识证明的一般模型如下: (1)证明者和验证者共享一个公共输入,证明者可能拥有某个秘密输入; (2)如果验证者认可证明者的响应,则输出Accept,否则输出Reject。 经典交互式零知识证明除了应

    2024年02月04日
    浏览(15)
  • Android2:构建交互式应用

    Android2:构建交互式应用

    一。创建项目 项目名 Beer Adviser 二。更新布局 activity_main.xml 三。增加资源 strings.xml 四。响应点击 MainActivity.kt 知识点:

    2024年02月12日
    浏览(15)
  • Matlab交互式的局部放大图

    Matlab交互式的局部放大图

    在数据可视化中,很多时候需要对某一区间的数据进行局部放大,以获得对比度更高的可视化效果。下面利用 MATLAB 语言实现一个交互式的局部放大图绘制。 源码自行下载: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取码:9dyl 使用方法 : 1.将 BaseZoom.m 和 parameters

    2024年01月16日
    浏览(16)
  • 使用 htmx 构建交互式 Web 应用

    学习目标:了解htmx的基本概念、特点和用法,并能够运用htmx来创建交互式的Web应用程序。 学习内容: 1. 什么是htmx?    - htmx是一种用于构建交互式Web应用程序的JavaScript库。    - 它通过将HTML扩展为一种声明性的交互式语言,使得开发人员可以使用简单的HTML标记来实现动态

    2024年02月10日
    浏览(12)
  • 【shell】交互式自动化执行命令

    sftp 登陆并传输文件时需要手动输入密码 通过 expect 脚本模拟用户输入来与命令交互, 根据命令的输出提示, 来执行相应的操作, 来实现自动化 expect 给变量赋值用 set 变量名 \\\"变量值\\\" 获取今天 : set today [clock format [clock seconds] -format %Y-%m-%d] 获取昨天 : set yesterday [clock format [expr

    2024年02月09日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包