图像梯度

ceshi

荒凉一梦 提交于 2019-11-30 12:08:49
\documentclass[12pt]{article}%{ctexart} \usepackage{ctex} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsfonts} \usepackage{changepage} \usepackage{graphicx} \usepackage{url} %\usepackage{setspace} \title{一周进展报告} \author{杨拓} \date{\today} \setlength{\parskip}{0.5\baselineskip} \begin{document} \maketitle %生成文档目录 \tableofcontents %构建各章节的一级小结 \pagebreak \section{SIFT} \subsection{SIFT简介\cite{2}} \textbf{尺度不变特征转换(Scale-invariant feature transform或SIFT)},由David Lowe于1999年首次提出,作用是将一幅图像映射为一个局部特征向量集;特征向量具有平移、缩放、旋转不变性,同时对光照变化、仿射及投影变换也有一定的不变性。 \begin{adjustwidth}{1cm}{1cm} SIFT算法的特点有:~\\ 1

SIFT

我是研究僧i 提交于 2019-11-30 12:07:58
\section{SIFT} \subsection{SIFT简介\cite{2}} \textbf{尺度不变特征转换(Scale-invariant feature transform或SIFT)},由David Lowe于1999年首次提出,作用是将一幅图像映射为一个局部特征向量集;特征向量具有平移、缩放、旋转不变性,同时对光照变化、仿射及投影变换也有一定的不变性。 \begin{adjustwidth}{1cm}{1cm} SIFT算法的特点有:~\\ 1.SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;\\ 2.独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;\\ 3.多量性,即使少数的几个物体也可以产生大量的特征向量;\\ 4.高速性,经优化的匹配算法甚至可以达到实时的要求;\\ 5.可扩展性,可以很方便的与其他形式的特征向量进行联合。 \end{adjustwidth} \begin{adjustwidth}{1cm}{1cm} SIFT算法的基本步骤为:~\\ 1.高斯差分(DoG)滤波;\\ 2.尺度空间的极值检测和关键点位置确定;\\ 3.关键点方向确定;\\ 4.构建关键点特征描述符; \end{adjustwidth}

梯度累加实现 “显存扩大"

被刻印的时光 ゝ 提交于 2019-11-30 12:03:01
原文链接 https://www.cnblogs.com/qiulinzhang/p/11169236.html pytorch会在每一次 backward() 后进行梯度计算,但是 梯度不会自动归零,如果不进行手动归零的话,梯度会不断累加 1.1 传统的训练一个 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() loss.backward() optimizer.step() 获取loss: 输入图像和标签,通过infer计算得到预测值,计算损失函数 optimizer.zero_grad() 清空过往梯度 loss.backward() 反向传播,计算当前梯度 optimizer.step() 根据梯度更新网络参数 即进来一个batch的数据

机器学习笔记[保持更新]

两盒软妹~` 提交于 2019-11-30 06:36:13
机器学习笔记[入门版] 本文是吴恩达《机器学习》的笔记,由于课程内容较为基础,所以本文对于许多数学知识有些欠缺 多变量线性回归 非线性函数线性化 这种情况下,特征的缩放就变得很重要(因为在平方甚至立方的情况下,特征的值会放大很多) 也不一定只要平方,开方也可以: 正规方程 相比梯度下降法,可以更快地获得最优解。 正规方程法更适合于较小型的问题,而梯度下降法适用于更大的数据集 正规方程不需要缩放特征 每个特征列在开头补上一个1然后转置,计算的公式是: 如果X^tX不可逆怎么办? 整体来说,这种情况还是比较少的 pinv()指令能在矩阵不可逆的情况下也求解出正确答案 需要求解的特征量大于样本数时也会造成问题。 解决不可逆问题的办法: 删除线性相关的变量 当特征数量太多时,删除一些特征,或者使用正规化方法 向量化 多使用内置函数库(老师的意思是自己造轮子比不上人家的2333) 左图是自己写的循环,右图是调用向量相乘的方法。右图由于使用了内置的乘法,效率比自己写的要高 C++也有这种,线性运算的库 再复杂一点的情况也是,向量化之后慢慢处理 Logistic回归 依然是在机器学习中常用的一种算法 线性规划在分类问题中的表现一般不太好 线性规划设置阈值的方法在分类中不好使 Logistic回归是一种分类算法,和回归分析没关系,这个名字有点问题,是历史遗留问题 Sigmoid function

神经网络中的梯度消失

送分小仙女□ 提交于 2019-11-30 00:47:58
什么是梯度消失? 神经元的权重w和偏置b是和激活函数的梯度成正比的,激活函数导数越大,则w,b调整越快,如果激活函数梯度很小,在反向传播时,多个小于0的导数相乘,随着神经网络层数的加深,梯度方向传播到浅层网络时,基本无法引起全职的波动,也就是没有将loss的信息传递到浅层网络,这样网络就无法训练学习了。这就是所谓的梯度消失。 以sigmoid激活函数为例: sigmoid(x)=1/1+e^−x 该函数可以将实数压缩到开区间(0,1),其导数为: σ′(x)=e^−x/(1+e^−x)^2=σ(x)/(1−σ(x)) 函数图像如下: <ignore_js_op> 数两侧十分平滑,两端无限接近0和1,只有中间一段导数较大。当x=0时,其导数取最大值0.25。选择sigmoid函数作为激活函数的优势:1)可以引入非线性;2)容易求导;3)可以将实数压缩至(0,1) 神经网络主要的训练方法是BP算法,BP算法的基础是导数的链式法则,也就是多个导数的乘积。而sigmoid的导数最大为0.25,且大部分数值都被推向两侧饱和区域,这就导致大部分数值经过sigmoid激活函数之后,其导数都非常小,多个小于等于0.25的数值相乘,其运算结果很小。 梯度消失的解决方式主要有: 1)其它激活函数 激活函数对神经网络有显著的影响,现行常见的激活函数有ReLU、Leaky ReLU。 ReLU f(x)

吴恩达《机器学习》第一周笔记

限于喜欢 提交于 2019-11-29 12:11:36
目录 1. 引言(Introduction) 1.1 Welcome 1.2 什么是机器学习(What is Machine Learning) 1.3 监督学习(Supervised Learning) 1.4 无监督学习(Unsupervised Learning) 2 单变量线性回归(Linear Regression with One Variable) 2.1 模型表示(Model Representation) 2.2 代价函数(Cost Function) 2.3 代价函数 - 直观理解1(Cost Function - Intuition I) 2.4 代价函数 - 直观理解2(Cost Function - Intuition II) 2.5 梯度下降(Gradient Descent) 2.6 梯度下降直观理解(Gradient Descent Intuition) 2.7 线性回归中的梯度下降(Gradient Descent For Linear Regression) 3 Linear Algebra Review 3.1 Matrices and Vectors 3.2 Addition and Scalar Multiplication 3.3 Matrix Vector Multiplication 3.4 Matrix Matrix

【数字图像处理】图像边缘锐化之梯度锐化

徘徊边缘 提交于 2019-11-29 09:45:32
关于具体在实际场景的使用和图像会慢慢更新。 梯度锐化方法 图像平滑往往使图像中的边界、轮廓变得模糊,为了减少影响,需要利用图像锐化技术,使边缘变得清晰。常用的方法有: 直接以梯度值代替 辅以门限判断 给边缘规定一个特定的灰度级 给背景规定灰度级 根据梯度二值化图像 梯度运算   梯度锐化中,首先应该知道梯度是什么,怎么计算。   梯度是一个矢量,由分别沿x方向和y方向计算微分的结果构成。   构成有以下几种方式: 梯度锐化 直接以梯度值代替 思路:目标图像像素点用双向一次微分结果替代。 for(int i = 1; i < Use_ROWS- 1; i++) { for(int j = 1; j < Use_Line -1; j++) { Image_Use[i][j] = sqrt((Image_Use[i][j+1] - Image_Use[i][j])*(Image_Use[i][j+1] - Image_Use[i][j])+(Image_Use[i+1][j] - Image_Use[i][j])*(Image_Use[i+1][j] - Image_Use[i][j])); } } 辅以门限判断 思路:我们对梯度(变化率)取了一个预值,当图像的梯度变化很小时,本来是物体内部的数据的亮度分布不均匀产生的偏差,可以不考虑进去。只有大于等于一定预值,才认为是边界

tensorflow-图像识别-随机梯度

梦想与她 提交于 2019-11-28 20:02:07
# -*- coding: utf-8 -*- import numpy as np from PIL import Image import tensorflow as tf import os import matplotlib.pyplot as plt try: from tqdm import tqdm except ImportError: def tqdm(x,*args,**kwargs): return x def to_onehot(labels,nclasses=10):#一维数组转为二维数组 outlabels=np.zeros((len(labels),nclasses)) for i,l in enumerate(labels):#转换二维数组,加标签 outlabels[i,l]=1 return outlabels def loadlabels(filedir):#读取标签 label = np.loadtxt(filedir,skiprows=1,dtype='str',unpack=True) label.sort(axis=0)#按列排序 label2=[] for i in range(len(label)): label2.append(label[i].split(','))#按,分割字符串 label[i]=label2[i][1]

OpenCV第九讲:图像变换之边缘检测(Laplacian +Scharr 算子)

北城以北 提交于 2019-11-28 18:45:18
1. Laplacian 算子 Laplacian 算子(拉普拉斯), 是n维欧几里德空间中的一个二阶微分算子,定义为梯度的散度(参考: 一阶为梯度,二阶为散度 )。 拉普拉斯算子的定义: Laplace ( f ) = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 (f)=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} ( f ) = ∂ x 2 ∂ 2 f ​ + ∂ y 2 ∂ 2 f ​ 注意: 拉普拉斯算子使用了图像梯度,它的内部代码调用了 Sobel算子 , 且如果让 一幅图像减去它的Laplacian算子可以增强对比度 。 源代码剖析 /************************************************************ * void Laplacian( InputArray src, OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT ); * * ksize = 1, 内核大小为3*3 * * src: image 8-bit input image

机器学习常见优化器

六月ゝ 毕业季﹏ 提交于 2019-11-28 16:32:18
在机器学习、深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论文中给出了常用优化器的比较,今天来学习一下: https://arxiv.org/pdf/1609.04747.pdf 本文将梳理: 每个算法的梯度更新规则和缺点 为了应对这个不足而提出的下一个算法 超参数的一般设定值 几种算法的效果比较 选择哪种算法 0.梯度下降法深入理解 以下为个人总结,如有错误之处,各位前辈请指出。 对于优化算法,优化的目标是网络模型中的参数θ(是一个集合,θ 1 、 θ 2 、 θ 3 ...... )目标函数为损失函数L = 1/N ∑ L i (每个样本损失函数的叠加求均值)。这个损失函数L变量就是θ,其中L中的参数是整个训练集,换句话说,目标函数(损失函数)是通过整个训练集来确定的,训练集全集不同,则损失函数的图像也不同。那么为何在mini-batch中如果遇到鞍点/局部最小值点就无法进行优化了呢?因为在这些点上,L对于θ的梯度为零,换句话说,对θ每个分量求偏导数,带入训练集全集,导数为零。对于SGD/MBGD而言,每次使用的损失函数只是通过这一个小批量的数据确定的,其函数图像与真实全集损失函数有所不同,所以其求解的梯度也含有一定的随机性