yolo自动标注时缺失的txt文件批量创建之脚本

一、脚本功能

使用yolov5做推理并保存yolo格式的txt文件时,当图片上没有检测到目标时,yolov5将不会保存空的txt文件,导致txt文件缺失,yolo训练时报错。

所以写了个简单的小脚本,在不影响原来已存在txt文件的前提下,来批量创建缺失的空txt文件,确保txt文件的总数量与图片的总数量一致。

二、脚本源码

# -*- coding: utf-8 -*-

import os

img_list = []
txt_list = []
def img_path(image_path):
    for i in os.listdir(image_path):
        path = i.split(".")[0]
        img_list.append(path)
        # print(path)

def txt_path(label_path):
    for i in os.listdir(label_path):
        path = i.split(".")[0]
        txt_list.append(path)

def create_txt(label_path,txt):
    txt_txt = list(txt)
    for path in txt_txt:
        path_data = os.path.join(label_path, path) + '.txt'
        print(path_data)
        with open(path_data, 'w') as f:
            f.write("")
            f.close()
    pass


if __name__ == '__main__':
    image_path = r'D:\gs\datasets\sp\split\1'#图片路径
    label_path = r'D:\gs\datasets\sp\split\2'#txt文件路径
    img_path(image_path)
    txt_path(label_path)
    sat1 = set(img_list)
    sat2 = set(txt_list)
    txt = sat1 ^ sat2
    create_txt(label_path,txt)
    pass

  • 温馨提示:运行此脚本时,一定要注意图片和txt文件的文件名中,除了文件名后缀前有一个 . 就不要出现第二个 .

### 使用YOLO进行自动标注的方法 对于希望利用YOLO模型实现自动标注的需求,存在多种工具和方法可供选择。其中一种推荐的方式是结合使用YOLO与`labelImg`完成初步的自动标注工作[^1]。 #### 利用YOLO与labelImg组合进行自动标注 - **准备阶段** 需要先准备好训练好的YOLO权重文件以及待处理的数据集图片路径列表。确保安装了Python环境和支持库如OpenCV等必要组件。 - **执行自动标注过程** 可编写脚本加载预训练的YOLO模型并遍历指定目录下的所有图像文件,逐一对每张图做推理预测获取边界框坐标信息作为初始标签数据。这些临生成的结果可按照`labelImg`所接受的标准格式保存下来以便后续导入该软件进一步编辑调整。 ```python import cv2 from yolov7 import YOLOv7 # 假设这是自定义封装的一个接口类来简化调用原生API的过程 model = YOLOv7('path/to/weights') # 加载YOLO v7或其他版本模型实例化对象 image_paths = ['img1.jpg', 'img2.png'] # 图片集合 for img_path in image_paths: frame = cv2.imread(img_path) boxes = model.detect(frame) # 调用detect函数传入单帧画面得到返回值boxes即为检测来的矩形区域位置参数 with open(f"{img_path}.txt", "w") as f: for box in boxes: label, confidence, (x_center, y_center), width_height = box line = f"{label} {confidence:.6f} {x_center:.6f} {y_center:.6f} {width_height[0]:.6f} {width_height[1]:.6f}\n" f.write(line) print("Automatic labeling completed.") ``` 此段代码展示了如何通过读取一系列静态图片输入给定YOLO模型来进行批量式的快速标记操作,并将产生的元数据记录成`.txt`纯文本形式供其他程序解析读写。 #### 更高级别的自动标注方案 除了上述基础方式外还有更复杂的解决方案被提过,在某些情况下能够提供更高的精度和效率。比如有文章提到基于YOLOv10实现了从简单固定的模式向智能化程度更高的动态适应型转变,后者能更好地应对复杂场景中的挑战从而提升整体性能表现[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱笑的男孩。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值