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

CS231n-2017 Lecture2图像分类笔记

图像分类问题

定义:

在已有固定的分类标签集合的前提下,能够对输入的图像进行识别处理,从集合中找到该图像所对应的标签。

对于计算机而言,图像并非直观的图像,而是一个n\times m的像素集合,对于每个像素,其又有RBG三个颜色通道。因此,一张图片可以被认为是一个n \times m \times 3 的三维数组,数组内每个元素都是在[0,255] 范围内的整型。而计算机图像分类的任务,就是将这样的一个三维数组映射到其对应的标签上

困难点:

Viewpoint variation:对于同一个物体,图片可能从多个角度来展现

Scale variation:由于摄影距离的远近、物体尺寸大小不同,物体的可视大小通常是变化的

Deformation:同一个物体可能以不同的形态出现,会发生形变

Occlusion:目标物体可能会被无关物体挡住,只有部分可见

Illumination conditions:光照会极大程度地影响同一个形状物品的RGB值

Background clutter:物体可能会混入背景中,难以被分辨

Intra-class variation:同一类物体的外观差异可能也会较大

流程:

1.输入:输入是包含N个图像的集合,每个图像的标签是K种标签的一种,我们把这个图像集合成为训练集

2.模型学习/训练分类器:使用训练集来学习每个标签具体长什么样

3.评价:使用分类器来给其从未见过的图像打标签,并以此正确率来评价分类器

Nearest Neighbor分类器

原理:

对于输入的图像,我们将其与训练集中的所有图像进行差异比较,找到与输入图像差异最小的图像,并将这个图像的标签作为输入图像的标签

差异的量化:

假设我们需要比较图片p_1 和图片p_2,则我们先将这个两个三维数组分别展开成为向量I_1 和 I_2 ,然后将这两个向量的L1距离作为差异的量化标准,即

d_1(I_1,I_2) = \sum_p|I_1^p-I_2^p|

即将两个向量每对元素的差的绝对值求和

我们也可以选择L2距离作为量化的标准,即

d_2(I_1,I_2) = \sqrt{\sum_p(I_1^p-I_2^p)^2} 

L1与L2距离的使用情景其实并没有区分的很清楚,更多的是要实际去尝试哪个更好

缺点:

每次对输入图像进行预测时,如果图片的尺寸很大,像素很多(称为高维数据),则需要耗费大量的时间进行比较,这对使用带来了极大的不便,虽然这种缺点可以通过PCA降维的方法进行弥补(但PCA也只能够提取线性相关的主成分)。再者,仅通过像素来比较图像之间的差异是完全不够的,这更像是对图片按颜色分布进行分类,而不是按照图片的语义来进行分类

K-Nearest Neighbor分类器

对于上述的Nearest Neighbor分类器而言,只选1个最相近的图片可能会出现较大偏差,因此,我们可以选择k个最相近的图片,然后再在这k个图片中选出频数最高的标签作为输入图像的标签

优点:

选取更高的k值,可以使得分类的决策边界(在选取差异最小的图片的时候,相当于是寻找输入图片应当落入哪片合适的分类标签区间)更加平滑,对于异常点的处理能力更强,使得分类器针对测试数据的泛化(generalization)能力更好

但K-Nearest Neighbor分类器会存在一些空白区间,它不属于任何分类标签,这是由于这些区间内的点到多种标签的频数相同导致的

Hyperparameter:

对于上文提到的K-Nearest Neighbor分类器,其中出现了k这个参数,而这个参数是我们人为提前预设好的,不同的k值会影响分类器的正确率,以及对差异量化的距离函数的选择,是L1距离还是L2距离,都会影响分类器的性能。所有这些选择,被称为超参数(Hyperparameter)

超参数调优与验证集(validation set):

想要找到使分类器性能最好的超参数,通常的办法就是在一定范围内尝试多个不同的超参数的值,并验证它的好坏,那么关键问题就是如何去评价一个超参数的好坏

做法:

将数据集合分为三部分,分别是训练集(training set),验证集(validation set),和测试集(test set)

在训练时,我们使用training set进行训练,并使用validation set来对超参数进行调优,找到最合适的超参数,然后使用test set来检验分类器的最终性能,这样可以有效减少模型对训练集、验证集的过拟合现象

交叉验证:

当训练集数量较少时,(通常不用于深度学习),我们将训练集分为n份,第i轮训练时,我们按顺序地选取其第i份作为validation set,剩下的n-1份作为training set,来得到验证结果i,最后取i次验证结果的平均值作为模型的评价

优点是能够使用少量数据进行训练,缺点是会耗费大量的计算资源,因为需要训练的轮数变得很多

http://www.dtcms.com/a/287100.html

相关文章:

  • 工业企业与污染库匹配数据库(1998-2014年)
  • Letter Combination of a Phone Number
  • Redis原理之集群
  • windows内核研究(驱动开发之内核编程)
  • Qt控件实战详解:深入掌握输入输出与数据展示
  • Python MCP与Excel增强智能:构建下一代数据处理和自动化解决方案
  • SpringBoot 3.0 挥别 spring.factories,拥抱云原生新纪元
  • 人该怎样活着呢?55
  • 【RK3576】Android 14 驱动开发实战指南
  • uview-ui使用u-icon文字图标展示
  • 报错:升级gcc,centos
  • 数据库第五次作业
  • 云边端协同架构下的智能计算革命
  • 从代码学习深度强化学习 - SAC PyTorch版
  • 消息队列与信号量:System V 进程间通信的基础
  • 【机器学习深度学习】为什么要将模型转换为 GGUF 格式?
  • win10连接鼠标自动关闭触摸板/win10关闭触摸板(笔记本)
  • 路由器的Serial 串口理解
  • 移除debian升级后没用的垃圾
  • 爬虫逆向之JS混淆案例(全国招标公告公示搜索引擎 type__1017逆向)
  • AJAX概述
  • Unity 3D碰撞器
  • C语言—深入理解指针(详)
  • Eureka 和 Nacos
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(下)
  • Acrobat SDK 核心架构、应用
  • 2025年最新秋招java后端面试八股文+场景题
  • Linux操作系统之线程(三)
  • 动态规划算法的欢乐密码(三):简单多状态DP问题(上)
  • VBA 运用LISTBOX插件,选择多个选项,并将选中的选项回车录入当前选中的单元格