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

【机器学习300问】60、图像分类任务中,训练数据不足会带来什么问题?如何缓解图像数据不足带来的问题?

        在机器学习中,绝大部分模型都需要大量的数据进行训练和学习(包括有监督学习和无监督学习),然而在实际应用中经常会遇到训练数据不足的问题。就比如图像分类这样的计算机视觉任务,确实依赖于大规模且多样化的训练数据以确保模型能够有效地泛化到未见过的实例上。然而,实践中遭遇训练数据不足是很常见的挑战。当训练一个图像分类模型时,如果训练样本比较少,该如何处理呢?

一、训练数据不足会造成什么问题?

(1)过拟合

        图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面。处理策略大致可以归纳为两大类:

  • 依赖模型的方法:其核心在于采取降低过拟合风险的策略。这包括简化模型结构(例如,将复杂的非线性模型简化为更易处理的线性模型)、引入正则化项以缩小模型假设空间(如采用L1或L2正则化技术)、运用集成学习方法以及调整Dropout超参数等手段。
  • 基于数据的方法:主要通过数据增强技术来实施。这类方法依据特定的先验知识,在保留关键信息的同时对原始数据进行合适的转换,旨在扩展数据集并提高模型的泛化能力。

(2)欠拟合

        在图像分类任务上,训练数据不足也有可能带来欠拟合的问题。欠拟合是指模型的复杂度不足以捕捉到数据集中的所有重要特征和模式,导致模型在训练集上的表现也不理想,更不用说在未见过的测试集上了。当训练数据不足时,模型可能无法从有限的样本中学习到足够的信息来概括整个数据分布,表现为模型的泛化能力较弱。

        可以通过上面的两种思路来尝试缓解欠拟合:

  • 依赖模型的方法:使用更大规模或者更深层次的神经网络结构,使模型具有更强的学习能力来捕捉数据中的复杂关系。或使用迁移学习、集成学习的方法。
  • 基于数据的方法:数据增强技术,对现有的少量训练数据进行各种变换,例如旋转、翻转、裁剪、缩放、颜色抖动等,以模拟更多的训练样本。

        关于跟多过拟合与欠拟合的概念,可以看看我之前的文章:
【机器学习300问】27、高偏差与高方差是什么?他们对评估机器学习模型起何作用?icon-default.png?t=N7T8http://t.csdnimg.cn/EalJu

二、如何解决数据不足带来的问题?

        这里有很多方法,我之前的文章已经讲过了,我在本文中拓展将一下图像的数据增强技术。 

(1)迁移学习

         利用预训练的深度学习模型,保留其底层特征提取层,并在顶部添加新的全连接层或卷积层,仅用少量标注图像对该部分进行微调。

【机器学习300问】37、什么是迁移学习?icon-default.png?t=N7T8http://t.csdnimg.cn/Q7aQQ

(2)欠采样/过采样技术

         对于类别不平衡问题,可以通过欠采样冗余类别或过采样少数类别的方法来平衡数据分布。

【机器学习300问】31、不平衡数据集如何进行机器学习?icon-default.png?t=N7T8http://t.csdnimg.cn/f8SL8

(3)数据增强

        通过对现有的图像数据进行各种变换,如翻转、旋转、裁剪、缩放、颜色抖动、平移等操作,生成新的训练样本,从而扩大训练集的大小而不引入额外的真实数据。

【机器学习300问】29、训练数据少该怎么办?数据增强icon-default.png?t=N7T8http://t.csdnimg.cn/uhLP5

① 色彩空间转换

        比如手势识别中,如果图像训练数据过少,可以采取颜色变换的方式增加图像。图像处理中常见的颜色空间分布有 RGB、HSV 和 YCrCb 三种空间模型。比较这三种空间模型后发现 RGB 空间由于亮度信息存在三个颜色通道中,并不相互独立,难以从 RGB 颜色空间中有效提取出手势的肤色信息,而 YCrCb 和 HSV 颜色空间都具有亮度与色度相分离的特点,并且肤色范围紧密,不易受光照后其他物体的干扰,相对来说更适用提取手势的肤色信息。RGB 与 YCrCb 空间转化的计算公式如下所示。

        这里的R、G、B代表原始RGB颜色空间中的红色、绿色和蓝色通道值,Y是计算出的亮度值,Cb和Cr是对应于蓝色和红色的色度分量。公式中加上的128是为了将色度分量的取值范围从-127至128调整到0至255的标准8位颜色值区间。通过这种转换后,可以根据Cr和Cb的值来判断像素是否属于肤色区域。

② 二值化

        图像的二值化处理是将图像上所有像素点的灰度值设置为 0 或者 255 过程,使得整个图像呈现出明显的黑白效果,通常选取一个合适的阈值,当图像中像素值大于或者等于阈值时判定为前景,将其值设为 255,反之则判定为背景,将其值设为 0。图像的二值化使得图像变得简单明了,通过前景和背景的像素值重置可以有效降低背景噪声,在一定程度增强了特征。

        下面介绍一个常用的选取合适阈值的方法——最大类间方差法(也称Otsu)。其基本思想是将图像看做前景目标和背景环境两个部分组成,用两部分像素值的方差来估计前景目标和背景环境之间的差别,通过像素划分各部分出现的概率和平均灰度级来计算两部分的方差,得到使得前景目标和环境背景的类间方差达到最大的灰度级值默认为最佳阈值。最佳阈值的标准判别公式如下所示。

 \sigma_{\text{b}}^2(t) = \omega_0(t) \omega_1(t) [\mu_0(t) - \mu_1(t)]^2

        其中,t是当前的阈值。\omega_0(t)\omega_1(t)分别是背景(阈值以下)和前景(阈值以上)的像素占比。\mu_0(t)\mu_1(t)分别是背景和前景的像素平均灰度值。\sigma_{\text{b}}^2(t)表示类间方差,即背景与前景之间的差异。Otsu的方法就是通过遍历全部可能的t值,找到最大化\sigma_{\text{b}}^2(t)的那个t值,即最佳阈值。在实践中,最大类间方差法是一种高效且自动的阈值选择方法,尤其在物体识别和图像分割中被广泛使用。

相关文章:

【机器学习300问】60、图像分类任务中,训练数据不足会带来什么问题?如何缓解图像数据不足带来的问题?

在机器学习中,绝大部分模型都需要大量的数据进行训练和学习(包括有监督学习和无监督学习),然而在实际应用中经常会遇到训练数据不足的问题。就比如图像分类这样的计算机视觉任务,确实依赖于大规模且多样化的训练数据以…...

鸿蒙内核源码分析 (内存管理篇) | 虚拟内存全景图是怎样的

初始化整个内存 OsSysMemInitOsMainmain从 main() 跟踪可看内存部分初始化是在 OsSysMemInit() 中完成的。 UINT32 OsSysMemInit(VOID) {STATUS_T ret;OsKSpaceInit();//内核空间初始化ret OsKHeapInit(OS_KHEAP_BLOCK_SIZE);// 内核动态内存初始化 512K if (ret ! LOS_OK…...

基于深度学习的电动自行车头盔佩戴检测系统

文章目录 1. 文档说明2. 运行环境说明2.1 硬件配置2.2 软件配置2.3 程序依赖库 3. 基本环境配置3.1 软件安装3.1.1 集成开发环境安装与配置3.1.2 数据库安装与配置3.1.3 编程语言安装3.1.4 CUDA和cuDNN安装与配置3.1.5 机器学习库安装 3.2 依赖库安装 4. 运行程序资源下载地 1.…...

GO - 泛型编程

go - 泛型编程 介绍 泛型即开发过程中编写适用于所有类型的模板,只有在具体使用的时候才能确定其真正的类型。随着Go 1.18版本的发布,泛型正式成为了Go语言的一部分。 在编写代码时,我们经常会遇到需要处理不同类型的数据的情况。传统上&am…...

TouchableOpacity和TouchableWithoutFeedback区别

TouchableOpacity和TouchableWithoutFeedback都是React Native中定义的可触摸组件,但它们之间有一些区别: 点击效果:TouchableOpacity在被按下时会有一个透明度变化的点击效果,而TouchableWithoutFeedback则没有点击效果。 子组…...

MySQL EXISTS 语句和IN语句有啥区别

在 MySQL 中,EXISTS 和 IN 是用于子查询的两种不同方式,它们有一些区别: 1. **IN 语句**: - IN 子句用于在 WHERE 子句中指定多个值,并检查主查询中的某个列是否在子查询返回的结果集中。 - IN 子句适用于子查询…...

Java集合体系面试题

1. Java中有哪些主要的集合接口? 答案:Java中主要的集合接口有Collection、List、Set、Queue和Map。 2. 请解释List和Set之间的主要区别。 答案:List和Set的主要区别在于元素的顺序和唯一性。List是有序的集合,允许存储重复的元…...

React-2-useState-获取DOM-组件通信

一.useState useState 是一个 React Hook(函数),它允许我们向组件添加一个状态变量, 从而控制影响组件的渲染结果 本质:和普通JS变量不同的是,状态变量一旦发生变化组件的视图UI也会跟着变化**(数据驱动视…...

使用nodejs搭建脚手架工具并发布到npm中

使用nodejs搭建脚手架工具并发布到npm中 一、安装环境依赖及脚手架搭建过程二、搭建Monorepo 风格的脚手架工程三、脚手架的必备模块命令参数模块获取命令参数设置子命令用户交互模块文件拷贝模块脚手架中的路径处理目录守卫文件拷贝模块动态文件生成模块mustache简介自动安装依…...

【面经】3月29日 美团/美团平台/后端/一面/1h

面试官先介绍自己部门的业务:存储中心,涉及到大量数据的离线处理(亿级别)。 手撕(删除链表倒数第k个节点) 自我介绍 项目介绍(还没说完被打断了,面试官说你这个感觉就是把功能说了一…...

CSS:CSS的基础了解

css概述 CSS(Cascading Style Sheets,层叠样式表) 是用于控制网页样式和布局的一种样式表语言。用于描述网页的样式和布局,包括字体、颜色、大小、间距、边框等方面。 前端三🗡客:HTML,CSS,JavaScript&am…...

Android Framework学习笔记(2)----系统启动

Android系统的启动流程 启动过程中,用户可控部分是framework的init流程。init是系统中的第一个进程,其它进程都是它的子进程。 启动逻辑源码参照:system/core/init/main.cpp 关键调用顺序:main->FirstStageMain->SetupSel…...

项目管理中的估算活动资源

在项目管理中,资源估算是一项至关重要的任务。正确地估算活动资源可以确保项目的顺利进行,避免资源浪费和不必要的延误。以下是对项目管理中常见的活动资源类型的详细分析。 一、人力资源 人力资源是项目管理中最基本的资源之一。它包括项目团队成员的技能、知识和经验。在…...

java中的set集合及其子类

Set系列集合:添加的元素是无序(添加的数据的顺序和获取出数据顺序不一样),不重复,无索引 如:HashSet:无序,不可重复,无索引 LinkedHashSet:有序,不重复,无索…...

shell脚本查询匹配文件进行操作

1.寻找文件并赋权 查询当前目录及子目录下所有以“sh”结尾的文件,并赋执行权限。 #!/bin/bash # 将当前目录及子目录下所有以“sh”结尾的文件添加可执行权限 find ./ -name "*.sh" -type f -exec chmod x {} 2.寻找文件并删除 查询当前目录及子目录下存…...

vulnhub----natraj靶机

文章目录 一.信息收集1.网段探测2.端口扫描3.版本服务探测4.漏扫5.目录扫描 二.漏洞利用1.分析信息2..fuzz工具 三.getshell四.提权六.nmap提权 一.信息收集 1.网段探测 因为使用的是VMware,靶机的IP地址是192.168.9.84 ┌──(root㉿kali)-[~/kali/vulnhub] └─…...

Web Component 组件库有什么优势

前言 前端目前比较主流的框架有 react,vuejs,angular 等。 我们通常去搭建组件库的时候都是基于某一种框架去搭建,比如 ant-design 是基于 react 搭建的UI组件库,而 element-plus 则是基于 vuejs 搭建的组件库。 可能你有这种体…...

如何配置vite的proxy

1.前言 vite项目,本地开发环境可以通过配置proxy代理实现跨域请求。但是生产环境,该配置不生效,一般使用 nginx 转发,或者后端配置cors 2.解释 server: {port: 9000,proxy: { // 本地开发环境通过代理实现跨域,生产…...

Linux CentOS基础操作

Linux CentOS基础操作 1. 查看Linux服务器当前主机名等 hostname 2. 查看当前系统日期和时间 date -d -y 3. 显示网络接口信息,获取当前网卡状态,启动、停止网卡,网卡等闪烁显示30秒,配置网卡(网卡名称:eth1)的IP地址…...

最佳情侣身高差

题目描述 专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)1.09 (男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。 下面…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...