标签准备——labelIMG工具使用——自动化标注

这篇具有很好参考价值的文章主要介绍了标签准备——labelIMG工具使用——自动化标注。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在实际生产项目中,为了提升目标识别的准确性,我们往往需要3000-5000张图片进行标注。而直接参与过标注的人都有一个共同的感觉,就是标注是一个简单、枯燥、无聊且十分耗时费力的差事。为此,我们可以在有了初步训练模型的基础上,采用更加自动化的方式进行标注,届时,你讲不用每个照片、每个目标的重复标注,而是直接在现有模型对图片进行识别后的结果上进行调整标注或者新增标注。本章节,笔者将重点围绕使用labelIMG进行自动化高效率的标注进行讲解。

1、前期模型准备

前期,笔者使用约1000张图片对摩托车、电动自行车头盔配搭和加装雨棚进行了训练,得到了一个已经初步训练好的模型。暂且将其命名为“best_jx.pt”。下面我们将依托该pt文件模型,对新增的图片进行识别,并导入labelIMG进行自动化标准,从而非常明显的提升我们的图片标注工作效率。

相信,当你读到本文时,你也已经有了自己的best.pt训练模型文件,大家可以直接套用本文档的步骤。

2、编写图片识别脚本程序

当你的图片文件夹中已经有了上千张最新的图片后,我们现在要做的就是编写代码,调用前期你已经生成的pt文件,将文件夹中的图片逐一进行识别。唯一不同的是,本次我们不光是要识别,还需要将识别的结果以标签的形式存为txt文档。这个功能YOLO V8已经在程序中实现了,我们只需要直接调用。

2.1 图片标签生成程序

具体代码示例如下:

from ultralytics import YOLO
import os
import glob
import threading

# 加载现有的xxx.pt模型
model = YOLO("E:/pyCharmProject/pythonProjectDetection/best_jx.pt")

# 指定图片文件夹的路径
image_folder = "E:/pyCharmProject/DetectionProjectHelmetRainshield/20230817pan1IMG/imgs/"

#本函数为调用YOLO V8的predict方法,进行识别,并将其存为txt格式的标签文件
def auto_get_img_tag(image_path):
    results = model.predict(source=image_path, save_txt=True)
    print('done..........',image_path)
    return results
    
# 对每张图片进行预测,并保存标签文件
for image_path in glob.glob(image_folder + "*.jpg"):
    # 对图片进行预测,并保存标签文件
    results = model.predict(source=image_path, save_txt=True)
    print('done..........', image_path)
print('done.....................overall')

上述函数中使用了model.predict()方法,其与笔者之前直接使用的model()方法有所不同。

result = model(source) 是一个低级的 API,它直接调用了模型的 forward 方法,返回一个 Results 对象,其中包含了模型的原始输出,例如预测的类别、置信度、边界框坐标等。这个 API 适合那些想要对模型的输出进行自定义处理的高级用户,但是它不会执行任何后处理或保存操作,也不会考虑任何预测参数,例如图像大小、置信度阈值等。

result=model.predict(source) 是一个高级的 API,它封装了模型的 forward 方法,并且执行了一些后处理和保存操作,例如非极大值抑制、标签文件生成、结果可视化等。这个 API 适合那些想要快速得到预测结果的普通用户,但是它需要指定一些预测参数,例如图像大小、置信度阈值、保存目录等。这些参数可以在调用 predict 方法时传入,也可以在配置文件中设置。

总之,result = model(source) 和 result=model.predict(source) 的区别在于前者返回的是模型的原始输出,后者返回的是模型的后处理输出。前者更灵活,但需要用户自己处理结果;后者更方便,但需要用户指定参数。你可以根据你的需求选择合适的 API。

#2.2 并发实现图片标签生成程序

当我们图片很多的时候,我们就需要使用高并发的形式实现。示例代码如下。

from ultralytics import YOLO

import glob

from concurrent.futures import ThreadPoolExecutor

# 加载现有的xxx.pt模型
model = YOLO("E:/pyCharmProject/pythonProject1Chu/best_jiangxi.pt")

# 指定图片文件夹的路径
image_folder = "E:/pyCharmProject/DetectionProjectHelmetRainshield/20230817pan1IMG/imgs/"

# 本函数为调用YOLO V8的predict方法,进行识别,并将其存为txt格式的标签文件
def auto_get_img_tag(image_path):
    results = model.predict(source=image_path, save_txt=True)
    print('done..........', image_path)
    return results

# 创建一个线程池,指定最大线程数为4
pool = ThreadPoolExecutor(max_workers=4)

# 对每张图片进行预测,并保存标签文件
for image_path in glob.glob(image_folder + "*.jpg"):
    # 使用map方法将函数和参数传递给线程池
    pool.map(auto_get_img_tag, [image_path])

# 等待所有线程完成
pool.shutdown(wait=True)

print('done.....................overall')

为了让代码支持并发,笔者创建一个线程池,使用ThreadPoolExecutor类来管理多个线程,并使用map方法来将您的函数应用到每个图片路径上。这样,就可以同时处理多张图片,并保存标签文件。

3、生成所需打标签图片的label文件

运行上述代码后,你该程序py脚本文件的根目录看到一个新的文件夹,名称为run,每张图片生成的label文件就在这个文件夹中,具体的存储路径为:
\runs\detect\predict\labels

其生成的文件进入下图所示:
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能
当我们将生成的文本,与导入上述识别脚本程序的图片比较,可以发现,txt标签文件的名称与图片的名称是一一对应的。
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能

至此,我们就已经通过编写的脚本程序,实现了对要逐个打标签的图片进行预处理的工作了,下部就可以将其导入labelIMG进行自动化的打标签操作了。

4、准备“class.txt”文件

我们知道,labelIMG工具在对图片打标签后,会在输出label的txt文档目录文件夹中,同步生成一个class.txt文件,按顺序记录所有标签内容。为此,我们为了实现自动化的标签识别,也需要提前准备好class.txt文件,并提前存放在标签输出目录内。

正常来说,我们根据要打标签的内容,肯定是知道class.txt中具体要写什么标签的,如下图所示:
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能
但值得我们非常需要注意的一点是!按照labelIMG生成class.txt文件的逻辑,文件中各个标签的顺序默认是根据在所有图片中,首次打上这个标签的顺序来的。比如我们对这些图片进行打标签操作时,第一个打的是nohelmet,那么nohelmet会出现在第一行。

由于图片的量太大,我们很难由一个人一次打完,或者很难统筹每个人都是按同样的标签顺序进行标注。为此,在laeblIMG工具中,有一个预先设置标签的功能。也就是我们可以在以下目录venv/Lib/site-packages/labelImg/data,找到predefined_classes.txt文件。在这个文件中,我们可以提前设置好所有的标签类型和标签顺序,这样labelIMG在进行打标签的时候,就不需要每次出现新的标签就需要手动输入的情况,而是可以在所有预先设置好的标签选项中进行选择。如下图所示,笔者已经预先设置了5个标签,并明确了其顺序。
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能
我们在实际项目中,可以直接将predefined_classes.txt中预先设定的标签内容直接复制到class.txt文件中。从而确保我们为labelIMG工具提前准备的class.txt文件没有错误,从而不会出现工具中途卡死、闪退,造成需要重新打标签的情况。

5、将需打标签的图片、预先生成的label文本和class.txt文件存入指定文件夹目录

我们知道,当我们在pycharm的terminal命令行窗口输入labelIMG命令后,程序将自动启动labelIMG工具,如下图所示。
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能
启动labelIMG工具后,我们首先要指定“Open Dir”和"Change Save Dir",如下图所示。也就是说,设定好我们读取图片的文件夹,和将生成的label文件存放的文件夹。
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能
由于我们前期已经通过脚本程序预先生成了label文件,我们就可以理解为是电脑用我们的前期训练的模型,帮我们使用这个工具对所有图片进行了标注,并生成了对应的label文件,我们现在需要做的只是逐一图片的检查其标注情况是否准确,如果发现不准确或者遗漏的,我们可以在labelIMG工具中再进行手动调整。

当我们明确了上面的思路,便可清晰的知道我们需要做标注的图片和生成的label文件以及class.txt文件需要存放的路径了。

6、开始高效图片标注工作

在本例子中,笔者将图片存放于以下文件夹目录:E:\测试\img,将label文件和class.txt文件存放于以下文件夹目录:E:\测试\label。因此,我们在labelIMG工具中按照上图所示,选择完成后,便可发现我们打开的图片已经有了相关的标注情况。只需要我们手动检查或调整就可以了。如下图所示:
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能

在这里,我们便可以逐一对目标进行该检查,对识别错误的,我们可以点击目标右键,重新编辑标签属性,重新编辑保存的label文档,和直接生成的文档,效果是一样的。如下图所示:
标签准备——labelIMG工具使用——自动化标注,手把手教你玩转YOLO目标识别——公安交管场景实战,自动化,机器学习,人工智能
我们完成所有图片的标注审核和修改工作后,便可直接在E:\测试\label目录下,获取最新的label文件了。这些文件以及配套的图片文件,还有我们提前生成的class.txt文件,都需要进一步拷贝到用来做YOLO v8训练使用。这一点就和正常操作步骤没有任何不同了。文章来源地址https://www.toymoban.com/news/detail-660481.html

到了这里,关于标签准备——labelIMG工具使用——自动化标注的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 如何使用Python自动化测试工具Selenium进行网页自动化?

    Selenium 是一个流行的Web自动化测试框架, 它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为 。 Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAutoGUI和AutoIt相比, Selenium更适合于处

    2023年04月09日
    浏览(90)
  • 三天精通Selenium Web 自动化 - 项目实战环境准备

     返回 TestNG,即Testing Next Generation,下一代测试技术,是一套根据JUnit和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试。更多细节可以到官网去了解:TestNG - Welcome 1.1 安装TestNG 打开eclipse,菜单help - Install New Softwa

    2024年02月04日
    浏览(34)
  • 如何使用自动化测试工具Selenium?

    哈喽,大家好,我是小浪。那么有一段时间没有更新了,还是在忙实习和秋招的事情,那么今天也是实习正式结束啦,开始继续更新我们的学习博客,后期主要是开发和测试的学习博客内容巨多,感兴趣的小伙伴们可以一键三连支持一下欧~ 目录 一、什么是自动化测试? 二、

    2024年02月11日
    浏览(39)
  • iOS 自动化测试 (2):基本环境准备 - 安装WebDriverAgent(WDA)

    在配置好了Appium的基础环境之后,下一步需要在被测试设备中安装WebDriverAgent。 先介绍一下什么是WebDriverAgent,WebDriverAgent是Facebook 在SeleniumConf 大会上推出的一款新的iOS移动测试框架,支持模拟器和真机。WebDriverAgent的本质是WebDriver Server。在iOS客户端安装了WebDriverAgent 就等于

    2024年01月25日
    浏览(34)
  • 接口自动化测试工具,Postman使用详解

    1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护,官方也不推荐使用该版本。 2、官网下载地址:http://www.getpostman.com 3:官方文档:http://www.getpostman.com/docs 2、第二步:新建接口请

    2024年02月06日
    浏览(61)
  • Ansible 自动化运维工具的使用

    目录   一、Ansible简介 二、Ansible 的安装和使用 1.下载 2.使用 三、Ansible命令和模块 1.命令格式 2.命令行模块 (1)command 模块 (2)shell 模块 (3)cron 模块 (4)user 模块 (5)group 模块 (6)copy 模块 (7)file 模块 (8)hostname 模块 (9)ping 模块  (10)yum 模块 (11)service/

    2024年02月11日
    浏览(31)
  • Web测试自动化工具Selenium的使用

    Selenium是一个Web应用测试的自动化工具,它通过模拟点击实现对Web应用的功能测试。测试时,除了Selenium,还需要对应的浏览器驱动,如在Chrome实现自动点击,则需要chromedriver。 Selenium支持多种语言和多种浏览器,本文仅记录python+chrome的使用。 1. 安装python 略 2. 安装Selenium 注

    2024年01月16日
    浏览(69)
  • Ansible自动化部署工具|各个模块的使用

    1、运维工具特点 Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。 Ansible 安装使用非常

    2024年02月01日
    浏览(83)
  • 如何使用IOS自动化测试工具UIAutomation

    这篇文章主要介绍了UIAutomation使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值 第一部分: 熟悉Instruments的UIAutomation. 第二部分: 控件的获取及操作 第三部分: 自定义自动化脚本 xcode中自带的Instuments工具可以用来进行APP的自动化测试, 以及用于进行内

    2024年02月03日
    浏览(33)
  • 职言 | 编码是测试自动化职业生涯的关键:你准备好了吗?

    Verily Life Sciences是一家健康管理公司,前身为Google Life Sciences。2015年,谷歌改组为Alphabet,业务调整之后,谷歌原有的健康业务分离出来。同一年,Google Life Sciences也更名为Verily,目前该公司已经获得包括Alphabet、淡马锡、银湖资本等多轮投资。 本文作者为该公司一名软件测试

    2023年04月16日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包