1.小图片样本数据增强

问题背景

在面对一些小图片的分类问题的时候,比如检测出一种缺陷,要识别是哪个缺陷,往往需要大量的样本集,只要是基于统计学,不管是传统机器学习,比如支持向量机,还是各种神经网络,比如resnet,都是需要样本集支撑的,针对这种不需要标注,只需要把标的物截取出来保存的数据集,往往很难收集,这也是统计学方案的一个通病,所以,就需要想办法,做数据增强。

参考资料

https://blog.csdn.net/weixin_44010756/article/details/116228373 一篇逻辑很好的关于数据增强的文章,使用的工具主要来自这里的Augmentor。
https://www.jianshu.com/p/989b2f4b246d 数据增强库imgaug使用
https://www.jianshu.com/p/edda47f7a6f4 数据增强利器–Augmentor
https://blog.csdn.net/qq_58832911/article/details/123381055 使用python进行数据增强的实现。

代码案例封装

基于Augmentor做一个数据增强的案例,使用函数之前需要安装Augmentor

@router.post('/data_augmentation')
def data_augmentation(img_path: str = Body(...), num: int = Body(...)):
    # 0.先删除之前的缓存
    output_dir = os.path.join(img_path, 'output')
    items = os.listdir(output_dir)
    for item in items:
        file_path = os.path.join(img_path, item)
        os.remove(file_path)
    # 1. 指定图片所在目录
    p = Augmentor.Pipeline(img_path)
    # 2. 增强操作
    # 旋转 概率0.7,向左最大旋转角度10,向右最大旋转角度10
    p.rotate(probability=0.7, max_left_rotation=10, max_right_rotation=10)
    # 放大 概率0.3,最小为1.1倍,最大为1.6倍;1不做变换
    p.zoom(probability=0.3, min_factor=1.1, max_factor=1.6)
    # resize 同一尺寸 200 x 200
    p.resize(probability=1, height=200, width=200)
    # 3. 指定增强后图片数目总量
    p.sample(num)

    return "success"
在YOLOv8中添加负样本的过程如下: 1. 准备负样本图片:首先,你需要准备一些负样本图片。负样本图片是指不包含目标物体的图片,用于训练模型识别背景和其他无关物体。 2. 负样本生成器:使用负样本生成器来将一张图片分成多张小图片。这样可以增加训练数据的多样性,提高模型的鲁棒性。 3. 循环读取图片:使用循环读取文件夹中的图片,并将每张图片输入到负样本生成器中进行裁剪。裁剪后的小图片将作为负样本。 4. 添加负样本标签:为每个负样本图片添加标签。在YOLOv8中,可以使用0来表示负样本。 5. 将负样本添加到训练集:将生成的负样本图片和对应的标签添加到训练集中。 6. 训练模型:使用包含负样本的训练集来训练YOLOv8模型。训练过程中,模型将学习如何识别目标物体和背景。 7. 模型评估:训练完成后,使用测试集对模型进行评估,检查模型在负样本上的表现。 8. 调整参数:根据评估结果,可以根据需要调整模型的参数,以进一步提高模型的性能。 下面是一个示例代码,演示了如何在YOLOv8中添加负样本: ```python # 导入相关库 import cv2 import numpy as np # 负样本生成器函数 def generate_negative_samples(image): # 在这里实现负样本生成的逻辑 # 将一张图片分成多张小图片,并返回裁剪后的小图片列表 # 可以使用OpenCV的图像处理函数来实现裁剪操作 # 返回裁剪后的小图片列表 # 循环读取图片并生成负样本 image_folder = 'path/to/image/folder' negative_samples = [] for image_file in os.listdir(image_folder): image_path = os.path.join(image_folder, image_file) image = cv2.imread(image_path) samples = generate_negative_samples(image) negative_samples.extend(samples) # 添加负样本标签 negative_labels = [0] * len(negative_samples) # 将负样本添加到训练集 train_images.extend(negative_samples) train_labels.extend(negative_labels) # 训练模型 # 在这里使用YOLOv8模型进行训练 # 模型评估 # 在这里使用测试集对模型进行评估 # 调整参数 # 根据评估结果,可以根据需要调整模型的参数 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值