浅谈AI落地之-关于数据增广的思考

embedded/2025/3/28 13:45:12/

 前言

曾在游戏世界挥洒创意,也曾在前端和后端的浪潮间穿梭,如今,而立的我仰望AI的璀璨星空,心潮澎湃,步履不停!愿你我皆乘风破浪,逐梦星辰!

数据增广中的mixup(Mixup Augmentation)

简单的来说,Mixup 是一种 数据增强(Data Augmentation) 技术,通过线性插值混合两张图片及其标签,使模型学习到更平滑的决策边界,提高泛化能力。

1. 具体流程

  • 随机选取两张图片 x1,x2​ 及其标签 y1,y2​
  • 使用 Mixup 公式计算新的图像和标签: x′=λx1+(1−λ)x,​ y′=λy1+(1−λ)y,​ 其中,λ是从 Beta 分布中采样的权重: λ∼Beta(α,α)
  • 通常 α\alphaα 设为 0.2 ~ 0.4

2. 示例(输入 & 输出)

输入

两张 32×32 的图片(假设是 CIFAR-10 数据集),分别属于「猫(类别 3)」和「狗(类别 5)」。

  • x1x_1x1​:猫图片
  • y1=[0,0,0,1,0,0,0,0,0,0]
  • x2x_2x2​:狗图片
  • y2=[0,0,0,0,0,1,0,0,0,0]
  • 设 λ=0.7
Mixup 计算

1. 计算新的图片

x′=0.7×x1+0.3×x2

新图片 x′ 是70% 猫 + 30% 狗 的混合图像。

2. 计算新的标签

y′=0.7×y1+0.3×y2,y′=[0,0,0,0.7,0,0.3,0,0,0,0]

新的标签表示「70% 猫 + 30% 狗」。

输出
    • 新的混合图片(视觉上类似半透明的猫+狗)。
    • 新的标签:猫 70%,狗 30%(软标签)。

3. Mixup 的 Python 代码

import numpy as np
import torchdef mixup_data(x1, y1, x2, y2, alpha=0.4):"""Mixup 数据增强"""lam = np.random.beta(alpha, alpha)  # 采样 λx_mixed = lam * x1 + (1 - lam) * x2y_mixed = lam * y1 + (1 - lam) * y2return x_mixed, y_mixed# 假设 x1, x2 是两张图片(PyTorch Tensor),y1, y2 是 one-hot 标签
x1 = torch.rand(3, 32, 32)  # 假设 RGB 图片
x2 = torch.rand(3, 32, 32)
y1 = torch.tensor([0, 0, 0, 1, 0, 0, 0, 0, 0, 0])  # 类别 3(猫)
y2 = torch.tensor([0, 0, 0, 0, 0, 1, 0, 0, 0, 0])  # 类别 5(狗)x_mixed, y_mixed = mixup_data(x1, y1, x2, y2)print(y_mixed) 


http://www.ppmy.cn/embedded/173999.html

相关文章

5.3《凸透镜成像的规律》——先于5.2《生活中的透镜》讲

教会什么:凸透镜成像规律 培养什么:(再说) 课标: (二)运动和相互作用 2.3 声和光 2.3.5探究并了解凸透镜成像的规律。 (四)实验探究 4.2 探究类学生必做实验 4.2.8 探究凸透镜成像的规律。 例8 用蜡烛(或F形光源)、凸透镜、光具座、光屏等,探究凸透镜成像时,像的正…

20250314-vue-Props3

Props 校验 vue组件可以更细致地声明对传入的 props 的校验要求。比如类型声明,如果传入的值不满足类型要求,Vue会在浏览器控制台中抛出警告来提醒使用者。这在开发给其他开发者使用的组件时非常有用。 要声明对 props 的校验,可以向 props…

性能测试之grafana展示jmeter测试指标与主机监控

性能测试之grafana展示jmeter测试指标与主机监控 背景 ​ 公司新的项目准备开展性能测试,之前性能监控主要使用的jmeter的插件jpgc-Transactions per Second 与 jpgc- Response Times Over Time 与 jpgc - Active Threads Over Time等等插件监控性能指标结果,PerfMon Metrics…

华为OD机试 - 仿LISP运算 - 逻辑分析(Java 2023 B卷 200分)

题目描述 LISPQ语言的唯一语法是括号必须配对,形如(OP P1 P2 ...),括号内元素由单个空格分隔。其中第一个元素OP为操作符,后续元素均为其参数,参数个数取决于操作符类型。当前OP类型为add/sub/mul/div(全小写),分别代表整数的加减乘除法。简单起见,所有OP参数个数均为…

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty 详细解释1. 基本功能2. 语法3. 示例代码示例 1:创建一个 5 的未初始化张量示例 2:创建一个 23 的未初始化张量示例 3:指定数据类型和设备 4. 注…

HTML5 Canvas 的俄罗斯方块游戏开发实践

基于 HTML5 Canvas 的俄罗斯方块游戏开发实践 这里写目录标题 基于 HTML5 Canvas 的俄罗斯方块游戏开发实践项目概述技术栈选择核心功能实现1. 游戏初始化2. 方块设计3. 碰撞检测4. 方块旋转5. 消行处理 性能优化项目难点与解决方案开发经验总结项目收获未来优化方向结语 项目概…

Spring、Spring Boot、Spring Cloud 的区别与联系

1. Spring 框架 定位:轻量级的企业级应用开发框架,核心是 IoC(控制反转) 和 AOP(面向切面编程)。 核心功能: 依赖注入(DI):通过 Autowired、Component 等注解…

Opencv之计算机视觉一

一、环境准备 使用opencv库来实现简单的计算机视觉。 需要安装两个库:opencv-python和opencv-contrib-python,版本可以自行选择,注意不同版本的opencv中的某些函数名和用法可能不同 pip install opencv-python3.4.18.65 -i https://pypi.t…