深度学习 ----- 数据预处理
常用的高级数据预处理的方法总结
🧠 一、图像数据高级预处理方法汇总表
方法 | 原理 | 常用参数 | 适用场景 |
---|---|---|---|
图像增强(Augmentation) | 改变图像外观/几何结构,提升泛化能力 | 翻转、旋转、缩放、色调扰动等 | 分类、检测、分割等 |
Mixup / CutMix | 合成新图像/标签组合,提升鲁棒性 | alpha(混合程度) | 小数据集、过拟合任务 |
标准化(Normalization) | 均值为0,方差为1,提升训练稳定性 | mean、std | 图像分类、迁移学习等 |
图像去噪 | 去除无效噪声 | 滤波核大小等 | 医学图像、工业图像等 |
图像压缩与分辨率调整 | 减小内存/提高兼容性 | 尺寸参数 | 超大图像、模型输入要求 |
自动增强(AutoAugment / RandAugment) | 使用搜索或随机策略自动增强 | policy、N、M 等 | 高精度需求任务 |
Cutout:
- 原理:随机在图像上遮盖一个固定大小的矩形区域(置为 0 或均值),迫使模型关注非遮盖区域。
- 作用:
- 模拟遮挡,增强鲁棒性。
- 防止模型过度依赖局部特征(如 CIFAR-10 的物体纹理)。
- 参数:
- size:遮盖区域大小(像素)。
- p:应用概率。
- 代码
-
class Cutout:def __init__(self, size, p=0.5):self.size = sizeself.p = pdef __call__(self, img):if torch.rand(1) > self.p:return imgh, w = img.shape[1:]cx = torch.randint(0, w, (1,))cy = torch.randint(0, h, (1,))x1 = torch.clamp(cx - self.size // 2, 0, w)x2 = torch.clamp(cx + self.size // 2, 0, w)y1 = torch.clamp(cy - self.size // 2, 0, h)y2 = torch.clamp(cy + self.size // 2, 0, h)img[:, y1:y2, x1:x2] = 0return img
1. 图像增强(Image Augmentation)
原理:
通过对图像进行旋转、翻转、裁剪、亮度调整等,模拟更多样本,增强模型泛化能力。
PyTorch 示例代码:
import torchvision.transforms as transformstransform = transforms.Compose([transforms.RandomHorizontalFlip(p=0.5), # 水平翻转概率为0.5transforms.RandomRotation(degrees=15), # 旋转±15度transforms.ColorJitter(brightness=0.2, contrast=0.2), # 颜色扰动transforms.RandomResizedCrop(224, scale=(0.8, 1.0)), # 随机裁剪并调整大小transforms.ToTensor(),
])
参数说明:
-
p
: 操作发生的概率 -
degrees
: 最大旋转角度 -
scale
: 随机裁剪区域占比范围 -
brightness
,contrast
: 颜色变化范围,数值越大变化越强烈
适用场景:
-
数据少或容易过拟合的任务
-
对图像形态鲁棒性的模型训练(如 ResNet)
调试技巧:
-
增强过强可能破坏语义,建议先可视化
-
可以用
torchvision.transforms.RandomApply()
组合增强策略
2. Mixup / CutMix
原理:
-
Mixup:将两张图像按比例混合,标签也按比例混合。
-
CutMix:将一部分图像区域替换为另一张图像,标签按区域面积加权混合。
Mixup 示例代码:
def mixup_data(x, y, alpha=1.0):lam = np.random.beta(alpha, alpha)index = torch.randperm(x.size(0))mixed_x = lam * x + (1 - lam) * x[index, :]y_a, y_b = y, y[index]return mixed_x, y_a, y_b, lam
参数说明:
-
alpha
: 控制 Beta 分布的参数,值越大混合越均匀
适用场景:
-
小数据集或模型容易过拟合
-
强化模型对边界样本的泛化能力
调试技巧:
-
可视化混合结果确认是否失真
-
训练时需改动 loss 计算:
loss = lam * loss_a + (1 - lam) * loss_b
3. 标准化(Normalization)
原理:
将图像像素值转化为均值为0、方差为1的分布,加速收敛,提升稳定性。
示例代码(适配 ImageNet 预训练):
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
参数说明:
-
mean
,std
: 每通道的均值和标准差,通常根据数据集统计或跟预训练模型一致
适用场景:
-
任何图像任务,尤其是使用预训练模型时
调试技巧:
-
若训练模型从零开始,可以自己计算均值和标准差
-
可用
transforms.ToPILImage()
逆变换还原图像
4. 自动增强(AutoAugment / RandAugment)
原理:
使用搜索算法(AutoAugment)或随机采样策略(RandAugment)自动生成增强策略。
示例代码(RandAugment):
from torchvision.transforms import RandAugmenttransform = transforms.Compose([RandAugment(num_ops=2, magnitude=9),transforms.ToTensor(),
])
参数说明:
-
num_ops
: 应用的随机操作数量 -
magnitude
: 操作强度,0~10之间
适用场景:
-
高精度任务,如 ImageNet、医学图像
-
自动寻找最优增强组合
调试技巧:
-
在大模型上训练更有效
-
可以将 RandAugment 作为子模块嵌入到主 pipeline 中调试效果
5. 图像去噪
原理:
利用滤波技术去除图像中不必要的噪声,保留结构信息。
示例代码(OpenCV):
import cv2
denoised = cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)
参数说明:
-
h
: 强度参数,控制去噪程度 -
templateWindowSize
: 模板窗口大小 -
searchWindowSize
: 搜索窗口大小
适用场景:
-
噪声严重的数据,如医学图像、红外图像
调试技巧:
-
与 CLAHE(自适应直方图均衡)结合效果更佳
-
需注意保持边缘清晰,避免信息损失
6. 图像尺寸调整(Resize + Padding)
原理:
统一图像尺寸以适配模型,避免不同大小导致 shape 错误。
示例代码:
transform = transforms.Compose([transforms.Resize((256, 256)), # 固定缩放transforms.CenterCrop(224), # 居中裁剪transforms.ToTensor()
])
参数说明:
-
Resize
: 指定输出尺寸,元组表示高宽 -
Crop
: 中心或随机裁剪
适用场景:
-
输入大小必须一致的 CNN 模型
-
多种原始尺寸图像混合训练时
调试技巧:
-
保持长宽比时可用
transforms.Resize(256)
+transforms.CenterCrop(224)
-
如果要求输入为正方形,可配合 ZeroPadding
总结:推荐组合模板(分类任务)
transform = transforms.Compose([transforms.RandomResizedCrop(224, scale=(0.8, 1.0)),transforms.RandomHorizontalFlip(),transforms.ColorJitter(0.4, 0.4, 0.4, 0.1),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]),
])
相关文章:
深度学习 ----- 数据预处理
常用的高级数据预处理的方法总结 🧠 一、图像数据高级预处理方法汇总表 方法原理常用参数适用场景图像增强(Augmentation)改变图像外观/几何结构,提升泛化能力翻转、旋转、缩放、色调扰动等分类、检测、分割等Mixup / CutMix合成…...
Cluster Interconnect in Oracle RAC
Cluster Interconnect in Oracle RAC (文档 ID 787420.1)编辑转到底部 In this Document Purpose Scope Details Physical Layout of the Private Interconnect Why Do We Need a Private Interconnect ? Interconnect Failure Interconnect High Availability Private Inte…...
【Spring Boot 注解】@SpringBootApplication
文章目录 SpringBootApplication注解一、简介二、使用1.指定要扫描的包 SpringBootApplication注解 一、简介 SpringBootApplication 是 Spring Boot 提供的一个注解,通常用于启动类(主类)上,它是三个注解的组合: 1.…...
angular的cdk组件库
目录 一、虚拟滚动 一、虚拟滚动 <!-- itemSize相当于每个项目的高度为30px --><!-- 需要给虚拟滚动设置宽高,否则无法正常显示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…...

element-ui日期时间选择器禁止输入日期
需求解释:时间日期选择器,下方日期有禁止选择范围,所以上面的日期输入框要求禁止输入,但时间输入框可以输入,也就是下图效果,其中日历中的禁止选择可以通过【picker-options】这个属性实现,此属…...
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试 引言:HarmonyOS生态下的质量保障挑战 在万物互联的智能时代,HarmonyOS作为分布式操作系统,为开发者带来了前所未有的创新空间&#x…...
网络安全体系架构:核心框架与关键机制解析
以下是关于网络安全体系架构设计相关内容的详细介绍: 一、开放系统互联安全体系结构 开放系统互联(OSI)安全体系结构是一种基于分层模型的安全架构,旨在为开放系统之间的通信提供安全保障。它定义了安全服务、安全机制以及它们在…...
一种安全不泄漏、高效、免费的自动化脚本平台
在数字化转型加速的今天,自动化脚本工具已成为提升效率的重要助手。然而,用户在选择这类工具时,往往面临两大核心关切:安全性与成本。冰狐智能辅助(IceFox Intelligent Assistant)作为一款新兴的自动化脚本…...

[论文阅读]Deeply-Supervised Nets
摘要 我们提出的深度监督网络(DSN)方法在最小化分类误差的同时,使隐藏层的学习过程更加直接和透明。我们尝试通过研究深度网络中的新公式来提升分类性能。我们关注卷积神经网络(CNN)架构中的三个方面:&…...

多模态大语言模型arxiv论文略读(六十二)
MileBench: Benchmarking MLLMs in Long Context ➡️ 论文标题:MileBench: Benchmarking MLLMs in Long Context ➡️ 论文作者:Dingjie Song, Shunian Chen, Guiming Hardy Chen, Fei Yu, Xiang Wan, Benyou Wang ➡️ 研究机构: The Chinese Univers…...

现代框架对SEO的深度影响
第8章:现代框架对SEO的深度影响 1. 引言 Next 和 Nuxt 是两个 🔥热度和使用度都最高 的现代 Web 开发框架,它们分别基于 ⚛️React 和 🖖Vue 构建,也代表了这两个生态的 🌐全栈框架。 Next 是由 Vercel 公司…...

密码学--RSA
一、实验目的 1.随机生成明文和加密密钥 2.利用C语言实现素数选择(素性判断)的算法 3.利用C语言实现快速模幂运算的算法(模重复平方法) 4.利用孙子定理实现解密程序 5.利用C语言实现RSA算法 6.利用RSA算法进行数据加/解密 …...

如何选择自己喜欢的cms
选择内容管理系统cms what is cms1.whatcms.org2.IsItWP.com4.Wappalyzer5.https://builtwith.com/6.https://w3techs.com/7. https://www.netcraft.com/8.onewebtool.com如何在不使用 CMS 检测器的情况下手动检测 CMS 结论 在开始构建自己的数字足迹之前,大多数人会…...

BUUCTF——杂项渗透之赛博朋克
下载附件,是一个txt。打开查看,数据如下: 感觉这个像是用十六进制编辑器打开后的图片数据。为了验证此想法,我用010editor打开,发现文件头的确是png图片的文件头。 把txt文件后缀改成png格式,再双击打开&am…...
【c++】 我的世界
太久没更新小游戏了 给个赞和收藏吧,求求了 要游戏的请私聊我 #include <iostream> #include <vector>// 定义世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定义方块类型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定义世界…...

React 中集成 Ant Design 组件库:提升开发效率与用户体验
React 中集成 Ant Design 组件库:提升开发效率与用户体验 一、为什么选择 Ant Design 组件库?二、基础引入方式三、按需引入(优化性能)四、Ant Design Charts无缝接入图标前面提到了利用Redux提供全局维护,但如果在开发时再自己手动封装组件,不仅效率不高,可能开发的组件…...
HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
HunyuanCustom是一款由腾讯混元团队开发的多模态驱动定制视频生成框架,能够支持图像、音频、视频和文本等多种输入方式。该框架专注于生成高质量的视频,能够实现特定主体和场景的精准呈现。 HunyuanCustom是什么 HunyuanCustom是腾讯混元团队推出的一种…...
Lightweight App Alternatives
The tech industry’s business model thrives on constant churn: new features, fancier designs, and heavier apps — not because they’re essential, but because they keep consumers upgrading. Stripping your phone back to basics is an act of tech self-defense.…...
STM32F103RCT6 + MFC实现网口设备搜索、修改IP、固件升级等功能
资源下载链接:https://download.csdn.net/download/qq_35831134/90712875?spm=1001.2014.3001.5501 一.大概逻辑: // 网口搜索大概逻辑: // ************************************************************************** // 一.环境: // 上位机用MFC下位机用STM32F103R…...

编译原理实验 之 语法分析程序自动生成工具Yacc实验
文章目录 实验环境准备复现实验例子分析总的文件架构实验任务 什么是Yacc Yacc(Yet Another Compiler Compiler)是一个语法分析程序自动生成工具,Yacc实验通常是在编译原理相关课程中进行的实践项目,旨在让学生深入理解编译器的语法分析阶段以及掌握Yac…...
[250504] Moonshot AI 发布 Kimi-Audio:开源通用音频大模型,驱动多模态 AI 新浪潮
目录 Moonshot AI 发布 Kimi-Audio:开源音频基础模型,赋能音频理解、生成与对话新时代核心能力与特性技术基础开放资源与评估行业意义 Moonshot AI 发布 Kimi-Audio:开源音频基础模型,赋能音频理解、生成与对话新时代 Moonshot A…...

从“山谷论坛”看AI七剑下天山
始于2023年的美国山谷论坛(Hill and Valley Forum)峰会,以“国会山与硅谷”命名,寓意连接科技界与国家安全战略。以人工智能为代表的高科技,在逆全球化时代已成为大国的致胜高点。 论坛创办者Jacob Helberg,现在是华府的副国务卿,具体负责经济、环境和能源事务。早先曾任…...

C——数组和函数实践:扫雷
此篇博客介绍用C语言写一个扫雷小游戏,所需要用到的知识有:函数、数组、选择结构、循环结构语句等。 所使用的编译器为:VS2022。 一、扫雷游戏是什么样的,如何玩扫雷游戏? 如图,是一个标准的扫雷游戏初始阶段。由此…...

sui在windows虚拟化子系统Ubuntu和纯windows下的安装和使用
一、sui在windows虚拟化子系统Ubuntu下的安装使用(WindowsWsl2Ubuntu24.04) 前言:解释一下WSL、Ubuntu的关系 WSL(Windows Subsystem for Linux)是微软推出的一项功能,允许用户在 Windows 系统中原生运行…...

智能合约在去中心化金融(DeFi)中的核心地位与挑战
近年来,区块链技术凭借其去中心化、不可篡改等特性,在全球范围内掀起了技术革新浪潮。去中心化金融(DeFi)作为区块链技术在金融领域的重要应用,自 2018 年以来呈现出爆发式增长态势。据 DeFi Pulse 数据显示࿰…...
Femap许可使用数据分析
在当今竞争激烈的市场环境中,企业对资源使用效率和成本控制的关注日益增加。Femap作为一款业界领先的有限元分析软件,其许可使用数据分析功能为企业提供了深入洞察和智能决策的支持。本文将详细介绍Femap许可使用数据分析工具的特点、优势以及如何应用这…...

有关SOA和SpringCloud的区别
目录 1. 定义 2. 架构风格 3. 技术栈 4. 服务交互 5. 适用场景 前言 面向服务架构(SOA)是一种软件设计风格,它将应用程序的功能划分为一系列松散耦合的服务。这些服务可以通过标准的通信协议进行交互,通常是HTTP或其他消息传…...

学习搭子,秘塔AI搜索
什么是秘塔AI搜索 《秘塔AI搜索》的网址:https://metaso.cn/ 功能:AI搜索和知识学习,其中学习部分是亮点,也是主要推荐理由。对应的入口:https://metaso.cn/study 推荐理由 界面细节做工精良《今天学点啥》板块的知…...

IBM BAW(原BPM升级版)使用教程第六讲
续前篇! 一、事件:Undercover Agent 在 IBM Business Automation Workflow (BAW) 中,Undercover Agent (UCA) 是一个非常独特和强大的概念,旨在实现跨流程或系统的事件处理和触发机制。Undercover Agent 主要用于 事件驱动的流程…...

高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
一、虚拟机环境下的部署演进 1. 低并发场景(QPS<10)的简单模式 # 典型部署脚本示例 ssh userproduction "cd /var/www && git pull origin master" 技术痛点: 文件替换期间导致Nginx返回502错误(统计显示…...