利用 Mixup、Mosaic 和 Getrandom 三种方式对数据集进行扩增

news/2025/3/19 18:47:00/文章来源:https://www.cnblogs.com/Dongmy/p/18781575

利用 Mixup、Mosaic 和 Getrandom 对数据集进行扩增

在机器学习和深度学习中,数据扩增(Data Augmentation)是一种常用的技术,用于增加训练数据的多样性,从而提高模型的泛化能力。以下是如何利用 Mixup、Mosaic 和 Getrandom 三种方式对数据集进行扩增的详细步骤和代码示例。

1. Mixup 数据扩增

Mixup 是一种数据增强技术,通过将两个不同的输入样本及其标签进行线性组合,生成新的样本和标签。这种方法可以增加样本的多样性,减少模型对特定样本的过拟合。

代码示例

Python复制
import numpy as np
import torch
import torchvision.transforms as transforms
from torchvision.datasets import CIFAR10
from torch.utils.data import DataLoader# 定义 Mixup 数据扩增函数
def mixup_data(x, y, alpha=1.0):lam = np.random.beta(alpha, alpha)batch_size = x.size(0)index = torch.randperm(batch_size)mixed_x = lam * x + (1 - lam) * x[index, :]y_a, y_b = y, y[index]return mixed_x, y_a, y_b, lam# 加载数据集
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])train_dataset = CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)# 使用 Mixup 数据扩增
for images, labels in train_loader:mixed_images, labels_a, labels_b, lam = mixup_data(images, labels, alpha=1.0)# 使用混合后的图像和标签进行训练# model(mixed_images)# loss = criterion(mixed_images, labels_a) * lam + criterion(mixed_images, labels_b) * (1 - lam)break

2. Mosaic 数据扩增

Mosaic 是一种数据增强技术,主要用于目标检测任务。它通过将多个图像拼接成一个大图像,并调整每个图像的边界框,生成新的训练样本。

代码示例

Python复制
import cv2
import numpy as np
import torch
from torchvision.datasets import VOCDetection
from torch.utils.data import DataLoader# 定义 Mosaic 数据扩增函数
def load_image(image_path):image = cv2.imread(image_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)return imagedef mosaic_data(images, boxes, mosaic_size=(640, 640)):mosaic_image = np.zeros((*mosaic_size, 3), dtype=np.uint8)mosaic_boxes = []for i, (image, box) in enumerate(zip(images, boxes)):x1, y1, x2, y2 = boxx1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)mosaic_image[i*mosaic_size[1]//2:(i+1)*mosaic_size[1]//2,i*mosaic_size[0]//2:(i+1)*mosaic_size[0]//2] = imagemosaic_boxes.append([x1 + i*mosaic_size[0]//2, y1 + i*mosaic_size[1]//2,x2 + i*mosaic_size[0]//2, y2 + i*mosaic_size[1]//2])return mosaic_image, mosaic_boxes# 加载数据集
train_dataset = VOCDetection(root='path_to_voc', year='2012', image_set='train', download=True)
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True)# 使用 Mosaic 数据扩增
for images, targets in train_loader:images = [load_image(image_path) for image_path in images]boxes = [target['boxes'] for target in targets]mosaic_image, mosaic_boxes = mosaic_data(images, boxes, mosaic_size=(640, 640))# 使用拼接后的图像和边界框进行训练# model(mosaic_image)# loss = criterion(mosaic_image, mosaic_boxes)break

3. Getrandom 数据扩增

Getrandom 是一个系统调用,用于从操作系统获取随机数据。它通常用于生成密码、安全令牌、加密密钥等。虽然 Getrandom 本身不是一种数据扩增技术,但它可以用于生成随机数,从而在数据扩增过程中引入随机性。

代码示例

Python复制
import os# 获取随机数据
def get_random_data(size):random_data = os.getrandom(size)return random_data# 使用 Getrandom 生成随机数
random_bytes = get_random_data(16)
print(random_bytes)

总结

  • Mixup 和 Mosaic 是数据增强技术,用于增加训练数据的多样性,提高模型的泛化能力。
  • Getrandom 是一个系统调用,用于从操作系统获取随机数据,可以用于生成随机数,从而在数据扩增过程中引入随机性。
通过结合这些技术,可以有效地扩增数据集,提高模型的性能和鲁棒性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mcp-playwright测评

mcp-playwright介绍 mcp-playwright是一个使用 Playwright 提供浏览器自动化能力的模型上下文协议服务器。该服务器使 LLMs 能够与网页交互、截屏,并在真实的浏览器环境中执行 JavaScript。 GitHub地址:https://github.com/executeautomation/mcp-playwright。安装 npm insta…

传媒行业项目管理全解析:日事清在流程、文件、数据与风控中的一体化应用

一、关于森可文化 森可文化传媒有限公司(Senke Vision)占据了超过2800平方米的宽敞办公及拍摄场地,与众多内衣及服饰行业的上市巨头建立了不可动摇的深度合作关系。 Senke Vision汇聚了国内外顶尖的策划、设计、摄影摄像、服装搭配、化妆及品牌视觉顾问,形成了一支独一无二…

在 .NET 项目中使用 husky 完成 pre-commit 操作

将 husky 引入 .NET 项目Husky 是一个用于 Git 仓库的工具,主要用于管理 Git 钩子(hooks)。它可以帮助开发者在特定的 Git 操作(如提交、推送等)之前或之后执行自定义的脚本或命令,从而提高代码质量和团队协作效率。 主要用在前端项目中,可以通过 Husky.Net,将 Husky 的…

贸易企业数字化转型案例:基于日事清的目标管理、任务协作与流程可视化绩效优化实践

这家贸易公司如何提升内部协同效率?一、基本情况 所属行业:传统贸易行业 业务类型:国内贸易、货物及技术进出口 行业地位:拥有自己的研发人员,具备一站式解决方案能力。 合作概要:为解决组织提效,目标体系、协同体系、绩效体系的管理问题,客户与日事清达成合作,并将日…

使用nvm管理node.js版本

1.情景展示如上图所示,项目某个模块支持的node.js最高版本是17,我用的是20,所以只能降级。 2.具体分析 我现在把node.js降到16,那后续如果再需要20呢?能不能实现版本的随时切换? 3.安装nvm 我们可以使用nvm来管理node.js的版本。 下载nvm windows下载地址:https://githu…

3.19 学习记录

完成了仓库管理系统的制作,基本无bug,所展示功能都可以实现,基于 springboot 和 vue3 具体实现如下: 登录管理员页面 有仓库管理,物资管理,库存管理和统计功能仓库工作人员页面

网站测速——提升用户体验的关键

在互联网飞速发展的今天,网站已成为企业展示形象、提供服务以及用户获取信息的重要平台。而网站的速度,如同高速公路的路况,直接影响着用户的访问体验和满意度。因此,网站测速成为了网站运营和维护中不可或缺的关键环节。 网站速度对企业来说真的那么重要吗?​ 网站测速的…

表单和载荷的区别,以及python和js在处理json时的空格问题。

1、在 传载荷的时候,用json= 这样传底层会调用json.dumps来转换,如:response = requests.post(url,headers=headers,params=params,data=json.dumps(data.separators=(,":")) 2、在 传表单的时候,用data= 如:response = requests.post(url,headers=headers,…

荣誉| 触想TPC07-WIPC工控机荣获2025控制产品“新质”奖!

3月13日,第23届中国自动化与数字化“新质奖”评选颁奖典礼在无锡举办,触想自主研发的TPC07-WIPC工控机以卓越性能、灵活扩展和可靠性备受关注,获得2025控制产品“新质”奖。△ 触想代表朱涛(左四)上台领奖TPC07-WIPC系列工控机是触想面向边缘计算、机器视觉、AI智能等场景推…

汉诺塔游戏 | 数学益智游戏②

依托国产的 AI 豆包完成的网页端的汉诺塔益智游戏。前情概要 AI 辅助设计的一款数学益智游戏,汉诺塔游戏。 汉诺塔游戏body0 {font-family: Arial, sans-serif; text-align: left; background-color: #f4f4f9; display: flex; flex-direction: column; align-items: center; }…

20242801 2024-2025-2 《网络攻防实践》第3次作业

20242801 2024-2025-2 《网络攻防实践》第3次作业 一、实验内容使用tcpdump等网络流量分析工具对网络登陆过程进行嗅探,统计登陆通过中访问的ip地址信息。 使用wireshark或科来等网络分析工具,对以TELNET方式登陆BBS过程进行嗅探,查看BBS服务器的ip地址和访问端口,以及使用…

python 实验一(20241116魏铼)

课程:《Python程序设计》 班级: 2411 姓名: 魏铼 学号:20241116 实验教师:王志强 实验日期:2025年3月19日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分析,要有过程) 3.编写程序,练习变量和…