码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 百度飞浆EISeg高效交互式标注分割软件的使用教程


    一、前言

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

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

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

    二、实战

    1.安装

    安装百度飞浆的SDK:

    pip install paddlepaddle

    安装EISeg:

    pip install eiseg

    命令行启动:

    eiseg

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

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

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

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

    HRNet18_OCR64模型加载成功

    2.数据集处理与标注

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

    新建 change_name.py  文件

    1. import os
    2. #任何格式的文件都适用
    3. path = r"F:\Datasets\Lane_line_dataset\divide"
    4. filelist = os.listdir(path)
    5. count=0
    6. for file in filelist:
    7. print(file)
    8. for file in filelist:
    9. Olddir=os.path.join(path,file)
    10. if os.path.isdir(Olddir):
    11. continue
    12. filename=os.path.splitext(file)[0]
    13. filetype=os.path.splitext(file)[1]
    14. Newdir=os.path.join(path,str(count).zfill(6)+filetype)
    15. os.rename(Olddir,Newdir)
    16. count+=1

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

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

    paddlex_gui_win10_v1.1.7.exe
    exe 0星 超过10%的资源 648.64MB
    下载

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

     

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

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

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

    新建  get_annotations.py  :

    1. import os
    2. import shutil
    3. def read_name():
    4. source_file_path0 = 'data/label/' #注意opencv库不能打开中文路径
    5. name0 = os.listdir(source_file_path0) #读取源路径下所有文件的名称,将其放在一个列表内返回,每个元素代表一个文件名
    6. new_file_path0 = 'data/annotations/'
    7. return name0, new_file_path0, source_file_path0
    8. if __name__ == "__main__":
    9. name, new_file_path, source_file_path = read_name()
    10. print(name)
    11. for i in name:
    12. if 'png' in i:
    13. png_name=i[:-4]
    14. print("png:", png_name, type(png_name))
    15. if png_name.isdigit():#是返回正
    16. middle_file_name = source_file_path + i #指定文件的路径为路径名加文件名
    17. shutil.copy(middle_file_name, new_file_path) #左边是源文件的路径加文件名称,后面是目标路径,可不加文件名称

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

    1. data
    2. |
    3. |--annotions # 存放所有原图
    4. | |--000000.jpg
    5. | |--000001.jpg
    6. | |--...
    7. |
    8. |--images # 存放所有标注图
    9. | |--000000.png
    10. | |--000001.png
    11. | |--...

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

    python tools/gray2pseudo_color.py <dir_or_file> <output_dir>
    CheckMask.py
    py 0星 超过10%的资源 6KB
    下载

     

     最后进行数据集划分:

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

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

    1. data
    2. |
    3. |--annotions
    4. | |--000000.jpg
    5. | |--000001.jpg
    6. | |--...
    7. |
    8. |--images
    9. | |--000000.png
    10. | |--000001.png
    11. | |--...
    12. |
    13. |--train.txt
    14. |
    15. |--val.txt
    16. |
    17. |--test.txt

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

    1. images\000004.jpg annotations\000004.png
    2. images\000000.jpg annotations\000000.png
    3. ...

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

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

    PPLiteSeg训练自己的数据集实现自动驾驶并爆改制作成API可供其他Python程序调用实时语义分割(超低延时)_Leonard2021的博客-CSDN博客

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

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

  • 相关阅读:
    [架构之路-58]:目标系统 - 平台软件 - 中间件软件(嵌入式)与中间件平台(中台)以及中间件的发展阶段与提供服务的方式
    java计算机毕业设计医院门诊预约系统源程序+mysql+系统+lw文档+远程调试
    闲置树莓派:种朵花然后做延时摄影吧
    微服务和分布式的概念和区别
    基于python3协程的log传输工具
    Qt5 Python-docx库的使用,Qt python混合编程,qt 读写word,不依赖office
    Web安全教程(超详细!从入门到精通!零基础可学!)
    js中将字符串转换为正则
    选择离子风棒需要注意什么?
    2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛—— C 题:竞赛论文的辅助自动评阅完整思路与源代码分享
  • 原文地址:https://blog.csdn.net/weixin_51331359/article/details/126196247
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号