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

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.xdnf.cn/news/15966.html

相关文章:

  • Map集合
  • C++入门--lesson4
  • 嵌入式学习-PyTorch(9)-day25
  • HTTPHTTPSTLSDNSRSA
  • Python技术题2
  • 工程图矢量化 笔记 | potrace ezdxf svgpathtools | png转svg保存dxf用matplotlib画出来
  • 如何构建未来的人-AI-环境智能教育生态系统
  • 线性回归问题
  • xss的利用
  • 《YOLOv13魔术师专栏》全景指南:从理论到工业级实战
  • ICT测试原理之--什么是假短
  • JavaSE-接口
  • Android14 SystemUI 启动流程(2)
  • 笔试大题20分值(用两个栈实现队列)
  • Unity物理响应函数与触发器
  • C++类和对象(一)基础内容讲解
  • 2025暑假训练树状数组
  • 自动化立体仓库堆垛机控制系统上报堆垛机状态 FC5
  • MySQL 写入性能优化全攻略(附 GitHub 面试题项目链接)
  • 最终分配算法【论文材料】
  • laravel RedisException: Connection refused优雅草PMS项目管理系统报错解决-以及Redis 详细指南-优雅草卓伊凡
  • WSL的功能及用途
  • JavaScript空值安全深度指南
  • 单调队列深度解析(下)
  • 前端开发技巧:浏览器模拟弱网络环境
  • 【Linux】重生之从零开始学习运维之Nginx
  • 高可用架构设计与实践综述
  • XSS总结
  • 【RK3576】【Android14】固件烧录
  • 零基础学后端-PHP语言(第一期-PHP环境配置)