计算机视觉基础课程知识点总结
图像滤波
相关: 核与图像同向应用,不翻转。
卷积: 核在应用前翻转,广泛用于信号处理和深度学习(现在常说的二维卷积就是相关)。
内积: 向量化的点积操作,是相关和卷积的一部分。
模板匹配:通过在图像中查找与模板匹配的区域,实现目标检测和识别。如人脸检测和工业检。
图像增强:通过滤波器处理图像,提高图像质量或突出特征。如边缘检测、去噪和锐化。
特征提取:通过滤波器提取图像中的重要信息,用于后续分析和识别。如角点检测、纹理分析和CNN中的特征提取。

滤波器:
Gabor:提取纹理和方向性边缘特征
Sobel:检测水平和垂直边缘
高斯:平滑图像,减少噪声
Laplacian of Gaussian:平滑图像并检测边缘。
边缘检测
如何使用高斯偏导数在图像处理中进行边缘检测:首先对图像进行高斯滤波,水平和垂直方向平滑处理,然后计算梯度的幅值(边缘强度)和梯度方向(边缘方向)。接下来,通过非极大值抑制细化边缘,最后通过阈值处理和边缘连接来获取图像中的精细边缘。这一过程确保了边缘检测的准确性和连续性。
高斯偏导核结合了高斯平滑和微分运算的优点,在边缘检测、特征提取和图像去噪等方面有广泛应用。其核心思想是通过平滑图像减少噪声影响,然后计算图像梯度,获取图像的边缘和特征信息
在图像处理中,高斯滤波器的尺寸通常设置为 size=2×(3σ)+1,这样滤波器可以涵盖大部分高斯函数的范围,从而有效地平滑图像。差分图像c显示了两幅平滑图像之间的差异。通过比较可以发现,滤波器尺寸越大,差分越明显

Canny算子通过高斯滤波去噪、梯度计算找到潜在边缘、非极大值抑制细化边缘、双阈值检测分类边缘点、边缘连接形成连续边缘。这一系列步骤确保了边缘检测的准确性和细致性,使得Canny算子能够有效地获取“细边缘”。
拉普拉斯定理:用途清晰度检测
特征尺度
自动尺度选择的基本思想是通过构造对尺度变化敏感的函数f(多尺度都适用),计算其在多尺度上的响应,并选择响应值的局部极值点所对应的尺度作为图像特征的最佳尺度。这种方法使得在不同尺度上都能有效地检测到图像中的显著特征,从而实现多尺度特征提取。
通过计算尺度归一化拉普拉斯算子的响应,并找到其在不同尺度上的最大值,可以确定图像中特征的特征尺度。这使得特征检测在多尺度图像处理中更加准确和鲁棒。

SIFI分割
SIFT双塔结构,SIFT算法可以在不同尺度上检测图像中的关键点:高斯金字塔(这是通过对原始图像进行多次高斯模糊来构建的图像金字塔)是通过降采样得到的,所以可以大大减少后续处理中的计算量。在计算DoG金字塔时,由于每一层DoG金字塔只需要计算相邻两层高斯模糊图像的差分,而不需要重新计算高斯模糊,因此也节省了计算资源。这种金字塔结构有效地简化了SIFT算法中的尺度空间特征检测和描述子生成过程,提高了算法的效率和性能。
SIFT为确保关键点的方向不变性,SIFT通过计算图像梯度方向直方图来为每个关键点分配一个主要方向:计算图像梯度:在关键点的邻域内计算每个像素的梯度幅值和方向;创建方向直方图:在关键点邻域内(通常为16x16的邻域),对梯度方向进行统计,创建一个包含n个箱(每个箱覆盖360/n度)的方向直方图;权重投票:根据每个像素的梯度幅值对直方图进行加权投票。通常使用一个高斯权重函数,以关键点为中心,对邻域内的每个像素进行加权投票;确定主要方向:选取方向直方图中的最高峰作为关键点的主要方向。如果存在多个峰值接近主峰值的80%,也可以为该关键点分配多个方向。

SIFT描述子是基于关键点邻域的梯度信息生成的:构建描述子邻域:在关键点的邻域内划分子区域。计算梯度直方图:在每个子区域内,计算n个方向的梯度直方图。每个直方图包含n个箱。梯度方向和幅值计算:对每个子区域的每个像素点计算梯度方向和幅值,并根据方向和幅值对直方图进行加权投票。高斯加权:为每个像素点使用一个以关键点为中心的高斯权重进行加权。归一化:将向量归一化,以减小光照和对比度的影响。截断:为了增强鲁棒性,将描述子中大于某一阈值的元素截断。再次归一化:截断后再一次进行归一化,生成最终描述子。描述子可以在尺度、旋转和光照变化下具有很好的鲁棒性,有效地描述图像中的局部特征。
视觉词典
构造视觉词典:分块,根据提取特征分割;特征聚类,选择合适的聚类算法,聚类中心将成为视觉词典的词汇;每个图都可以看作是个视觉词汇,每个像素可以看作是文本
使用聚类来构造视觉词典的核心目的是通过将大量的局部特征描述符分组,生成有限数量的视觉单词,从而简化特征表示,减少数据维度,提升计算效率,并提高模型的鲁棒性和泛化能力。这一过程使得视觉词典能够有效地用于图像分类、物体识别和图像检索等任务。
神经网络
Naïve Bayesian是一种基于贝叶斯定理的概率分类算法,它假设特征之间相互独立。在实际应用中,我们通常使用朴素贝叶斯分类器进行分类,其决策规则是选择后验概率最大的。Linear classifier线性分类器是一类假设决策边界为线性函数的分类算法。常见的线性分类器包括感知机Perceptron、线性判别分析LDA和支持向量机SVM。线性分类器的目标是找到最佳的w和b,使得不同类别的样本尽可能被正确分开
K-Nearest Neighbors, KNN,K临近算法是一种基于实例的非参数分类算法。KNN通过计算新样本与训练集中所有样本的距离,选择距离最近的K个样本,然后根据这些样本的类别进行投票决定新样本的类。Naïve Bayesian分类器和线性分类器都基于决策规则来分类。Naïve Bayesian通过计算后验概率进行决策,而线性分类器通过线性函数的符号进行决策。KNN则是基于实例的决策规则,通过投票来决定新样本的类别。
交叉熵损失主要用于分类任务,特别是多类分类任务(Softmax激活函数的多类分类问题)常用于神经网络的训练,如CNN、RNN。
铰链损失主要用于二分类任务,SVM通常用于最大化分类间隔的分类问题。交叉熵损失优化目标是最小化预测分布与真实分布之间的差异,最大化正确类别的概率损失值越小,预测的概率分布越接近真实分布。铰链损失优化目标是最大化分类间隔,使得正类和负类之间的边界尽可能远。损失值越小,分类器越能够正确分类并且有较大的分类间隔。
链式法则传递倒数,方块为变量,圆点是运算符,计算图梯度反向传播

参数更新: 计算损失Loss,计算梯度,更新方向。标准梯度下降(整个训练集更新一次),随机梯度下降(每个样本更新一次),小批量梯度下降。
Small batch: 更好地利用现代硬件的并行计算能力,减少内存需求;更快的参数更新和增强的噪声泛化能力;避免重复计算,提高计算效率;动态调整学习率,更灵活的学习率调度策略;更频繁的模型性能评估和更快的超参数调优;更平滑的损失曲线,避免大幅度波动;通过调整采样策略,改善不均衡数据的训练效果,灵活处理不均匀数据。
神经网络隐藏层的主要作用是通过非线性变换增强模型的表示能力,使其能够捕捉和表示复杂的非线性关系。线性学习模型只能处理线性关系,而神经网络通过引入隐藏层和非线性激活函数,能够处理复杂的模式识别和预测任务。通过多层隐藏层的设计,神经网络可以逐层提取特征,学习复杂的决策边界,从而实现对复杂数据的高效建模和预测。
Sigmoid激活函数容易引发梯度消失问题,主要是由于其梯度在输入远离0时非常小。这个问题在深层神经网络中尤为严重,导致训练过程中梯度逐层衰减,使得模型难以学习和优化。通过使用替代激活函数、合适的权重初始化方法和归一化技术,可以有效缓解梯度消失问题。
卷积网络
感受野: 神经元的感受野在卷积计算中扮演了类似于生物视觉系统中感知局部图像的角色。通过分层次地扩大感受野,CNN能够逐步整合局部特征,形成对全局图像的理解。神经计算中,感受野的局部性允许并行处理图像的不同区域,大大提高了计算效率。权值共享: 在神经计算中,权值共享机制类似于生物视觉系统中神经元的重复性和一致性。在CNN中,卷积核在整个图像上共享权重,模拟了生物神经元在不同位置提取相同类型特征的过程。权值共享减少了模型的参数数量,降低了计算复杂度,同时保持了特征提取的一致性和可靠性。
小尺寸滤波的好处: 增强特征提取能力:更细致地捕捉局部特征;减少参数量:降低模型复杂度和过拟合风险;计算效率:减少计算量,加速训练和推理;更深的网络结构:构建更深的网络,提取更丰富的特征;增加非线性:引入更多非线性,提高模型学习复杂映射的能力。
1x1卷积: 特征通道的组合:跨通道信息融合和特征映射的重新加权;维度变换:实现特征图的降维和升维;计算效率的提升:在深度可分离卷积中大幅减少参数量和计算量;改善网络结构和性能:提供灵活的维度变换和特征组合方式,减少参数量,提高训练效率和模型推广能力。
卷积计算:Input volume: 32x32x3 :10 5x5 filters with stride 1, pad 2 Output: (32+2*2-5)/1+1 = 32 spatially, so 32x32x10 Params: 5*5*3 + 1 = 76 parameters => 76*10 = 760
数据增广在CNN中的意义: 增加训练数据的多样性:缓解过拟合,丰富特征空间;提高模型的鲁棒性:应对输入变换,减少对噪声的敏感性;提升模型的泛化能力:模拟现实世界的多样性,增强特征学习;减少对大规模数据的依赖:在数据稀缺时生成更多的训练样本;通过数据增广,CNN模型能够更好地学习和理解复杂的图像数据,提高在实际应用中的表现。
Dropout提升CNN: Dropout通过在训练过程中随机“丢弃”部分神经元及其连接,防止模型过拟合,减少神经元之间的共适应性,模拟集成学习,并增加训练的随机性,从而显著提升了卷积神经网络的预测精度。
Momentum的作用: Momentum 通过在梯度下降过程中引入动量项,有助于加速收敛、减少振荡、帮助跳出局部最优解,从而显著提升了神经网络训练的效率和效果。通过使用 Momentum,优化算法能够更快、更稳定地找到损失函数的全局最优解,从而提高模型的性能和预测精度。
CNN改造
残差模块(Residual Block)设计思想: 跳跃连接(Skip Connection):直接将输入通过跳跃连接传递到输出,跳过中间的卷积层;解决梯度消失问题:通过引入跳跃连接,使梯度可以直接从后层传递到前层,缓解梯度消失问题;恒等映射(Identity Mapping):使网络更容易学习恒等映射,从而使深层网络的训练更加稳定和高效;更深的网络:允许构建更深的网络层数,提高特征提取能力和模型表现;残差模块通过这些设计使得深度神经网络能够更有效地进行训练,提升模型性能。
RPN: 全卷积网络:RPN是一个全卷积网络,直接在特征图上滑动窗口生成候选区域(proposals);锚点机制:在每个滑动窗口位置生成一组固定尺寸和比例的锚点(anchors),这些锚点作为候选区域的初始猜测;两类输出:每个锚点输出两个值;前景/背景分类:判定锚点是否属于前景(物体)或背景;边界框回归:调整锚点以更好地拟合真实物体的边界框;共享卷积层:RPN与目标检测网络(如Fast R-CNN)共享卷积层,减少重复计算,提高效率;端到端训练:RPN与目标检测网络联合训练,实现端到端优化,提高候选区域生成的精度和速度。
RPN(Region Proposal Network)设计思路是通过一个卷积神经网络生成特征图,并在每个特征图位置生成一组不同尺度和宽高比的锚点。然后,使用1x1卷积层对这些锚点进行二分类(前景/背景)和回归调整(位置和尺寸),以生成候选区域。最后,通过非极大值抑制去除冗余区域,生成高质量的候选区域。这一过程与目标检测网络共享特征图,实现了高效的端到端训练和检测。

R-CNN到Fast R-CNN: R-CNN(训练慢:需要分阶段训练,首先训练CNN,然后在提取的特征上训练SVM;检测慢:要划分很多个框resize像素再每个框进行CNN前向传播,速度慢;存储需求高:需要大量磁盘空间存储每个候选区域的特征)Fast R-CNN(单阶段训练:用多任务损失函数联合训练分类和回归任务;只做一次卷积特征提取,ROI池化不按照像素而是按照区域,避免了重复计算,提高了速度和效率;端到端训练:整个网络可以端到端训练,包括候选区域生成、特征提取、分类和回归,简化了训练流程。)

全卷积网络(FCN): 存在特征分辨率降低、感受野过大、边缘效应、计算量大、梯度消失、特征融合不充分和数据依赖性强等问题。为应对这些挑战,可采取反卷积、空洞卷积、跳跃连接、特征金字塔、数据增强和迁移学习等方法进行改进。
去除重叠框思路:非极大值抑制(Non-Maximum Suppression, NMS)去除重叠框。步骤如下:排序:按照预测的置信度(confidence score)对所有候选框进行排序,从高到低;选择最高分框:选择置信度最高的框作为基准框,保留这个框,并将其加入最终的输出列表;计算重叠区域:计算基准框与其他候选框的重叠面积,通常使用交并比(IoU, Intersection over Union)作为衡量标准;抑制重叠框:对于所有与基准框的IoU超过预设阈值的候选框,将其从候选框列表中移除,表示这些框被抑制,因为它们与基准框重叠过多;重复:从剩余的候选框中重复步骤2-4,直到所有框都处理完毕。


AP计算的是折线图包围住的面积:P1/1,R1/3->P2/2,R2/3->P2/3,R2/3->2/4,R2/3->P3/5,R3/3

相关文章:
计算机视觉基础课程知识点总结
图像滤波 相关: 核与图像同向应用,不翻转。 卷积: 核在应用前翻转,广泛用于信号处理和深度学习(现在常说的二维卷积就是相关)。 内积: 向量化的点积操作,是相关和卷积的一部分。 模板匹配:通过在图像中…...
编译原理:语法分析
目录 引言上下文无关文法 CFG: Context-Free Grammar定义推导方法最左推导和最右推导 分析树分析树->抽象语法树常见的上下文无关文法文法设计二义性文法扩展巴科斯范式:EBNF extended Backus Normal Form 文法和语言分类相关术语直接推导推导*推导句型、句子、语…...
React 中的 Lanes
React 中有一个 Lane 的概念,Lane 就像高速路上的不同车道,具有不同优先级,在 React Lane 通过一个 32 位的二进制数来表示。越小优先级别越高,SyncLane 级别最高。用二进制存储的方式,可以通过逻辑操作快速判断 Lane …...
【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】线性分类模型损失函数对比
本节均以二分类问题为例进行展开,统一定义类别标签 y ∈ { 1 , − 1 } y\in\{1,-1\} y∈{1,−1},则分类正确时 y f ( x ; w ) > 0 yf(x;w)>0 yf(x;w)>0,且值越大越正确;错误时 y f ( x ; w ) < 0 yf(x;w)<0 yf(x;…...
数组(C语言)(详细过程!!!)
目录 数组的概念 一维数组 sizeof计算数组元素个数 二维数组 C99中的变⻓数组 数组的概念 数组是⼀组相同类型元素的集合。 数组分为⼀维数组和多维数组,多维数组⼀般比较多见的是二维数组。 从这个概念中我们就可以发现2个有价值的信息:(1)数…...
视频生成模型 Dream Machine 开放试用;微软将停止 Copilot GPTs丨 RTE 开发者日报 Vol.224
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...
Vue30-自定义指令:对象式
一、需求:创建fbind指定 要用js代码实现自动获取焦点的功能! 二、实现 2-1、步骤一:绑定元素 2-2、步骤二:input元素获取焦点 此时,页面初始化的时候,input元素并没有获取焦点,点击按钮&…...
2024/06/13--代码随想录算法(贪心)3/6|134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列
134.加油站 力扣链接 class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:curSum 0 # 当前累计的剩余油量totalSum 0 # 总剩余油量start 0 # 起始位置for i in range(len(gas)):curSum gas[i] - cost[i]totalSum gas[i] - co…...
机器学习的分类
机器学习分类 机器学习是人工智能的一个分支,它使计算机系统能够从数据中学习并做出决策或预测。机器学习(Machine Learning)是一种基于数据驱动的方法,旨在通过自动化的统计模型和算法从数据中学习和提取模式,以进…...
【Linux】进程控制3——进程程序替换
一,前言 创建子进程的目的之一就是为了代劳父进程执行父进程的部分代码,也就是说本质上来说父子进程都是执行的同一个代码段的数据,在子进程修改数据的时候进行写时拷贝修改数据段的部分数据。 但是还有一个目的——将子进程在运行时指向一个…...
PFC旁路二极管、继电器驱动电路以及PFC主功率
R001和R002以及R003三个电阻作用是限放X电容上的电 整流桥串联两个BJ1和BJ2 电容C3:给整流桥储能,给后续llc供电 PFC工作是正弦波上叠加高频电流 PFC功率部分 2个PFC电感(选择两个磁芯骨架小,有利于散热)、2个续流二极管&…...
CrossOver 2024软件下载-CrossOver 2024详细安装教程
Crossover软件是一款可以在Mac、Linux和Chromebook上运行Windows程序的软件。 它是一款商业软件,由CodeWeavers公司开发,Crossover不是一个虚拟机或模拟器,它使用Wine技术来将Windows程序直接转换成可以在其他操作系统上运行的程序࿰…...
Spark MLlib机器学习
前言 随着大数据时代的到来,数据处理和分析的需求急剧增加,传统的数据处理工具已经难以满足海量数据的分析需求。Apache Spark作为一种快速、通用的集群计算系统,迅速成为了大数据处理的首选工具。而在Spark中,MLlib(…...
React Native将 ipad 端软件设置为横屏显示后关闭 Modal 弹窗报错
问题: 将 ipad 端软件设置为横屏显示后,关闭 Modal 弹窗报错。 Modal was presented with 0x2 orientations mask but the application only supports 0x18.Add more interface orientations to your apps Info.plist to fix this.NOTE: This will cras…...
JavaEE大作业之班级通讯录系统(前端HTML+后端JavaEE实现)PS:也可选网络留言板、图书借阅系统、寝室管理系统
背景: 题目要求: 题目一:班级通讯录【我们选这个】 实现一个B/S结构的电子通讯录,其中的每条记录至少包含学号、姓名、性别、班级、手机号、QQ号、微信号,需要实现如下功能: (1)…...
代码随想录算法训练营第37天|● 56.合并区间● 738.单调递增的数字
合并区间 56. 合并区间 - 力扣(LeetCode) 按照左边界从小到大排序之后,如果 intervals[i][0] < intervals[i - 1][1] 即intervals[i]的左边界 < intervals[i - 1]的右边界,则一定有重叠。(本题相邻区间也算重贴…...
SQL Server中的CTE和临时表优化
在SQL Server中,优化查询性能是数据库管理的核心任务之一。使用公用表表达式(CTE)和临时表是两种重要的技术手段。本文将深入探讨CTE如何简化代码,以及临时表如何优化查询性能。通过实例和详尽解释,我们将展示这两种技…...
CCRC信息安全服务资质认证是什么
什么是CCRC认证? CCRC 全称 China Cybersecurity Review Technology and Certification Center。CCRC认证是指中国网络安全审查技术与认证中心进行的信息安全服务资质认证。简称信息安全服务资质认证。 CCRC,即中国网络安全审查技术与认证中心࿰…...
第五十一天 | 1143.最长公共子序列
题目:1143.最长公共子序列718.最长重复子数组的区别是,子序列不要求连续,子数组要求连续。这一差异体现在dp数组含义和递推公式中,本题是子序列,那就要考虑上nums1[i - 1] ! nums2[j - 1]的情况。 本道题与 1.dp数组…...
未来的5-10年,哪些行业可能会被AI代替?
在未来的5-10年,多个行业可能会受到AI技术的影响,其中一些工作可能会被AI所代替。以下是对可能被AI替代的行业及工作的一些概述: 客户服务与代表:随着AI技术的发展,特别是自动话术对话和语音生成技术的进步࿰…...
OpenClaw多模型切换指南:Qwen3-32B与其他镜像协同工作
OpenClaw多模型切换指南:Qwen3-32B与其他镜像协同工作 1. 为什么需要多模型切换? 去年冬天,当我第一次尝试用OpenClaw自动化处理公司周报时,发现单一模型很难同时满足"数据分析"和"文案润色"两种需求。Qwen…...
别光看原理了!用STM32F407从零撸一个四轴飞控代码(附完整工程)
用STM32F407从零构建四轴飞控代码实战指南 当你在论坛上看到别人分享的无人机飞行视频,是否也曾心动想亲手打造一套自己的飞控系统?市面上大多数教程止步于理论讲解,真正落实到代码层面的少之又少。本文将带你用STM32F407开发板,…...
从C语言到裸机运行:i.MX6ULL 的 GPIO 控制与编译链接过程分析
引言在嵌入式系统开发中,从高级语言到硬件控制的完整链路涉及编译、链接、寄存器配置等多个环节。本文基于 i.MX6ULL 平台,以 C 语言实现 LED 与蜂鸣器控制为例,系统分析 ARM 裸机开发中的编译工具链使用、链接脚本的作用,以及 GP…...
实测才敢推 AI论文工具推荐:2026最新测评与使用体验
2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
SpringBoot整合MQTT实战:手把手教你实现设备动态连接与主题订阅管理(附完整源码)
SpringBoot整合MQTT实战:动态连接与主题订阅管理的工程化实现 在物联网项目开发中,设备连接管理和消息路由的灵活性往往是系统设计的难点。想象这样一个场景:你的智慧农业系统需要随时接入新部署的土壤传感器,气象站设备可能因网…...
Matlab实战:5步搞定微电网源储荷协调调度(附完整CPLEX调用代码)
Matlab实战:微电网源储荷协调调度的5个工程化技巧 微电网调度是新能源时代的核心技术难题之一。面对风光发电的波动性和负荷需求的多变性,如何实现源、储、荷三者的动态平衡,成为电力工程师们每天都要应对的挑战。不同于学术论文中复杂的理论…...
IPD实战指南:CBB模块化设计如何加速产品创新与资源整合
1. CBB模块化设计的本质与价值 第一次接触CBB这个概念时,我正负责一款智能家居产品的研发。当时团队为了赶进度,每个新产品都从零开始设计电路板,结果发现80%的功能模块都是重复的。这种低效的开发方式让我开始思考:能不能像搭积木…...
计算机毕设 java 基于 BS 的驾校在线学习考试系统 SpringBoot 驾校在线学习与考试管理平台 JavaWeb 驾校理论学习与模拟考试系统
计算机毕设 java 基于 BS 的驾校在线学习考试系统 43i2x9,末尾的数字和英文也要加上 (配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享随着驾考需求的不断增长,传统驾校理…...
Spring Boot Helper插件免费版获取与版本适配全攻略
1. 为什么我们需要Spring Boot Helper插件 作为一个常年使用IntelliJ IDEA开发Spring Boot项目的程序员,我深刻体会到这个插件的重要性。简单来说,它就像是Spring Boot开发的"瑞士军刀",能帮我们快速创建项目、自动配置依赖、一键…...
Dify知识库创建全攻略:从零开始搭建你的AI问答系统(附分段模式详解)
Dify知识库创建全攻略:从零开始搭建你的AI问答系统(附分段模式详解) 在AI技术快速渗透各行各业的今天,构建专属知识库已成为企业智能化转型的核心基础设施。Dify作为一款开箱即用的AI应用开发平台,其知识库功能尤其适合…...
