CS231n-图像分类笔记

news/2025/2/2 1:29:08 标签: 分类, 笔记, 数据挖掘, 计算机视觉
  • 博主本身有机器学习基础,看视频觉得效率很低,而且听得云里雾里的,又由于是老师要求看CS231n,故看的中文译版的笔记,自己看完之后再精简记录一下学习到的东西。
  • 这是中文笔记地址https://github.com/whyscience/CS231n-Note-Translation_CN

第一节讲的是关于图像分类的kNN算法

基本思想:

计算机是看不到图片的,只能看到图片是由一个个像素值组成,要判断两张图片是否相似,如下图所示,计算它们的L1距离,即对应的各个像素值(即把图片转化为向量了)相减取绝对值,然后再进行求和,L1越小,两张图片越相似
在这里插入图片描述
在这里插入图片描述
还有一种方法是计算L2距离,与L1唯一的区别是,图片的像素值相减后平方,然后求和开方在这里插入图片描述

  • L1与L2比较:在面对两个向量之间的差异时,L2比L1更加不能容忍这些差异。(毕竟他开方了)

还讲了代码,略过

kNN

笔记没看懂,又去上网搜了一下
https://zhuanlan.zhihu.com/p/25994179这篇非常通俗易懂

由基本思想可知,我们是看测试集的图片离训练集的图片哪个更近,越近的图片的标签就是测试集图片的标签
在这里插入图片描述

ps:引用的上面那篇链接里面的

当k=1时,就选取离测试集最近的一个点,那万一离他最近的一个点是不小心引入的噪声怎么办
在这里插入图片描述
故k太小不行
k太大的话近似于无穷,相当于把测试集所以图片都包括进来了,也不看距离近不近了,直接退化成哪个标签的图片数量多,测试集的图片标签就变成哪个了

如何选取k?

由上面分析可知,k太大太小都不行
把测试集的10%~20%作为验证集(类似于最后的那个测试集)来进行调优选k(超参数)
若测试集很小,那就用交叉验证的方式,即把测试集分为5份左右,循环取一份作为验证集,观察k=多少的时候结果最好,然后取平均
一定不能把测试集当做训练集!!

kNN算法的优劣

  • 优点:简单易实现
  • 缺点:测试要花费大量时间计算,因为每个测试图像需要和所有存储的训练图像进行比较 ,在像素低维的情况下表现良好,但是在实际的图像分类工作中,因为图像都是高维度数据(他们通常包含很多像素),而高维度向量之间的距离通常是反直觉的
    在这里插入图片描述
    如图所示是用tSNE做的可视化技术,越相邻表示L2距离越小,图片越相似
    大致看这张图,可知,图片的排列是被背景主导而不是图片语义内容本身主导 比如,狗的图片可能和青蛙的图片非常接近,这是因为两张图片都是白色背景。这和我们期望识别图片中的内容(语义)背道而驰,需继续向前探索

http://www.niftyadmin.cn/n/5839688.html

相关文章

TensorFlow 简单的二分类神经网络的训练和应用流程

展示了一个简单的二分类神经网络的训练和应用流程。主要步骤包括: 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与部署 加载和应用已训练的模型 1. 数据准备与预处理 在本例中,数据准备是通过两个 Numpy 数…

离散化C++

离散化(Discretization)是一种将连续数据映射到离散值的技术,常用于将大数据范围压缩到较小范围,例如将数值映射到索引。离散化在算法竞赛中常用于处理数值范围较大但数据量较小的问题(如区间问题、统计问题等&#xf…

JMeter中常见的四种参数化实现方式是什么?_file test_params

2 参数化实现 2.1 CSV Data Set Config 在JMeter中提起参数化,我们默认就想到CSV Data Set Config(以下简称CSV),CSV能够读取文件中的数据并生成变量,被JMeter脚本引用,从而实现参数化。下面我们来详细探究…

S4 HANA税码科目确定(OB40)

本文主要介绍在S4 HANA OP中税码科目确定(OB40)相关设置。具体请参照如下内容: 税码科目确定(OB40) 在以上界面维护“Transaction Key”的记账码。 在以上界面进一步维护“Transaction Key”确定科目的规则。 Chart of Account:用于明确该规则适用于什么科目表。 …

Python 列表(使用列表时避免索引错误)

你将学习列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。 列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。 使用列表时避免索引错误 …

mysql中in和exists的区别?

大家好,我是锋哥。今天分享关于【mysql中in和exists的区别?】面试题。希望对大家有帮助; mysql中in和exists的区别? 在 MySQL 中,IN 和 EXISTS 都是用于子查询的操作符,但它们在执行原理和适用场景上有所不…

Janus-Pro 论文解读:DeepSeek 如何重塑多模态技术格局

Janus-Pro:多模态领域的璀璨新星——技术解读与深度剖析 一、引言 在人工智能的浩瀚星空中,多模态理解与生成模型犹如耀眼的星座,不断推动着技术边界的拓展。Janus-Pro作为这一领域的新兴力量,以其卓越的性能和创新的架构&#x…

加一(66)

66. 加一 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:vector<int> plusOne(vector<int>& digits) {bool plus_one true;for (int i digits.size() - 1; i > 0; --i) {if (plus_one) {int tmp digits[i] 1;if …