场景识别与词袋模型


目录

  • 1. 任务要求
  • 2. 数据集
  • 3. 实现算法
    • 3.1 目标实现
    • 3.2 Tiny images representation
    • 3.3 SIFT特征词袋表示
    • 3.4 相关算法
  • 4. 实验结果
    • 4.1 基础结果展示
    • 4.2 算法超参的影响
      • 4.2.1 Tiny images size
      • 4.2.2 Vocabulary size
    • 4.3 其他结果
  • 5. 源代码


1. 任务要求

  • 输入:给定测试集图片,预测在15个场景中的类别。
  • 任务
    • 实现Tiny images representation。
    • 实现最近邻分类器nearest neighbor classifier。
    • 实现SIFT特征词袋表示
  • 输出
    • 针对Tiny images representation 和SIFT 词袋表示,报告每个类别的准确度和平均准确度。
    • 对这两种方案,对正确和错误的识别结果挑出示例进行可视化。
    • 探索不同的参数设置对结果的影响,总结成表格。
    • 通过实验讨论词汇量的大小对识别分类结果的影响,比如哪个类别的识别准确率最高/最低,原因是什么。

2. 数据集

http://www.cad.zju.edu.cn/home/gfzhang/course/cv/Homework3.zip


3. 实现算法

3.1 目标实现

本报告的主题是图像识别,旨在实现输入多个具有label的不同场景的图片,通过Tiny images representation或者特征词袋表示结合最近邻分类器预测给定测试集图片的类别结果以及分类准确率。

本报告主要实现了以下目标:

  • 使用Tiny images representation和SIFT或HOG特征词袋对图像进行特征提取和描述。
  • 实现了最近邻分类器nearest neighbor classifier和支持向量机support vector machine,并结合提取到的图像特征进行分类。
  • 可视化展示15个场景分类准确率的混淆矩阵。
  • 通过调整图像特征提取的关键参数,比如小图像特征尺寸和特征词汇量大小等探索不同的参数设置对结果的影响。
  • 展示不同图像特征提取方法以及不同分类器的部分样本结果。

3.2 Tiny images representation

Tiny Images Representation(微图像表示)是一种基于图像特征的图像表示方法。它是由Alex Krizhevsky于2009年提出的,旨在通过利用大规模图像数据集的统计信息来表示图像。其主要思想是将每个图像转换为一个固定长度的向量,以便在机器学习任务中使用。这里的转换过程包括以下几个步骤:

  • 预处理:首先,将图像调整为统一的大小(默认为16×16px)。
  • 特征提取:对于每个调整后的图像,将其转换为一个固定长度的特征向量。我们使用的方法是将图像的像素值展平为一维数组,并对像素值进行归一化处理,以确保特征向量具有相似的尺度。

通过这样的转换过程,每个图像都被表示为一个固定长度的特征向量,其中每个维度对应于图像中的一个像素位置。Tiny Images Representation 的优点是简单且易于计算,同时可以捕捉到大规模图像数据集的统计特征。

3.3 SIFT特征词袋表示

SIFT(Scale-Invariant Feature Transform,尺度不变特征变换)是一种用于图像特征提取的算法。SIFT算法最初由David Lowe于1999年提出,它对图像中的局部特征进行检测和描述,具有尺度不变性和旋转不变性等优点。SIFT特征词袋表示是基于SIFT特征的一种向量表示方法,常用于图像分类和目标识别任务。SIFT特征词袋表示的主要步骤如下:

  • 特征提取:使用SIFT算法检测图像中的关键点(keypoints)并计算每个关键点的描述子(descriptor)。SIFT算法通过在不同尺度空间上的高斯差分图像中寻找局部极值点来检测关键点,然后利用关键点周围的图像梯度信息生成描述子。
  • 特征量化:将SIFT描述子量化为固定长度的向量。我们使用聚类算法(Mini Batch K-means)对描述子进行聚类,得到一组聚类中心(视觉词汇)。每个描述子被分配到最近的聚类中心,形成一个词袋(bag-of-words)表示。
  • 生成特征向量:对于测试集的图像,同样使用SIFT算法检测图像中的关键点并计算其描述子。对于每个图像,统计其词袋中每个聚类中心的出现频率,形成一个特征向量。该特征向量被视为图像的特征表示,反映了图像中不同视觉词汇的分布情况,作为图像特征输入分类器可以对测试数据进行分类。

3.4 相关算法

报告中使用的其他相关算法如HOG、NNS和SVM等这里不做过多详细介绍。


4. 实验结果

4.1 基础结果展示

Figure 1展示了三种路径得到的分类精度混淆矩阵和部分样本结果。图a为不使用任何图像特征和随机分类得到的混淆矩阵,随机性能为0.071,混淆矩阵横轴为预测类别,纵轴为真实类别。b图截取了15个场景中3个类别的部分样本,左侧两列分别为类别和当前类别的分类精度,Sample training images(蓝色)为训练集中的正样本,Sample true positives(绿色)为测试集中分类正确的正样本,False positives withtrue label(红色)为测试集中当前分类器分类错误但其真实类别对应的分类器分类正确的负样本(即当前分类器的负样本和目标类别分类器的正样本的交集),False negatives with wrong predicted label(黄色)为测试集中当前分类器分类错误且其真实类别对应的分类器分类错误的负样本(即当前分类器的负样本和目标类别分类器的负样本的交集)。c-d图对应Tiny images representation和最近邻分类器的分类结果( A c c = 0.231 Acc = 0.231 Acc=0.231),其中小图像特征大小为默认的16×16px。e-f图对应SIFT特征词袋表示和最近邻分类器的分类结果( A c c = 0.345 Acc = 0.345 Acc=0.345),其中SIFT特征词袋表示的词汇量大小为50。

在这里插入图片描述

Figure 1: 分类精度混淆矩阵和部分样本结果

4.2 算法超参的影响

4.2.1 Tiny images size

Tabel 1展示了不同小图像尺寸下最终15个类别的平均分类准确率。小图像尺寸对分类精度可能存在的影响:

  • 信息损失:缩小图像尺寸会导致图像中的细节和纹理信息的丢失。较小的图像可能无法保留原始图像中的重要特征,从而可能降低分类的准确性。比如最小的4 × 4尺寸的分类精度最低。
  • 特征冗余:当图像被缩小为较大尺寸时,可能会出现多个原始像素值映射到相同的小图像像素值的情况。这可能导致特征的冗余性增加,使得分类器难以区分不同类别之间的细微差别。比如当尺寸超过16 × 16时,分类精度开始下降,且随着尺寸越大精度越低。
  • 计算效率提升:小图像尺寸可以降低特征的维度,减少模型训练和推理的计算复杂度,加快处理速度。所以需要保证分类精度的情况下,图像越小处理速度越快,在本实验中小图像尺寸为16 × 16最合适。

在这里插入图片描述

4.2.2 Vocabulary size

Figure 2为不同Vocabulary size的分类性能混淆矩阵,Tabel 2 为不同词带提取算法以及不同Vocabulary size的平均分类性能。Vocabulary size对分类精度可以产生一定的影响,具体效果取决于任务、数据集和算法的特点。词汇表大小对整体分类精度可能存在的影响:

  • 信息丰富度:较大的词汇表大小可以提供更多的视觉词汇来捕捉图像的细节和纹理信息。这可以增加特征的丰富性,使分类器能够更好地区分不同的类别。因此,较大的词汇表大小通常有助于提高分类精度。比如Tabel 2中SIFT和HOG算法均在较大的词汇量50和200时性能比小词汇量更高。
  • 过拟合:在某些情况下,较大的词汇表大小可能导致过拟合问题。如果词汇表过大,每个图像的特征向量维度也会增加,这可能导致训练样本不足的情况下出现过度拟合,从而降低分类器的泛化能力。因此,在有限的训练数据集上,过大的词汇表大小可能会导致分类精度下降。比如Tabel 2中SIFT和HOG算法在词汇量大于50和200时出现过拟合,分类精度下降。
  • 复杂度:较大的词汇表大小会增加特征向量的维度,从而增加分类器的计算复杂度。在训练和推理阶段,需要处理更多的特征维度,可能需要更多的计算资源和时间。因此,较大的词汇表大小可能会增加系统的开销。在实验中记录下的提取特征运行时间随词汇量增大显著提高。

同时,词汇表大小对某些类别的分类精度影响也十分显著。从Figure 2可以看到,类别Mnt(“Mountain”)和OC(OpenCountry)随词汇量增大时分类精度逐渐提高,特别地在词汇量为400达到最高的0.800和0.600,这可能是由于较大的词汇表大小可以提供更多的视觉词汇用于描述细粒度类别的特征,从而提高“Mountain”这类特征密集的开阔场景分类的准确性。而特征较稀疏的类别如Liv(“LivingRoom”)、Bld(“TallBuilding”)、St(“Street”)等场景类别的分类精度在较小的词汇量如50左右的时候达到最高0.330、0.420和0.430,而这些场景在400词汇量时分类精度为0.150、0.260和0.170。

在这里插入图片描述

在这里插入图片描述

Figure 2: 不同Vocabulary size的分类性能混淆矩阵. a, 15. b, 50. c, 100. d, 200. e, 400. f, 800.

4.3 其他结果

基于SVM分类器的部分结果可视化见Fig. S1。HOG_SVM的所有15类样本结果见Fig. S2。

在这里插入图片描述

Fig. S1. SVM的分类精度混淆矩阵和部分样本结果. a-b, Tiny Images Representation(16 × 16). c-d, SIFT(50). e-f, HOG(200).

在这里插入图片描述

Fig. S2. HOG_SVM的15类样本结果.

5. 源代码

持续更新…


创作不易,麻烦点点赞和关注咯!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/296468.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis黑马点评项目启动指南(含mac m1pro | windows11 wsl2 ubuntu环境配置 持续更新中~)

redis黑马点评项目学习笔记 mac m1pro windows 含项目配置教学 mac M1pro环境配置windows11 wsl2 ubuntu 环境配置一.短信登录1. 1发送验证码1.2短信登录注册1.3登录校验拦截器补缺Cookie Session Token1.4基于redistoken认证实现短信登陆1.5完善token认证的刷新机制 2.商户查询…

Redis 给集合元素单独设置过期

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、场景 1.1 消费队列 1.2 Redis实现 二、常见的方案 2.1 为单独的 field 设置过期 2.2 设置整体过期时间 2.3 zset 结合 sc…

项目实战:数字孪生可视化大屏幕,实现生产过程实时监控

项目介绍 智慧工厂数据可视化系统,融合工业大数据、物联网、人工智能等各类信息技术,整合厂区现有信息系统的数据资源,实现数字孪生工厂、设备运维监测、智能管网监测、综合安防监测、便捷通行监测、能效管理监测、生产管理监测、仓储物流监…

【数据分析实战】冰雪大世界携程景区评价信息情感分析采集词云

文章目录 引言数据采集数据集展示数据预处理 数据分析评价总体情况分析本人浅薄分析 各游客人群占比分析本人浅薄分析 各评分雷达图本人浅薄分析 差评词云-可视化本人浅薄分析 好评词云-可视化本人浅薄分析 综合分析写在最后 今年冬天,哈尔滨冰雪旅游"杀疯了&q…

技术学习|CDA level I 业务分析方法

业务分析方法有三个主要构成部分:业务指标分析、业务模型分析及业务分析方法。 业务指标分析是发现业务问题的核心方法:用于通用指标和场景指标的计算及分析方法,以及指标体系的设计与应用方法。业务模型是从一系列业务行为中抽象出来的信息…

请你列出逻辑电路中的24种表达式

随着时代发展,数字电路的使用频率越来越高,完全不低于模拟电路,因此从事数字电路的工程师越来越多,如果你想成为一名优秀的数字工程师,一定要学会下面的逻辑电路表达式! 1、基本逻辑运算与运算 (AND): A AN…

04 帧 Frame

文章目录 04 帧 Frame4.1 相机相关信息4.2 特征点提取4.2.1 特征点提取 ExtractORB()4.3 ORB-SLAM2对双目/RGBD特征点的预处理4.3.1 双目视差公式4.3.2 双目图像特征点匹配 ComputeStereoMatches()4.3.3 根据深度信息构造虚拟右目图像:ComputeStereoFromRGBD() 4.4 …

Python中的h5py包使用

h5py是一个非常强大的工具,可以用于存储和处理大量科学数据。它可以帮助我们提高数据处理的效率和可靠性。 目录 一、h5py1.1 特点1.2 主要功能1.3 常用场景 二、安装h5py三、示例代码3.1 运行结果 四、总结 一、h5py h5py是Python中的一个库,提供了对H…

JS函数实现数字转中文大写

JS函数实现数字转中文大写 1. 数字转字符,分割,去除空字符2. 遍历分割字符,替换为中文3. 增加四位数单位4. 处理零5. 拼接四位数据和单位 项目中,JS将万亿以下正整数转为中文大写 1. 数字转字符,分割,去除空字符 function toChineseNumber(num){const strs num.toString().re…

计算机组成原理 总线

总线 总线定义 总线 总线是一组能为多个部件分时共享的公共信息传送线路 总线的好处 早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备 为了更好地解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接 …

Mac环境下Parallels Desktop 19的安装和使用

为了后续构建漏洞靶场和渗透测试环境,我们需要提前准备好几套与宿主机隔离的工作环境(Windows、Linux等),在Mac上最常用的就是Paralles Desktop(PD)工具了,当前最新版本为19。接下来介绍如何安装…

QT工具栏开始,退出

QT工具栏开始,退出 //初始化场景QMenuBar *bar menuBar();setMenuBar(bar);QMenu *startbar bar->addMenu("开始");QAction * quitAction startbar->addAction("退出");connect(quitAction , &QAction::triggered,[](){this->c…

Chromedriver 下载和安装指南

1. 确定Chrome浏览器版本 首先,在谷歌浏览器中找到当前版本信息。 打开“设置”,点击“关于谷歌”即可看到版本号。确保后续下载的Chromedriver版本与Chrome浏览器版本一致。或者直接跳转网页地址:chrome://settings/help 2. 下载Chromedri…

js逆向第12例:猿人学第5题js混淆-乱码增强

文章目录 那么`RM4hZBv0dDon443M=`是怎么来的?密钥怎么找加密数组怎么破解_0x4e96b4[_$pr]m=,f=时间戳是哪个?打开控制台查看数据接口 https://match.yuanrenxue.cn/api/match/5?page=2&m=1704439385499&f=1704439384000 利用postman测试接口请求,判断参数是否强…

机器学习 - 决策树

场景 之前有说过k近邻算法,k近邻算法是根据寻找最相似特征的邻居来解决分类问题。k近邻算法存在的问题是:不支持自我纠错,无法呈现数据格式,且吃性能。k近邻算法的决策过程并不可视化。对缺失数据的样本处理很不友好,…

C++ OpenGL 3D GameTutorial 1:Making the window with win32 API学习笔记

视频地址https://www.youtube.com/watch?vjHcz22MDPeE&listPLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzg 一、入口函数 首先看入口函数main代码&#xff1a; #include<OGL3D/Game/OGame.h>int main() {OGame game;game.Run();return 0; } 这里交代个关于C语法的问题&#x…

MidJourney笔记(10)-faq-fast-help-imagine-info-public-stealth

/faq 在官方 Midjourney Discord 服务器中使用可快速生成流行提示工艺频道常见问题解答的链接。 不过这个命令,我也是没有找到入口,之前还能在MidJourney的频道里使用,然后最近发现没有权限,有点奇怪。不知道系统又做了什么升级。 /fast 切换到快速模式。

七、HTML 文本格式化

一、HTML 文本格式化 加粗文本斜体文本电脑自动输出 这是 下标 和 上标 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTML文本格式化</title> </head><body><b>加粗文本</b><br>…

HarmonyOS应用开发学习笔记 包名、icon图标,应用名修改 UIAbility组件介绍、UIAbility启动模式、UIAbility组件基本用法

目前HarmonyOS应用主推的是Stage模型开发 一、Stage模型基本概念 项目描述UIAbility组件UIAbility组件是一种包含UI界面的应用组件&#xff0c;主要用于和用户交互。例如&#xff0c;图库类应用可以在UIAbility组件中展示图片瀑布流&#xff0c;在用户选择某个图片后&#xf…

Mysqld的关键优化参数

skip-name-resolve 现象 mysql连接很慢&#xff0c;登陆到服务器上查看服务器日志都是正常的&#xff0c;无可疑记录&#xff0c;登陆到mysql服务器上&#xff0c;查看下进程&#xff0c;发现有很多这样的连接&#xff1a; 218 | unauthenticated user | 192.168.10.6:44500 |…
最新文章