计算机视觉 -hxw

本贴最后更新于 283 天前,其中的信息可能已经沧海桑田

背景: 传感器的急剧增加——视觉数据的生成量急剧增加——计算机视觉的重要性

研究大脑: 大脑的视觉处理:边缘的简单结构——信息的路径移动——(逐步)复杂结构


一、计算机视觉的发展:

  1. 视觉图像——(简化)几何图形——识别与重建

  2. 原始草图(Raw Primal Sketch)——二维轮廓(2.5D Sketch)——三维模型(3D Model)

    1. 原始草图(Raw Primal Sketch)
    • 图像预处理:去除图像噪声,增强边缘
    • 边缘检测:通过计算图像梯度来检测图像中的边缘和亮度变化
    • 特征提取:如亮度、颜色、纹理和边缘方向
    1. 二维轮廓(2.5D Sketch)
    • 深度信息:通过信息,形状和相对位置,来估计物体在三维空间中的定位及其变化(物体的空间关系)(深度信息的草图(即“2.5D”))。
    1. 三维模型(3D Model)
    • 物体建模:根据提取特征和信息,重建物体的三维形状
    • 识别与分类:物体识别和分类。(可能涉及比较已有的模型,或者使用学习算法来处理新输入的图像)
    • 场景理解:对整个场景的理解,不仅仅局限于单个物体,其实包括对多个物体之间的关系、以及与人类经验的结合。​
    1. image
  3. 图像分割(把有意义的(想研究的)像素点划区域来简化

  4. 机器学习——基于特征的对象识别——支持向量机/Adaboost——可能有过拟合问题

    过拟合问题:这里值得仔细阐述下过拟合:过拟合发生在模型学习到了训练数据中的噪声和细节,而不全是我们期望提取的特征。这意味着模型在训练集上表现得很好,但在未见过的数据上却无法泛化。

    我这里可以举一个之前学机器学习分类和回归的简单例子:

    image

    其中 Normal 曲线是使用使用了带参数空间限制的最小二乘法进行求解的模型,Overfit 曲线是使用最小二乘法直接求解得到的

    角度一:我们可以用训练误差和交叉验证(k 折交叉验证)误差来直观体现这样的情况

    • 训练误差反映了模型对**训练数据的拟合程度,而交叉验证误差则反映了模型在新数据上的泛化能力**。

      image

      这个图是之前记录的,它说明了随着多项式的复杂,训练误差不断降低,但是交叉验证误差却从某个点开始上升,这就是过拟合

    角度二:我们可以从偏差和方差的角度

    image

    其中右下角的低偏差高方差就是过拟合

    如何消除过拟合?

    1. 增加样本量
    2. 各种不同的样本:丰富的数据集包含更多的变异性
    3. 数据训练进行之前进行数据清洗
    4. 对于神经网络:要么可以考虑让神经网络不要那么复杂(减少隐藏层数/节点数)、要么可以考虑增加 Drop 层(在每层中随机选取一些节点使其不工作),或是添加 Batch Normalization(对每一层的输入归一化)来减轻过拟合现象
  5. pascal 视觉对象挑战(基准数据集)——imageNet(巨大数据集) ——用于识别与分类以及各种应用

  6. 卷积神经网络——CPU 和 GPU 的发展——增加计算提升效果

  7. 未来的路:对图片的深刻理解(包括图片背后的“故事”含义)

二、图像分类

首先我们需要明确最本质的原理:

数据驱动:数据集——训练(接受图像和它对应的标签)——输出模型——预测

最近邻算法——(进阶)K 最近邻算法(KNN)

这个非常其实类似于聚类算法 K-means++

K 最近邻算法(KNN)

  • 一种监督学习算法,主要用于分类任务。它通过计算测试样本与训练样本之间的距离,找到最近的 K 个邻居,并根据这些邻居的标签进行预测。
  1. 原理:

    • 计算其与所有训练样本的距离(根据问题不同,选择的距离类型也不同)
    • 找到距离最近的 K 个训练样本,统计这些样本的标签,选择出现频率最高的标签作为预测结果
  2. 特点:

    • KNN 不需要显式的训练过程,所有的训练数据在预测时都被使用
##非常简单的最近邻算法 import numpy as np class NearestNeighbor: def __init__(self): pass def train(self, X, y): """存储训练数据和标签""" self.Xtr = X self.ytr = y //train O(1def predict(self, X): """对测试数据进行预测""" num_test = X.shape[0] Ypred = np.zeros(num_test, dtype=self.ytr.dtype) for i in range(num_test): # 计算测试样本与所有训练样本之间的L1距离 distances = np.sum(np.abs(self.Xtr - X[i, :]), axis=1) # 找到距离最小的训练样本的索引 min_index = np.argmin(distances) # 将对应的标签存储在预测结果中 Ypred[i] = self.ytr[min_index] //predict O(n) return Ypred //这其实与我们的期待背道而驰,我们希望训练的时候慢一些,加快预测速度

超参数:比如这里的 K 就是超参数:这里我们需要提到超参数的概念:

  • 超参数是我们在训练模型之前需要设置的参数,而不是通过训练数据学习得到的。

  • 这些参数的选择会直接影响算法的表现和效果

  • 实验和验证来确定最佳的超参数值

    下面我要谈到如何实验和验证:

    在此之前有两种不好的方式:

    一种是整个数据集为训练集,这样前面提到过可能会过拟合,而且不知道超参数的效果

    一种是分成训练集和测试集::选择超参数时只依赖于测试集

    所以应该把集合分成三个:训练集、验证集和测试集

    选择在验证集上表现最佳的超参数,并在测试集上进行最终评估。

这里需要提到的一点是:刚开始可能会有一个疑惑:对于第二种情况,我不能根据测试集的结果来反复改变训练集的参数反复调试吗?

可以明确的说:这是不能的,出于科学的原则,测试集只能在最终测试的时候触碰一次,才能公平得显示模型的优劣,如果可以触碰多次,那么就好像专为了这一个测试集专设的模型(不严谨 且容易出现过拟合的情况)

1 操作
XiaoweiH 在 2024-10-10 02:00:39 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 799 关注
  • 笔记

    好记性不如烂笔头。

    311 引用 • 794 回帖
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 367 回帖
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 313 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 2 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 39 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 2 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 470 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖 • 1 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    134 引用 • 798 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • 自由行
    1 关注
  • gRpc
    11 引用 • 9 回帖 • 104 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 445 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 65 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 762 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 252 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2040 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 9 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 496 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖