基于Albumentations的图像增强,对yolo数据,生成增强后的图片以及标签。

本文介绍了一位开发者如何利用Albumentations库对YOLO数据集进行增强,包括图像裁剪、旋转、翻转等操作,同时自定义了封装类,实现在指定路径下批量处理图片和标签,以提升机器学习模型的鲁棒性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Albumentations是一个用于图像增强的Python库,它提供了多种增强技术,包括随机裁剪、旋转、缩放、翻转、变形、颜色变换、模糊等操作。使用Albumentations库可以快速、高效地对图像数据进行增强,从而提升机器学习模型的鲁棒性。

本人根据非常棒的Albumentations数据增强库进行二次封装,将yolo数据生成增强后的标签跟图片,代码更改路径可直接调用。

from albumentations import *
import os
import cv2
from tqdm import tqdm


class enhancement:
    def __init__(self, picture_path, label_path, save_img_path, save_lable_path):
        self.picture_name = sorted(os.listdir(picture_path))
        self.label_name = sorted(os.listdir(label_path))
        self.picture_path = [picture_path + i for i in self.picture_name]
        self.label_path = [label_path + i for i in self.label_name]
        self.save_img_path = save_img_path
        self.save_lable_path = save_lable_path

    def iter(self):
        batch_size = 10
        for index_bin in tqdm(range(0, len(self.picture_path), batch_size), desc='批次进度'):
            # print(index_bin)
            picture_batch = self.picture_path[index_bin:index_bin + batch_size]
            label_batch = self.label_path[index_bin:index_bin + batch_size]
            yield picture_batch, label_batch, [index_bin, index_bin + batch_size]

    def get_transform(self):
        '''
   
如果你已经有了原始的标注数据,那么你可以直接使用 Albumentations 库提供的 BboxParams 将标注数据转换为适用于 YOLO 模型的格式。下面是一个示例代码: ``` import albumentations as A from albumentations.augmentations.bbox_utils import convert_bbox_to_albumentations # 假设原始标注数据格式为 [x_min, y_min, x_max, y_max, class_id] bboxes = [[100, 100, 200, 200, 0], [300, 300, 400, 400, 1], ...] # 将 bboxes 转换为适用于 Albumentations 的格式 # 注意,这里的标注数据是针对原始图像的,还没有进行裁剪、缩放等操作 transformed_bboxes = [convert_bbox_to_albumentations(bbox, 'pascal_voc', (height, width)) for bbox in bboxes] # 定义 transform 对象,包括图像增强方法和标注数据转换方法 transform = A.Compose([ # 图像增强方法... ], bbox_params=A.BboxParams(format='yolo', label_fields=['category_ids', 'bboxes'])) # 将 transform 应用于数据集 dataset = YourDataset(...) dataset.transforms = transform dataset.bboxes = transformed_bboxes ``` 在上面的代码中,我们首先将原始标注数据转换为 Albumentations 支持的格式,然后定义了一个 transform 对象,其中 bbox_params 参数指定了标注数据的格式为 YOLO 格式,同时也指定了标注数据中类别 id 和边界框坐标的字段名称。最后将 transform 应用于数据集,并将转换后的标注数据赋值给数据集的 bboxes 属性。注意,由于 Albumentations 库对图像进行了裁剪、缩放等操作,因此需要在标注数据转换函数中将标注数据也进行相应的裁剪、缩放等操作。具体的实现方法可以参考 Albumentations 库的文档。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值