有关深度学习打标签DIY的五种方式

有关深度学习打标签DIY的五种方式:Labelme、LabelImg、EISeg、Make Sence和CVat等

  • 五种制作Label的方式:
    • 1.CVAT(Open Data Annotation Platform)
    • 2.EISeg(Efficient Interactive Segmentation)自动标注
    • 3.Make Sence在线标注(对Yolo和VOC格式十分友好)
    • 4.LabelImg和Labelme
  • 注入json2txt以及json2xml的python脚本(其它的转换脚本持续更新中...)

五种制作Label的方式:

1.CVAT(Open Data Annotation Platform)

  1. 了解
  2. CVAT开放注释平台:https://www.cvat.ai/
    在这里插入图片描述
    此平台由:
    在这里插入图片描述
    共同开发,可以进行图像分类、目标检测、语义和实例分割、点云/雷达、3D立方体、视频注释和骨架等等。
    在这里插入图片描述
  3. 准备开始
  4. 在线:https://app.cvat.ai/tasks?page=1
  5. 离线:
    Installation on Ubuntu
    Installation on Windows 10
    Installation on Mac OS
    (1) 需要邮箱注册:
    在这里插入图片描述
    (2)开始:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (补充,Advanced configuration里面包含:数据格式、图像质量、数据集仓库URL等),以手动多边形标注为例:
    在这里插入图片描述在这里插入图片描述
    参考:
    目标检测数据集标注工具 CVAT 使用方法
    使用Amazon SageMaker部署CVAT AI自动图像标注系统

2.EISeg(Efficient Interactive Segmentation)自动标注

代码和论文网址:
https://github.com/PaddlePaddle/PaddleSeg
EISeg: Effective interactive segmentation

  1. 了解
    基于飞桨开发的一个高效智能的交互式分割标注软件。它涵盖了通用、人像、遥感、医疗、视频等不同方向的高质量交互式分割模型。 另外,将EISeg获取到的标注应用到PaddleSeg提供的其他分割模型进行训练,便可得到定制化场景的高精度模型,打通分割任务从数据标注到模型训练及预测的全流程。
    在这里插入图片描述
  2. 安装:
pip install opencv-python==4.5.5.64
pip install opencv-contrib-python==4.5.5.64
pip install opencv-python-headless==4.5.5.64
pip install eiseg

在这里插入图片描述
参考:百度智能语义分割开源软件EIseg新手安装指南
我是安装的PaddlePaddle-gpu、
终端输入:eiseg打开:
下载模型:
在这里插入图片描述
我下载的是:高精度模型,通用图像标注场景,EdgeFlow,static_edgeflow_cocolvis。
然后加载的时候:
在这里插入图片描述
出现错误:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.
不管许多,上解决方式:
代码前加入两行如下代码即可:

import os
os.environ["KMP_DUPLICATE_LIB_OK"]  =  "TRUE"

之后载入一段时间:
在这里插入图片描述
可以正常使用。
因为我需要的是yolo格式的标签文件,但是该eiseg只支持coco和json格式,所以有一个json2txt的python代码参考:

python">#处理labelme多边形矩阵的标注  json转化txt
#!/usr/bin/ python
# -*- encoding: utf-8 -*-
import json
import cv2
import numpy as np
import glob

def totxt():
        # 第二列:中心归一化横坐标(x)
        # 第三列:中心归一化纵坐标(y)
        # 第四列:归一化宽度(w)
        # 第五列:归一化高度(h)

        height,width = img.shape[0],img.shape[1]
        dw = 1 / width
        dh = 1/ height
        
        with open(out_txt_file, "w+") as f:
            for shape in data:
                points = shape["points"]
                cls_id = shape["labelIdx"]-1
                xmin, ymin, w, h = cv2.boundingRect(np.array(points, dtype=np.int))
                xmax = xmin+w
                ymax = ymin+h

                x = (xmin + xmax) / 2.0 - 1
                y = (ymin + ymax) / 2.0 - 1
                w = xmax - xmin
                h = ymax - ymin
                if w < 50 or h < 50:
                    continue
                x = x * dw
                w = w * dw
                y = y * dh
                h = h * dh
                f.write("%s %s %s %s %s\n"%(cls_id,x, y, w, h))


if __name__=="__main__":
    # 文件列表
    json_list = glob.glob("Annotations/*.json")
    for file in json_list:
        basename = file.split("\\")[-1].split(".")[0]
        # 读取图片
        img = cv2.imread("images/"+basename+".png")
        if img is None:
            continue
        # 读取json文件
        data = ""
        with open(file, 'r', encoding='utf-8') as f:
            data = json.load(f)
      	# yololabels
        out_txt_file = "labels/" + basename + ".txt"
        totxt()

参考:
使用EISeg自动标注数据,yolov5训练模型(保姆教程)
PaddlePaddle/PaddleSeg
PaddleLabel机器学习辅助标注后端

3.Make Sence在线标注(对Yolo和VOC格式十分友好)

网址:https://www.makesense.ai/
在这里插入图片描述
很好上手:
在这里插入图片描述
标注结束,多边形支持导出VGG Json和COCO Json格式,矩形框支持导出yolo、csv和VOC xml格式。
在这里插入图片描述
在这里插入图片描述

4.LabelImg和Labelme

LabelImg 标注工具:https://github.com/heartexlabs/labelImg
安装LabelImg之前需要安装:

pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install PyQt5_tools -i https://pypi.tuna.tsinghua.edu.cn/simple

LabelImg 的界面如下所示:
在这里插入图片描述
只能正方形,适合做分类,不太适合做实例分割的数据集标注。LabelImg 可以保存三种数据格式:PASCAL VOC: voc 的xml 格式,yolo 格式和ML格式。
而labelme可以直接安装:

pip install labelme

打开:
在这里插入图片描述

labelme支持多边形操作,只能导出json格式,需要的话,还要进行xml或者txt转换。

python_152">注入json2txt以及json2xml的python脚本(其它的转换脚本持续更新中…)

Python+Matlab+Halcon语言的转换文件合集


http://www.niftyadmin.cn/n/363500.html

相关文章

M洞察|“MOBA”还是“MMO”?2023上半年热门手游大盘点来了,拯救你的游戏荒

2023年Q1中国移动游戏市场整体表现不及预期&#xff0c;实际销售收入为486.94亿元&#xff0c;同比下降19.42%。虽整体有所下滑&#xff0c;但新鲜血液依然迸发强劲。 3月22日&#xff0c;一款玩法轻松、新颖的种田类手游《桃源深处有人家》正式上线&#xff0c;玩家纷纷投入其…

JavaScript let 和 const

在JavaScript中&#xff0c;let和const是用于声明变量的关键字。 let关键字用于声明一个块级作用域的变量。块级作用域是指在一个代码块&#xff08;通常是在花括号 {} 内部&#xff09;中声明的变量只在该代码块内部有效。例如&#xff1a; javascript function example() {…

【JavaSE】Java基础语法(十八):接口

文章目录 1. 接口的概述2. 接口的特点3. 接口的成员特点4. 类和接口的关系5. 抽象类和接口的关系 1. 接口的概述 接口就是一种公共的规范标准&#xff0c;只要符合规范标准&#xff0c;大家都可以通用。Java中接口存在的两个意义 用来定义规范用来做功能的拓展 2. 接口的特点…

「实在RPA·制造业数字员工」助力制造业加「数」发展

作为世界制造大国&#xff0c;制造行业一直是国家经济发展的重要载体。2023年度政府工作报告将制造业摆在突出位置&#xff0c;指出要加快建设现代化产业体系&#xff0c;将围绕制造业重点产业链&#xff0c;集中优质资源合力推进关键核心技术攻关。国资委机械院创新中心主任宋…

入门 Python 的虚拟环境管理

概念介绍 Python 解释器Python 依赖Python 虚拟环境 Python 虚拟环境的管理方案 内置 venvvirtualenvcondapipenvpoetrypdm大致结论 关于项目协作开发中的依赖问题参考文档 1 概念介绍 1.1 Python 解释器 在开始学习使用 Python 时&#xff0c;我们一般会直接在电脑上安装一个…

10. Linux下实现简单的http客户端请求

本文Linux下实现简单的http客户端请求 HTTP&#xff08;超文本传输协议&#xff09;是一种用于在网络上进行数据通信的协议。HTTP 协议定义了客户端和服务器之间如何交换信息&#xff0c;包括请求和响应格式、使用的方法、状态码等。 在 HTTP 协议中&#xff0c;资源&#xff0…

Rabbit SpringBoot高级用法

Rabbit高级用法 一、Rabbit Springboot集成1.1 引入依赖1.2 添加配置1.3 添加Config1.4 编写Consumer1.5 发送消息 二、Rabbit 高级用法2.1 消息发送前置处理器2.2 消息发送确认机制2.3 消息接收后处理器2.4 事务消息 一、Rabbit Springboot集成 1.1 引入依赖 <dependency…

三位一体,新华三绿洲3.0数据平台聚焦五大提升

如何有效发挥出数据要素的价值&#xff1f;--这已成为行业用户在数字化转型和智能化升级中的一道必答题。 从2020年《关于构建更加完善的要素市场化配置体制机制的意见》首次明确“数据”成为五大生产要素之一&#xff0c;到去年底《中共中央、国务院关于构建数据基础制度更好…