图像梯度

机器学习/梯度下降算法

扶醉桌前 提交于 2020-03-29 12:34:31
当在现实生活中的遇到问题时,我们总是希望找到最佳的解决方案。制造软件产品也是一样的道理,最优化的程序才是最理想的产品。 最优化意味着获得最佳输出。它既是一个数学的重要分支,也在现实生活中有着重要的作用。现代的计算机科学和人工智能科学把最优化作为一个重要的领域来研究。我们也认为人工智能的一些算法,就是模拟了人类寻求实际问题最优解的过程。例如,利用人工智能算法设计软件,配合外部的电子设备例如摄像头识别人脸;利用数据挖掘和神经网络算法来寻找投资的最佳时机等等,都是利用了最优化的原理。 机器学习中的最优化和其他学科的应用比起来有轻微的差异。一般来说,在优化的同时,我们确切地知道数据的外观以及我们想要改进的地方。 但是在机器学习中,我们不知道“新数据”是怎么样的,更别提对其进行优化了。为了解决这个问题,在机器学习中,我们对训练数据(training data)执行优化,并检查由此新创造出的验证数据(validation data)。 最优化的广泛应用 机械学:设计航空航天产品的表面; 经济学:成本最小化; 物理学:量子计算中的优化时间; 决定最佳运输路线,货架空间优化等等。 许多流行的机器算法都依赖于线性回归,k最近邻,神经网络等技术。优化的应用是无限的,因此它成为了学术界和工业界广泛研究的课题。在本文中,我们将介绍一种称为梯度下降(Gradient Descent)的优化技术。

【计算机视觉03】SIFT特征提取与检索

回眸只為那壹抹淺笑 提交于 2020-03-09 00:35:42
本文参考博客:https://blog.csdn.net/fangjian1204/article/details/10522455 文章目录 一、建立高斯差分金字塔 1.基本概念 2.构建高斯金字塔 3.构建Dog金字塔 二、关键点位置确定 1.基本概念 2.DoG局部极值点 3.去除边缘响应 三、关键点方向分配 四、关键点描述 五、匹配 5.1 数据集 5.2 图片的SIFT特征提取 5.3 计算两张图片SIFT特征匹配结果 5.4 检索匹配 六、实验总结 -错误分析 -算法分析 一、建立高斯差分金字塔 1.基本概念 高斯金字塔里有两个概念:组(Octave)和层(Level); 不同大小的图片是组;同样大小的图片,在内部是层; 在同一组内,不同层图像的尺寸是一样的; 2.构建高斯金字塔 高斯金字塔每层中的多幅图像,是通过对同一幅输入图像进行不同尺度的高斯卷积得来的。 高斯金字塔的组数为: 计算高斯模糊的系数σ: σ 为尺度空间坐标, s 为每组中层坐标, σ0 为初始尺度, S 为每组层数(一般层数为3~5)。 根据公式推理可以得到,金字塔组内各层尺度以及组间各图像尺度关系: 相邻两组的同一层尺度为2倍的关系 。 3.构建Dog金字塔 高斯金字塔相邻两层相减,便可以得到 DoG (Difference of Gaussian)金字塔。

SIFT特征提取+匹配

别说谁变了你拦得住时间么 提交于 2020-03-08 10:51:11
SIFT特征提取+匹配 目录 SIFT特征提取+匹配 1. 算法描述 1.1 构建尺度空间 1.2 LoG近似DoG找到关键点 1.3 除去不好的特征点 1.4 关键点的表示 1.5 关键点描述子的生成​ 1.6 根据SIFT进行匹配 2. 实验要求 3.实验过程 3.1 实验数据集 ​ 3.2 sift特征提取 3.3 特征匹配 3.4 匹配筛选 4. 总结 4.1 SIFT特征特性: 4.2 SIFT特征的缺点 4.3 SIFT特征的用途 4.4 实验过程遇到的问题 1. 算法描述 特征描述子就是对关键点提取特征的过程,应该具备可重复性、可区分性、准确性、有效性和鲁棒性。SIFT(Scale-Invariant Feature Transform)是一种特征描述子。该描述子具有尺度不变性和光照不变性。 1.1 构建尺度空间 这里的尺度可以理解为图像的模糊程度,就是眼睛近视的度数。尺度越大细节越少,SIFT特征希望提取所有尺度上的信息,所以对图像构建尺度空间, 也就是实用不同的平滑核对图像进行平滑。这里的平滑核选用高斯核,空间尺度有高斯核尺度决定: 其中 是原图像,*是卷积符号, 对应尺度下的尺度图像, 是高斯核。 其中 G(x,y,σ) 是尺度可变高斯函数 (x,y)是空间坐标,是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征

【PyTorch】PyTorch中的梯度累加

梦想与她 提交于 2020-03-08 03:40:56
PyTorch中的梯度累加 使用PyTorch实现梯度累加变相扩大batch PyTorch中在反向传播前为什么要手动将梯度清零? - Pascal的回答 - 知乎 https://www.zhihu.com/question/303070254/answer/573037166 这种模式可以让梯度玩出更多花样,比如说梯度累加(gradient accumulation) 传统的训练函数,一个batch是这么训练的: for i,(images,target) in enumerate(train_loader): # 1. input output images = images.cuda(non_blocking=True) target = torch.from_numpy(np.array(target)).float().cuda(non_blocking=True) outputs = model(images) loss = criterion(outputs,target) # 2. backward optimizer.zero_grad() # reset gradient loss.backward() optimizer.step() 获取loss:输入图像和标签,通过infer计算得到预测值,计算损失函数; optimizer.zero_grad()

图像处理——提取梯度

只谈情不闲聊 提交于 2020-03-07 17:21:15
1.图像的梯度——定义(百度百科) 根据图像梯度可以把图像看成二维离散函数f(x,y),图像梯度其实就是这个二维离散函数的求导(即f(x,y)的求导得G(x,y)): 图像梯度: G(x,y) = dx(i,j) + dy(i,j); dx(i,j) = I(i+1,j) - I(i,j); dy(i,j) = I(i,j+1) - I(i,j); 其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。 图像梯度一般也可以用中值差分: dx(i,j) = [I(i+1,j) - I(i-1,j)]/2; dy(i,j) = [I(i,j+1) - I(i,j-1)]/2; 梯度的方向是图像函数f(x,y)变化最快的方向,当图像中存在边缘时,一定有较大的梯度值,相反,当图像中有比较平滑的部分时,灰度值变化较小,则相应的梯度也较小,图像处理中把梯度的模简称为梯度, 由图像梯度构成的图像成为梯度图像 。 2.图像梯度作用 a.通过图像的梯度提取边缘信息,可用于边缘检测; b.通过图像的梯度计算灰度变化情况,增强图像质量。 3.python3实现图像梯度提取 class Image_Gradent(): def __init__(self,image_name): self.img = image_name; #Sobel算子 def sobel_demo(self): grad

机器学习160道面试题

爷,独闯天下 提交于 2020-03-06 10:19:46
数据科学职位的典型面试过程会有很多轮,其中通常会涉及理论概念,目的是确定应聘者是否了解机器学习的基础知识。 在这篇文章中,我想总结一下我所有的面试经历(面试or被面试)并提出了160多个数据科学理论问题的清单。 其中包括以下主题: 线性回归 模型验证 分类和逻辑回归 正则化 决策树 随机森林 GBDT 神经网络 文本分类 聚类 排序:搜索和推荐 时间序列 这篇文章中的问题数量似乎远远不够,请记住,面试流程是根据公司的需求和你的工作经历而定的。因此,如果你的工作中没有用过时间序列模型或计算机视觉模型,就不会收到类似的问题。提示:如果不知道某些面试问题的答案,不要灰心。为了简化起见,我根据难度将问题分为三类: 👶容易 ⭐️中号 🚀专家 开始吧! 有监督的机器学习 什么是有监督学习?👶 线性回归 什么是回归?哪些模型可用于解决回归问题?👶 什么是线性回归?什么时候使用它?👶 什么是正态分布?为什么要重视它?👶 如何检查变量是否遵循正态分布?‍⭐️ 如何建立价格预测模型?价格是否正态分布?需要对价格进行预处理吗?‍⭐️ 解决线性回归的模型有哪些?‍⭐️ 什么是梯度下降?它是如何工作的?‍⭐️ 什么是正规方程?‍⭐️ 什么是SGD-随机梯度下降?与通常的梯度下降有何不同?‍⭐️ 有哪些评估回归模型的指标?👶 什么是MSE和RMSE?👶 验证方式 什么是过拟合?👶 如何验证模型?👶

160个机器学习面试题

半城伤御伤魂 提交于 2020-03-06 09:30:23
原文: https://hackernoon.com/160-data-science-interview-questions-415s3y2a Alexey Grigorev(Lead Data Scientist at OLX Group) 数据科学职位的典型面试过程会有很多轮,其中通常会涉及理论概念,目的是确定应聘者是否了解机器学习的基础知识。 在这篇文章中,我想总结一下我所有的面试经历(面试or被面试)并提出了160多个数据科学理论问题的清单。 其中包括以下主题: 线性回归 模型验证 分类和逻辑回归 正则化 决策树 随机森林 GBDT 神经网络 文本分类 聚类 排序:搜索和推荐 时间序列 这篇文章中的问题数量似乎远远不够,请记住,面试流程是根据公司的需求和你的工作经历而定的。因此,如果你的工作中没有用过时间序列模型或计算机视觉模型,就不会收到类似的问题。 提示:如果不知道某些面试问题的答案,不要灰心。为了简化起见,我根据难度将问题分为三类: 👶容易 ⭐️中号 🚀专家 开始吧! 有监督的机器学习 什么是有监督学习?👶 线性回归 什么是回归?哪些模型可用于解决回归问题?👶 什么是线性回归?什么时候使用它?👶 什么是正态分布?为什么要重视它?👶 如何检查变量是否遵循正态分布?‍⭐️ 如何建立价格预测模型?价格是否正态分布?需要对价格进行预处理吗?‍⭐️ 解决线性回归的模型有哪些?

Harris角点检测原理详解

 ̄綄美尐妖づ 提交于 2020-03-06 06:00:16
http://blog.csdn.net/lwzkiller/article/details/54633670 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 1. 何为角点? 下面有两幅不同视角的图像,通过找出对应的角点进行匹配。 再看下图所示,放大图像的两处角点区域: 我们可以直观的概括下角点所具有的特征: >轮廓之间的交点; >对于同一场景,即使视角发生变化,通常具备稳定性质的特征; >该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化; 2. 角点检测算法基本思想是什么? 算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 3

深度学习-卷积神经网络笔记

懵懂的女人 提交于 2020-03-04 05:25:05
卷积神经网络组成 : input--CONV--ReLU--pooling--FC 输入层--卷积层--激活函数--池化层--全连接层 在这里需要指出的是:--卷积层--激活函数--池化层--全连接层,它的组合不唯一,也可以看一下关于卷积神经网络的 概括 : 由于它们的组合可以作出相应的改变,所以使得卷积神经网络有很多不同的表达,尤其是在深度上的提高。 卷积层 卷积层一般是由3x3或5x5,甚至是11x11的卷积核与传入数据进行卷积得到的,下图是3x3Filter与绿色的图像做卷积的过程,粉红色的图是卷积之后的结果。 局部感受野 :上图中的3x3卷积核,先与图像中的左上角的 3x3局部感受野 做点积并将所有的结果进行加和才得到粉色图像中的第一个数字4,接着每移动一列进行一次内积并作加和,直到所有的 局部感受野 处理完毕为止。就得到了第一个卷积特征图。在这里面的移动步长S为1。补充一下:卷积核的行列值一般都是奇数。上图的计算过程中不难发现,输入图的矩阵的四个边只利用到了一次,如果想要充分利用边上的特征就需要扩边。在下图中就是对一个RGB图进行了边的扩充,当然RGB是三维的,所以可以利用三个卷积核对每一维进行卷积,然后将所有的卷积结果进行相加,即图中的绿色输出的第一个图的左上角数字5是由,w0三个卷积核分别对不同维度做卷积后的结果的总和。 权值共享 :在我看来

图像梯度(Image Gradient)概念和Sobel算子

核能气质少年 提交于 2020-03-02 04:22:05
1.图像梯度 图像梯度是指图像某像素在x和y两个方向上的变化率(与相邻像素比较),是一个二维向量,由2个分量组成,X轴的变化、Y轴的变化 。 其中X轴的变化是指当前像素右侧(X加1)的像素值减去当前像素左侧(X减1)的像素值。 同理,Y轴的变化是当前像素下方(Y加1)的像素值减去当前像素上方(Y减1)的像素值。 计算出来这2个分量,形成一个二维向量,就得到了该像素的图像梯度。取反正切arctan,可得到梯度角度。 这个求图像梯度的过程可以通过一个卷积核来实现:[-1,0,1] 图像梯度的绝对值为 图像梯度的角度为 python代码 import numpy as np import scipy . signal as sig data = np . array ( [ [ 0 , 105 , 0 ] , [ 40 , 255 , 90 ] , [ 0 , 55 , 0 ] ] ) G_x = sig . convolve2d ( data , np . array ( [ [ - 1 , 0 , 1 ] ] ) , mode = 'valid' ) G_y = sig . convolve2d ( data , np . array ( [ [ - 1 ] , [ 0 ] , [ 1 ] ] ) , mode = 'valid' ) 2.扩展版图像梯度(Sobel)