当前位置: 首页 > article >正文

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

 前言

曾在游戏世界挥洒创意,也曾在前端和后端的浪潮间穿梭,如今,而立的我仰望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 torch

def mixup_data(x1, y1, x2, y2, alpha=0.4):
    """Mixup 数据增强"""
    lam = np.random.beta(alpha, alpha)  # 采样 λ
    x_mixed = lam * x1 + (1 - lam) * x2
    y_mixed = lam * y1 + (1 - lam) * y2
    return 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.kler.cn/a/590226.html

相关文章:

  • Tomcat线程池详解,为什么SpringBoot最大支持200并发?
  • 从零搭建微服务项目Pro(第6-1章——Spring Security+JWT实现用户鉴权访问与token刷新)
  • 【前端】入门基础(一)html标签
  • Git 面试问题,解决冲突
  • ‌RTSPtoWeb, 一个将rtsp转换成webrtc的开源项目
  • C++之list类及模拟实现
  • Redis 安装详细教程(小白版)
  • 《企业级 Webpack 5 优化实战:构建速度提升 400% 的完整方案》
  • VO和DO在前后端中的对应关系详解
  • 中间件漏洞之weblogic
  • Centos离线安装openssl-devel
  • C/C++蓝桥杯算法真题打卡(Day6)
  • “查找”功能发展到今天,便利了生活哪些地方?
  • Bash语言的堆
  • DNS主从服务器
  • 【Linux篇】:初步理解何为进程--从硬件“原子“到PCB“粒子“的进程管理革命
  • Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构
  • Python----计算机视觉处理(Opencv:图像缩放)
  • vulkanscenegraph显示倾斜模型(5.3)-相机
  • 【eNSP实战】基本ACL实现网络安全