python扩充yolov8数据集(图像和标签同时扩充)

这篇具有很好参考价值的文章主要介绍了python扩充yolov8数据集(图像和标签同时扩充)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

'''扩充单张图像'''
import os
import cv2

def flip_yolo_labels(labels, img_width, img_height):
    flipped_labels = []
    for label in labels:
        class_id, x_center, y_center, width, height = label.split()
        x_center = 1 - float(x_center)  # 水平翻转中心点 x 坐标
        flipped_labels.append(f"{class_id} {x_center} {y_center} {width} {height}\n")
    return flipped_labels


def flip_image_and_labels(image_folder, label_folder, output_folder):
    for filename in os.listdir(image_folder):
        if filename.endswith('.jpg') or filename.endswith('.png'):
            image_path = os.path.join(image_folder, filename)
            label_path = os.path.join(label_folder, os.path.splitext(filename)[0] + '.txt')

            # 读取并翻转图像
            img = cv2.imread(image_path)
            flipped_img = cv2.flip(img, 1)  # 水平翻转

            # 读取并翻转标签
            with open(label_path, 'r') as file:
                labels = file.readlines()
            flipped_labels = flip_yolo_labels(labels, img.shape[1], img.shape[0])

            # 保存翻转后的图像和标签
            cv2.imwrite(os.path.join(output_folder, 'flipped_' + filename), flipped_img)
            with open(os.path.join(output_folder, 'flipped_' + os.path.splitext(filename)[0] + '.txt'), 'w') as file:
                file.writelines(flipped_labels)


# 设置文件夹路径
image_folder = 'D:\WORK\work1\labelss\\allimage'
label_folder = 'D:\WORK\work1\labelss\\alllabels'
output_folder = 'D:\WORK\work1\labelss\kuochong-images'

# 确保输出文件夹存在
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 执行翻转操作
flip_image_and_labels(image_folder, label_folder, output_folder)


'''每张图像可以设置扩充多少张'''
# import os
# import cv2
#
# def flip_yolo_labels(labels, flip_mode, img_width, img_height):
#     flipped_labels = []
#     for label in labels:
#         parts = label.split()
#         class_id = parts[0]
#         x_center, y_center, width, height = map(float, parts[1:])
#
#         if flip_mode == 1 or flip_mode == -1:  # 水平翻转
#             x_center = 1 - x_center
#         if flip_mode == 0 or flip_mode == -1:  # 垂直翻转
#             y_center = 1 - y_center
#
#         flipped_labels.append(f"{class_id} {x_center} {y_center} {width} {height}\n")
#
#     return flipped_labels
#
# def flip_image_and_labels(image_path, label_path, output_image_path, output_label_path, flip_mode):
#     # 读取图像
#     img = cv2.imread(image_path)
#     height, width = img.shape[:2]
#
#     # 翻转图像
#     flipped_img = cv2.flip(img, flip_mode)
#
#     # 读取并翻转标签
#     with open(label_path, 'r') as file:
#         labels = file.readlines()
#     flipped_labels = flip_yolo_labels(labels, flip_mode, width, height)
#
#     # 保存翻转后的图像和标签
#     cv2.imwrite(output_image_path, flipped_img)
#     with open(output_label_path, 'w') as file:
#         file.writelines(flipped_labels)
#
# def augment_dataset(image_folder, label_folder, output_folder, num_copies=3):#num_copies设置扩充多少张
#     if not os.path.exists(output_folder):
#         os.makedirs(output_folder)
#
#     for filename in os.listdir(image_folder):
#         if filename.endswith('.jpg') or filename.endswith('.png'):
#             image_path = os.path.join(image_folder, filename)
#             label_path = os.path.join(label_folder, os.path.splitext(filename)[0] + '.txt')
#
#             # 为每个图像生成指定数量的扩充版本
#             for i in range(num_copies):
#                 output_image_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}_flip_{i}.jpg")
#                 output_label_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}_flip_{i}.txt")
#                 flip_mode = i - 1  # -1: 水平+垂直翻转, 0: 垂直翻转, 1: 水平翻转
#                 flip_image_and_labels(image_path, label_path, output_image_path, output_label_path, flip_mode)
#
# # 设置文件夹路径
# image_folder = 'path_to_your_image_folder'
# label_folder = 'path_to_your_label_folder'
# output_folder = 'path_to_output_folder'
#
# # 执行数据集扩充
# augment_dataset(image_folder, label_folder, output_folder)

 文章来源地址https://www.toymoban.com/news/detail-844006.html

 

到了这里,关于python扩充yolov8数据集(图像和标签同时扩充)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • YOLOv8 图像分割

    官网:Previous PyTorch Versions | PyTorch cuda == 11.7 pytorch == 1.13.0 torchvision == 0.14.0 pytorch-cuda == 11.7 官网:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch ONNX CoreML TFLite 克隆项目到本地:git  clone https://github.com/ultralytics/ultralytics.git 下载成功后的目录结构如下所示: # 安装yolov8的依赖

    2024年02月10日
    浏览(34)
  • YOLOv8改进 | 图像去雾 | 利用图像去雾网络UnfogNet辅助YOLOv8进行图像去雾检测(全网独家首发)

    本文给大家带来的改进机制是利用 UnfogNet超轻量化图像去雾网络 ,我将该网络结合YOLOv8针对图像进行去雾检测(也适用于一些模糊场景),我将该网络结构和YOLOv8的网络进行结合同时该网络的结构的参数量非常的小,我们将其添加到模型里增加的计算量和参数量基本可以忽略

    2024年04月09日
    浏览(48)
  • SAM + YOLOv8 图像分割及对象检测

    SAM(Segment Anything Model)是由 Meta 的研究人员团队创建和训练的深度学习模型。该创新成果发表在 2023 年 4 月 5 日发表的一篇研究论文中,它立即引起了公众的广泛兴趣——相关的 Twitter 帖子迄今为止已累积超过 350 万次浏览: 计算机视觉专业人士现在将注意力转向 SAM——但为

    2024年02月09日
    浏览(36)
  • 修改yolov8使支持单通道图像输入

    yolov8 默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。 修改后的代码如下: https://github.com/shanglianlm0525/ultralytics-8.1.0 训练/推理时,只需要在输入参数中 添加 ch=1 即可。

    2024年02月13日
    浏览(46)
  • C# OpenCvSharp Yolov8 Cls 图像分类

    目录 效果 项目 模型信息 代码 下载  Model Properties ------------------------- date:2023-09-07T17:11:37.011156 description:Ultralytics YOLOv8n-cls model trained on ../datasets/imagenet author:Ultralytics task:classify license:AGPL-3.0 https://ultralytics.com/license version:8.0.172 stride:1 batch:1 imgsz:[640, 640] names:{0:

    2024年02月07日
    浏览(52)
  • 基于YOLOv8的摔倒行为检测系统(Python源码+Pyqt6界面+数据集)

    💡💡💡 本文主要内容:通过实战基于YOLOv8的摔倒行为检测算法,从数据集制作到模型训练,最后设计成为检测UI界面 人体行为分析AI算法,是一种利用人工智能技术对人体行为进行检测、跟踪和分析的方法。通过计算机视觉、深度学习和模式识别等技术,可以实现对人体姿态

    2024年01月25日
    浏览(53)
  • YOLOv8改进 | 主干篇 | 轻量级的低照度图像增强网络IAT改进YOLOv8暗光检测(全网独家首发)

    本文给大家带来的改进机制是轻量级的变换器模型: Illumination Adaptive Transformer (IAT) ,用于图像增强和曝光校正。其基本原理是通过 分解图像信号处理器(ISP)管道到局部和全局图像组件 ,从而 恢复在低光或过/欠曝光条件下的正常光照sRGB图像 。具体来说,IAT使用注意力查

    2024年04月26日
    浏览(51)
  • YOLOv8及其改进系列(五) modules.py 文件划分子集 | 标签透明化与文字大小调节 | 框粗细调节

    最近 YOLOv8 的官方项目又迎来了一个大更新,这次更新对基础不好的同学影响可能比较大, 这次更新主要就是将原本的 ultralytics/nn/modules.py 拆分成了以下 6 个文件: _init_.py block.py conv.py head.py trasnformer.py utils.py 有的同学可能不知道该加哪里了,我这里给大家说一下 我们原本的

    2024年03月16日
    浏览(137)
  • 基于YOLOv8的PCB缺陷检测系统(Python源码+Pyqt6界面+数据集)

    💡💡💡 本文摘要:基于YOLOv8的PCB缺陷检测系统,并阐述了整个数据制作和训练可视化过程, 最后通过Pyside UI界面进行展示。 博主简介 AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制

    2024年04月10日
    浏览(70)
  • 基于深度学习的交通标志检测识别系统(含UI界面、yolov8、Python代码、数据集)

    项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov8     yolov8主要包含以下几种创新:         1. 添加注意力机制( SE 、 CBAM 等)         2. 修改可变形卷积( DySnake -主干 c3 替换、DySnake-所有c3替换) 数据集:     网上下载的数据集,详细介绍

    2024年03月09日
    浏览(85)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包