labelimg删除用不到的标签(yolo格式)以及 下载使用

问题:当我们标注完成新的类别后后直接删除classes.txt中不需要的类别之后再次打开labelimg会闪退,如何删除不需要的标签并且能够正确运行呢?(yolo格式)

原因:当我们打开labelimg进行标注的时候,自动生成的classes.txt文件会包含一些预设存在的类别,例如,刚安装时,生成的文件内容就是labelImg-master/data/predefined_classes.txt文件 + 你所标注的标签,此时标注生成的txt文件每一行的第一个位置就是类别的序号,因为你删除了部分标签,导致重新打开labelimg的时候读取出错了故导致闪退。具体过程如下:

  • 安装时自带的文件内容:
    安装时自带的文件内容

  • 添加例如类别other后生成的classes.txt文件就为:
    在这里插入图片描述

  • 标注后生成的内容:
    标注后生成的内容

解决办法:可以看到此时的标注文件第一行的类别为15,因为我们标注时的classes.txt文件为十六个标签,而’other’标签的所在序列下标就是15,这就是报错内容所在。由此我们可以知道只需要在删除classess.txt中不需要的标签以外,再将所有txt文件的每一行表示标签的位置改成classes.txt序列的下表即可。例如我只需要other标签,那么我就将classes.txt中删除掉除other以外的标签,并且将所有生成的yolo格式的标注文件txt的每一行标签的位置改为0即可,故可以用以下的代码进行实现:

import osdef modify_labels(folder_path):# 获取labels文件夹中所有的txt文件txt_files = [file for file in os.listdir(folder_path) if file.endswith('.txt')]#逐个遍历for txt_file in txt_files:with open(os.path.join(folder_path, txt_file), 'r') as f:lines = f.readlines()# 将类别15替换为类别9new_lines = [modify_line(line) for line in lines]# 覆盖原来的txt文件内容with open(os.path.join(folder_path, txt_file), 'w') as f:f.writelines(new_lines)def modify_line(line):#只需要改变标签所在位置class_id, *values = line.split()if class_id == '15':class_id = '0'new_line = class_id + " " + " ".join(values) + "\n"return new_lineif __name__ == "__main__":label_file = "label_file"#写你存放label的位置modify_labels(label_file)

labelimg的下载与使用

可以直接到github上下载

  • 下载完成后用编译软件(pycharm)打开其中的labelimg.py即可
    在这里插入图片描述
    注:若缺失库则需要在此环境下进行pip安装即可。
  • 运行后的界面如下,选择好文件位置即可进行标注。
    在这里插入图片描述
  • 若要改变某一类别拉框的颜色,例如第一个类别,则到labelImg-master/libs/utils.py文件中的generate_color_by_text函数中进行修改:在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LVM - Linux磁盘逻辑卷管理器概念讲解、实践及所遇到的问题

1、lvm概念 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(Logi…

【C语言】必备Linux命令和C语言基础

🌟博主主页:我是一只海绵派大星 📚专栏分类:嵌入式笔记 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、文件和目录相关命令 Linux 的文件系统结构 文件系统层次结构标准FHS pwd命令 ls 列目录内容 文件的权限 c…

STC8增强型单片机开发【热敏电阻】

目录 一、引言 二、热敏电阻概述 三、STC8增强型单片机简介 四、基于STC8单片机的热敏电阻测温系统 五、热敏电阻测温系统的优化与扩展 提高测量精度 扩展系统功能 六、 温度计算步骤 通过ADC采样计算出热敏电阻位置的电压 通过欧姆定律计算热敏电阻的阻值 通过阻值…

Java中成员变量与局部变量的区别?

在Java中,成员变量和局部变量是两种不同类型的变量,它们有不同的作用范围和特性。理解它们之间的区别对于编写高效、清晰的代码至关重要,区别: 1. 语法形式 成员变量: 定义在类内部但在方法外部。可以使用public、p…

栈和队列经典面试题详解

目录 题目一:20. 有效的括号 - 力扣(LeetCode) 题目二:225. 用队列实现栈 - 力扣(LeetCode) 题目三:232. 用栈实现队列 - 力扣(LeetCode) 题目四:622. 设…

软件压力测试怎么做

随着信息技术的迅猛发展,软件在各行各业的应用越来越广泛,其稳定性、可靠性和性能表现也受到了越来越多的关注。在这样的背景下,软件压力测试显得尤为重要。本文将详细介绍软件压力测试的概念、目的、方法以及实施步骤,帮助读者更…

浅析扩散模型与图像生成【应用篇】(二十五)——Plug-and-Play

25. Plug-and-Play: Diffusion Features for Text-Driven Image-to-Image Translation 该文提出一种文本驱动的图像转换方法,输入一张图像和一个目标文本描述,按照文本描述对输入图像进行转换,得到目标图像。图像转换任务其实本质上属于图像编…

对于接口的安全性测试,这几点你掌握了吗?

接口防刷 1.为什么会有人要刷接口? 牟利:黄牛在 12306 网上抢票再倒卖。 恶意攻击竞争对手:如短信接口被请求一次,会触发几分钱的运营商费用,当量级大了也很可观。 压测:用apache bench 做压力测试。 …

管仲故乡是颍川,何分颍上或颍下

第一仲父管仲,故乡在哪里?依然像许多名人故里一样存在争议,但是这个争议却很不一般,引出了一个大话题。 管子是安徽颍上县人,《史记》记载: “管仲,颍上人也。”颍上县有管鲍祠,是安徽省重点文物…

Go并发编程机制

目录 1. 并发编程基础概念 1.1 什么是并发编程 1.2 并发与并行区别 1.3 为什么需要并发编程 1.4 Go语言并发优势 2. Go语言并发机制 2.1 Goroutine轻量级线程 2.2 Channel通信机制 2.3 WaitGroup等待组 2.4 Mutex互斥锁与读写锁 3. 并发模式与实践 3.1 Fan-in模式 …

亚阈值电流镜

相同电流情况下,由于亚阈值区的gm较大,造成由于阈值电压Vth的失配造成的失配会更大,所以要规避过大的gm,选取较大的过驱动电压。 相同电流情况下,W/L的尺寸选的较小一点,或者说L一定时,W不要取得过大。 Q:Vgs一定的情况下,特别小,几乎小于Vth,一定是亚阈值电流镜吗。…

第10章:新建MDK工程-寄存器版

0. 《STM32单片机自学教程》专栏 本文作为专栏《STM32单片机自学教程》专栏其中的一部分,返回专栏总纲,阅读所有文章,点击Link: STM32单片机自学教程-[目录总纲]_stm32 学习-CSDN博客

Leetcode 513:找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路:层次遍历 每次遍历一层时,记录下每层的最左侧元素,当结束层次遍历时,记录的就是所求结果。 public s…

vld.ini配置文件说明

vld.ini配置文件说明 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Visual Leak Detector - 初始化/配置文件 ;; 版权所有 (c) 2005-2017 VLD团队 ;; ;; 本库是自由软件;你可以在自由软件基金会发布的GNU宽通用公共…

单位内部防泄密策略与技术实践

在信息时代,企业内部数据安全至关重要,尤其是涉及核心竞争力的重要文件,员工的不当操作或恶意泄露都可能给企业带来重大损失。本文将从制度建设、技术防护、以及日常管理三个方面入手,探讨如何构建一套行之有效的内部防泄密体系&a…

yolov8使用与训练步骤

第一:安装miniconda 网址:Index of /anaconda/miniconda/ 登录网址后 在网页按ctrF 输入:搜py38 Miniconda3-py38_22.11.1-1-Windows-x86_64.exe 52.5 MiB 2022-12-23 07:57 下载进行安装 安装过程中记得加环境变量这个项。 第二…

独家|暴雨推出基于国产X86芯片的四路服务器

伴随着智慧计算时代的到来和企业数字化转型的深入,人工智能、大数据、虚拟化等创新技术在应用普及的过程中,也在不断地细分和深化,使得企业的业务系统日趋复杂,数据量、数据类型更加庞大,对计算平台的性能要求“水涨船…

selenium实战

Selenium是一个用于自动化Web应用程序测试的工具,它支持多种编程语言,包括Python。以下是一些关于使用Selenium进行实战的要点: 环境搭建:首先需要安装Python环境,然后通过pip安装Selenium库以及对应的WebDriver。例如…

【强化学习】DQN类算法的一些理解

一、DQN算法为什么要使用两个网络? DQN算法通常包含两个网络:一个是评估网络training_network,另一个是目标网络target_network。这两个网络的结构和初始权重是相同的,但它们的权重是不同步更新的。使用两个网络的原因是为了稳定…

十款开源数据集成工具

在大数据作业开发中,数据集成工具是非常重要的一个环节,一个好的数据集成系统从可用性、架构扩展性、底层引擎选型、数据源支持能力等方面都需要一定的考量,在本文中汇总了十款开源的数据集成系统,作者本人在过往的开发过程中&…