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

计算机视觉CS231n学习(1)

面向视觉识别的卷积神经网络 CS231n Introduction
  1. 计算机视觉的历史 the history of computer vision

    重要节点:

    1. 1959 Hubel & Wiesel

      利用和人比较相像的猫的视觉神经做实验:简单细胞反应灯的位置;复杂细胞反应灯的位置和移动;超常细胞反应最后的点的移动

    2. 1963 Block world

      特征点的选择

    3. 1970s Stage of Visual Representation 视觉表征阶段

      input image -> edge image(primal sketch) -> 2-D shetch -> 3-D model

    4. 1973 Pictorial Structure

    5. 1979 Generalized Cylinder

    6. 1987 maybe 重要轮廓?

    7. 1997 Normalized Cut 图像像素分割

    8. 2001 Face Detection 面部检测

    9. 1999 SIFT & Object Recognition 尺度不变特征变换

    10. 2006 Spatial Pyramid Matching 金字塔匹配

    11. 2005 Histogram of Gradients HoG 梯度直方图

    12. 2009 Deformable Part Model 可变形的部件模型

    13. 2006-2012 PASCAL Visual Object Challenge

图像分类 image classification
  1. visual recognition:视觉识别
  2. 目标检测object detection
  3. 图像摘要image captioning:根据图片内容生成描述信息
  4. 但是视觉上的智能要远远超过简单的目标检测,比如可以识别图像表达的含义,图像中的物体相互之间的联系,推断图像中正在发生什么 等等等
图像分类流程 Image Classification pipeline

在机器视觉当中,图像分类是一个核心的任务

  1. 图像分类会遇到很多问题

    比如语义鸿沟:用像素点去表示图像

    视角变化、光线变化、目标变形、目标被遮挡、背景和目标相似性大、同类目标之间的差异性对图像造成的影响。。。

  2. 解决方法 - 数据驱动

    收集大量的各种各样的目标图像,为了让模型学习到更多样的特征,更具有泛化性和鲁棒性

  3. 第一种分类器:近邻算法

    我的理解就是两张图片的相似性吧 下面是相似性的计算方法

    图像比较的距离度量标准:

    1. L1 distance

      在这里插入图片描述

      但是这种算法存在训练时时间复杂度为1,推理时时间复杂度为n的情况,我们想要的是训练耗时但推理很快的模型

    2. L2 distance

      在这里插入图片描述

    K最近邻算法:K-Nearest Neighbors:

    这种算法不是从最近邻复制标签, 而是从K个最近点中采取多数表决majority vote

    K最近邻算法可以采取上述图像比较的距离度量标准的任意一种

    两种问题:

    1. k的选择

      当需要对一个新样本进行预测的时候,模型会在训练集中寻找与该样本最相似的k个样本,然后以这k个样本中哪个种类数最多来判断这个新样本的中来,so K 决定了 “参考多少个邻居” 来做预测,是 KNN 的核心超参数。

    2. L1 / L2 distance的选择

      L1/L2 距离 用于量化样本间的相似度,决定了 “谁是最近邻”,直接影响邻居的选择结果。

    解决方法 - 训练集 验证集 测试集

    设定不同的超参数k,在分成几份的训练集上训练,用验证集验证,在测试集上观察对完全崭新样本的预测

    (训练集:模型在训练集当中进行反向传播更新参数;验证集:验证集仅用来作为判断模型预测的结果和真实结果的误差,不进行参数更新;测试集:就是模拟真实世界的情况,观察预测的结果)

    但是K最近邻算法几乎不用在图像上:推理速度慢、基于像素的距离度量缺乏信息量(就是说可能肉眼几个差异大的图片输进去可能和原图的像比较的距离度量标准相同)、会发生维度灾难(高维的运算量大)

    线性分类 Linear Classification

    参数化方法 parametric approach 用线性分类器,就是可以通过线性的曲线将所有类别都分隔开来

    但是肯定不是所有的类别都能用线性的曲线分隔开来的

    问题:

    1. 怎么确定参数是不是合适的?

    解决方法:

    1. 损失函数 (计算真实结果和预测结果的差值 我们的目标就是最小化它)
    2. 优化器(梯度下降方法 等)
    3. 卷积网络 (可以处理非线性的问题)
http://www.xdnf.cn/news/16656.html

相关文章:

  • 网络编程学习
  • UE5保姆级新手教程第六章(角色互动)
  • python的异步、并发开发
  • 关于项目的一些完善功能
  • C语言:函数指针、二级指针、常量指针常量、野指针
  • 基于deepseek的事件穿透分析-风险传导图谱
  • Linux系统编程Day1-- 免费云服务器获取以及登录操作
  • 分层解耦(Controller,Service,Dao)
  • [Agent开发平台] API网关 | 业务领域 | DTO格式 | 分页令牌
  • 当人生低谷无人帮助时,如何独自奏响人生乐章
  • Abaqus2022下载与保姆级安装教程!!
  • 人工智能通信协议三种协议:MCP协议、A2A协议、AG-UI协议是什么
  • spark入门-helloword
  • CMS框架GetShell
  • 自动驾驶车辆的敏捷安全档案
  • 使用HaiSnap做了一款取件码App(一键生成)
  • 力扣热题100---------35.搜索插入为位置
  • 查询账户余额
  • 9.项目起步(3)
  • Scala实现常用排序算法
  • 第十二天:C++ 标准库函数分类总结
  • 【AI】开源项目整理
  • [Python] -进阶理解10- 用 Python 实现简易爬虫框架
  • 【同济大学】双速率自动驾驶架构LeAD:端到端+LLM,CARLA实测93%路线完成率,性能SOTA!
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(四)
  • 机器学习之线性回归的入门学习
  • 语音识别dolphin 学习笔记
  • Linux 日志管理与时钟同步
  • 51单片机入门:数码管原理介绍及C代码实现
  • python快速复习篇(一)