当前位置: 首页 > 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 (男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。 下面…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...