自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

法兰西流浪者博客

渣硕还能抢救一下

  • 博客(45)
  • 收藏
  • 关注

原创 深度学习与TensorFlow实战(十一)卷积神经网络—VGG神经网络应用 图像风格迁移

先看一下图像效果。 把图像A转成B风格的山水画,结果C。 A B 结果C: 训练好的VGG19模型下载:http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.matmodel.py代码:import tensorflow as tfimport numpy as npimpo...

2018-08-31 17:42:21 2993 1

原创 深度学习与TensorFlow实战(十)卷积神经网络—VGG(16)神经网络

架构: 训练输入:固定尺寸224x224的RGB图像。 预处理:每个像素减去训练集上的RGB均值。 卷积核:一系列3X3卷积核堆叠,步长为1,采用padding保持卷积后图像空间分辨率不变。 空间池化:紧随卷积堆的最大池化,为2x2滑动窗口,步长2. 全连接层:特征提取后,接三个全连接层,前两个为4096,第三个为1000通道,最后是一个softmax层,输出概率。 所有隐藏层都用非线...

2018-08-27 19:48:43 9764

原创 深度学习与TensorFlow实战(九)卷积神经网络—Lenet神经网络

Lenet神经网络是YannLeCun等人在1998年提出的,该神经网络充分考虑图像的相关性。 Lenet神经网络结构为: 1),输入为32X32X1的图片大小,为单通道; 2),进行卷积,卷积核大小为5X5X1,个数为6,步长为1,非0填充; 3)将卷积结果通过非线性激活函数; 4)进行池化,池化大小为2X2,步长为1,全0填充; 5)进行卷积,卷积核大小为5X5X6,个数16,步长...

2018-08-24 17:49:38 1225 1

原创 深度学习与TensorFlow实战(八)卷积神经网络基础

全连接NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测结果。 参数个数:(前层X后层+后层) 一张分辨率仅仅是28X28的黑白图像,就有近40万个待优化参数。现实中高分辨率的色彩图像,像素点更多,且为RGB三通道。 待优化参数过多,容易导致模型过拟合。为避免这种现象,实际应用中不会直接将原始图片输入到全连接网络。 在实际中,会先对原始图像进行特征提取,把提...

2018-08-23 18:35:47 3081

原创 深度学习与TensorFlow实战(七)全连接网络基础—真实图片输出手写数字识别准确率

本节会涉及一些简单的图像处理操作,具体的可以看我写的OpenCV图像处理博文,是用C++写,但本节用的是Python里面PIL 图像处理库,只是语言不一样,本质原理是一样的。以后有时间我会写一个系列关于OpenCV图像处理Python版的。 关于PIL操作可以参考博文:https://www.jianshu.com/p/e8d058767dfa输入真实图片,输出预测结果 网络输入:一组...

2018-08-23 15:45:02 1497

原创 深度学习与TensorFlow实战(六)全连接网络基础—MNIST数据集输出手写数字识别准确率

mnist数据集:包含7万张黑底白字手写数字图片,其中55000张作为训练集,5000张作为验证集,10000作为测试集。每张图片大小为28X28像素,图片中纯黑色像素值为0,纯白1。数据集的标签长度为10的一维数组,数组每个元素索引号表示对应数字出现的概率。 在将mnist数据集作为输入喂入神经网络时,需先将数据集中每张图片变成长度784一维数组,将该数组作为输入特征喂入神经网络。from...

2018-08-22 18:32:05 1750

原创 深度学习与TensorFlow实战(五)全连接网络基础—模块化搭建神经网络

神经网络步骤包括前向传播过程、反向传播过程、反向传播过程中用到的正则化、指数衰减学习率、滑动均方方法的设置、以及测试模块。 前向传播过程: def forward(x,regularizer): w= b= y= return ydef get_weight(shape,regularizer): def get_bias(shape): 前向传播过程中,需要定义神经网络中的参...

2018-08-22 16:37:28 437

原创 深度学习与TensorFlow实战(四)神经网络优化

神经元模型:,f为激活函数,神经网络是以神经元作为基本单元构成。 激活函数:引入非线性激活因素,提升模型的表达能力 常用的激活函数relu,sigmoid,tanh等。 1,激活函数relu:tf.nn.relu() 2,激活函数sigmoid:tf.nn.sigmoid() 3,激活函数tanh:tf.nn.tanh() 神经网络的复杂度:可用神经网络的层数和神经网络中待...

2018-08-21 17:48:08 524

原创 深度学习与TensorFlow实战(三)TensorFlow概述与神经网络

计算图: Tensor表示张量,可以简单理解为多维数组,flow是张量之间通过计算相互转化的过程。TensorFlow每一个计算都是计算图上的一个节点,节点之间的边缘描述了计算之间的依赖关系。 张量: 多维数组,几阶张量就是几维数组,但是张量不像数组那样真正保存数字,它保存的是如何得到这些数字的计算过程。张量有三个属性:name(名字),shape(维度),type(类型) add:0...

2018-08-20 14:28:58 808

原创 深度学习与TensorFlow实战(二)TensorFlow+pycharm安装教程

安装教程: 本人使用的开发环境:win7+pycharm+TensorFlow1.1+Python3.6 强烈建议使用pycharm来安装TensorFlow,虽然有不少建议使用Anaconda来安装TensorFlow的,已经相对简单很多了,不过本人还是觉得繁琐,Anaconda这个还是挺大的。当然也是可以选择使用Anaconda,pycharm也可以使用Anacondad的路径。 第一步...

2018-08-20 13:13:23 2050

原创 深度学习与TensorFlow实战(一)深度学习基本概述

传统的机器学习算法例如SVM、Boosting、最大熵、LR都属于浅层的机器学习模型,这些模型只有一层隐藏节点,或者没有隐藏节点(LR),其局限在于有限样本和计算单单元对复杂函数的表示能力有限,泛化能力的局限性也较大。深度学习可以通过学习深层非线性网络结构,实现复杂函数的无限逼近,展现出强大的从少数样本中学习数据集特征的能力。使用多层隐藏节点可以用较少的参数表达复杂的函数。 深度学习的实质:通过...

2018-08-20 11:02:05 1365

原创 OpenCV图像分割实战C++(一)Grabcut抠图与证件照背景替换

Grabcut抠图步骤:输入原图像矩形输入开始分类GMM描述GMM训练分类Graph Cut分类不断迭代直到收敛分类API:void grabCut(InputArray img, // 待分割图像,8bit,3通道// 输入输出参数,保存处理后的结果,8bit单通道掩码(与img同rows cols),mask元素值只能为 GC_BGD, GC_FGD, GC...

2018-08-17 17:08:19 12492 10

原创 OpenCV视频分析与对象跟踪C++(四)视频中移动对象统计

#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>#include<opencv2/face.hpp>#include<iostream>#include<math.h>#include <string> #include<fstre...

2018-08-17 15:29:09 1267 4

原创 OpenCV视频分析与对象跟踪C++(三)CAMShift对象跟踪

MeanShift算法(均值漂移) 假设有一堆数据,不均匀的在平面空间分布,首先通过均值计算,评估中心点在哪里,然后中心向密度的地方平移最后找到密度最高的地方。 MeanShift算法使用的直方图比较与模板匹配类似,这两个算法只能匹配Windows固定的roi区域。 如果视频中选择的roi区域的移动忽远忽近(甚至变形),这两种算法就不能再准确的跟踪到roi区域这时候用CAMShift :窗...

2018-08-17 15:10:49 1506 1

原创 OpenCV视频分析与对象跟踪C++(二)光流对象跟踪-稀疏光流、稠密光流

移动对象跟踪三要素:图像表示(跟踪的对象要在图像中出现)外光模型,移动模型。稀疏光流跟踪,KTLvoid calcOpticalFlowPyrLK( // 稀疏光流跟踪,KLT InputArray prevImg, // 要跟踪的图像,8bit InputArray nextImg, // 在目标图像跟跟踪 prevImg 上的 prevPts 特征点 InputArray pre...

2018-08-17 14:38:06 2612 2

原创 OpenCV视频分析与对象跟踪C++(一)视频读写、背景消除建模(BSM)、对象检测与跟踪(基于颜色)

支持常见的视频格式:mp4 avi flash 甚至是 rtsp 实时流每帧间隔超过 300ms 人眼就会认定为两张独立的图像,FPS 15 帧 20 帧 是可以接受的,最低甚至可以接受 5帧代码:#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>#include<open...

2018-08-17 14:13:58 1601

原创 OpenCV图像特征提取与检测C++(八)视频中人脸检测与眼睛跟踪

人脸的生物学特征 两个眼睛之间的宽度大致等于一个眼睛的距离 左右对称 眼睛到嘴巴之间的距离大致等于两个眼睛的宽度 鼻子到嘴唇距离,大致等于两个嘴唇的厚度代码:#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>#include<opencv2/fa...

2018-08-17 13:02:16 2439 2

原创 OpenCV图像特征提取与检测C++(七) 级联分类器 HAAR与LBP– 人脸检测(图像和视频)

级联检测器(cascade):通过弱分类器检测到的人脸再次进行多次弱分类器检测,最终得到的人脸检测结果的准确率就非常高了。 使用级联检测器前,需要有训练好的数据。 对象检测,检测的是什么对象由训练的数据决定API:void CascadeClassifier::detectMultiScale( // 在不同尺度空间检测 输入图像中不同大小的对象。 检测到的对象作为矩形列表返回I...

2018-08-17 12:53:43 1834 2

原创 OpenCV图像特征提取与检测C++(五)特征描述子--Brute-Force匹配、FLANN特征匹配、平面对象识别、AKAZE局部特征检测与匹配、BRISK特征检测与匹配、ORB特征提检测与匹配

特征描述子 即图像中每个像素位置的描述,通过此描述去匹配另一张图像是否含有相同特征。 暴力匹配:Brute-Force 图像匹配本质上是特征匹配。因为我们总可以将图像表示成多个特征向量的组成,因此如果两 幅图片具有相同的特征向量越多,则可以认为两幅图片的相似程度越高。而特征向量的相似程度通常是用它们之间的欧氏距离来衡量,欧式距离越小,则可以认为越相似。 代码:#include &lt...

2018-08-17 10:01:25 1744 1

原创 OpenCV图像特征提取与检测C++(四)仿射变换、积分图计算

仿射变换(Affine Transformation或 Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(即:直线经过变换之后依然是直线)和“平行性”(即:二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。 一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)...

2018-08-17 08:32:28 2362

原创 OpenCV图像特征提取与检测C++(三)SURF特征检测、SIFT特征检测、HOG特征检测、LBP特征检测、Haar特征

SURF特征检测 SURF(Speeded Up Robust Features 加速的稳定的特征,不会随着环境变化而改变)特征关键特性:-特征检测-尺度空间 放缩到不同尺度空间,尺度不变性-选择不变性 光照不变性,旋转不变性-特征向量 将上面的特性描述成特征向量,然后就可以进行特征匹配尺度不变性:人类在识别一个物体时,不管这个物体或远或近,都能对它进行正确的...

2018-08-16 15:59:06 3251 1

原创 OpenCV图像特征提取与检测C++(二)Harris角点检测、Shi-Tomasi 角点检测、亚像素级别角点检测

图像特征类型可以分为三种: 边缘,角点,斑点。 其中,角点是个很特殊的存在,他们在图像中可以轻松定位,因为角点位于两条边缘的交点,代表了两条边缘变化的方向上的点,所以他们是可以精确定位的二维特征,甚至可以达到亚像素精度。 角点定义:如果某一点在任意方向的一个微小变动都会引起灰度很大的变化,则称为角点。 角点通常被定义为两条边的交点,更严格的说,角点的局部邻域应该具有两个不同区域的不同方向的...

2018-08-16 15:15:08 4671

原创 OpenCV图像特征提取与检测C++(一) 概述、编译opencv并添加拓展模块opencv_contrib

图像特征:可以表达图像中对象的主要信息、并且以此为依据可以从其它未知图像中检测出相似或者相同对象 比如人脸常见的图像特征: 边缘 角点 纹理图像特征描述: 描述子 生成设计到的特征提取与描述: 暂不超过20个 SIFT SURF HOG Haar LBP KAZE OpenC...

2018-08-16 14:42:53 1349

原创 OpenCV图像处理教程C++(二十二)基于距离变换与分水岭的图像分割

图像分割是图像处理最重要的处理手段之一 图像分割的目标是将图像中像素根据一定的规则分为若干个cluster集合每个集合包括一类像素 根据算法分为监督学习和无监督学习,图像分割的算法多数都是无监督学习-KMenas 距离变换常见算法有两种 - 不断膨胀/ 腐蚀得到 - 基于倒角距离分水岭变换常见的算法 基于浸泡理论实现,假设颜色数据为一个个山头,在山底不停加水,直到各大山头之间形成...

2018-08-16 14:27:26 1946 1

原创 OpenCV图像处理教程C++(二十一)图像矩、点多边形测试

图像矩: 矩:主要指几何矩 Mji = ∑ (P(x,y) · x^j · y^i) 其中 (i+j) 和等于几就是几阶矩, P(x,y)表示图像x,y坐标位置的像素值,i j 为变量x,y 还有中心矩(MUji), 中心归一化矩(NUji) 图像中心 Center(x0, y0) x0 = M10 / M00 , y0 = M01 / M00 此非图像坐标的中心点,而是...

2018-08-16 14:10:39 1167

原创 OpenCV图像处理教程C++(二十)轮廓发现、凸包、轮廓周围绘制圆和矩形

轮廓发现–边缘 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓结果拓扑:就是把实体抽象成与其大小、形状无关的点,而把连接实体的线路抽象成“线”,进而以图的形式来表示这些点与线之间关系的方法,其目的在于研究这些点、 线之间的相连关系。表示点和线之间关系的图被称为拓扑结构图。 步骤: 输入图像转为灰度图像cvtcolor 使用Canny进行边缘提取,...

2018-08-16 13:54:15 4117 1

原创 OpenCV图像处理教程C++(十九)模板匹配

模板匹配: 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域,所以模板匹配首先需要一个模板图像T(给定的子图像),另外需要一个待检测的图像-源图像s工作方法,在待检测图像上,从左到右,从上往下计算模板图像与重叠子图像的匹配度,匹配度越大两者相同的可能性就越大。 OpenCV中提供了六种常见的匹配算法如下:计算平方不同 , 计算出来的值越小,越相关 ...

2018-08-16 11:21:50 1847

原创 OpenCV图像处理教程C++(十八) 直方图均衡化、计算、比较、反向投影

直方图均衡化: 直方图(Histogram): 是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。 直方图反映了图像灰度的分布情况。是图像的统计学特征。 直方图均衡化: 是一种提高图像对比度的方法,拉伸图像灰度值范围。让图像更均衡。对于图像的特征提取是非常有用的 通过remap我们知道可以将图像灰度分布从一个分布映射到另外...

2018-08-16 11:10:10 1028

原创 OpenCV图像处理教程C++(十七)) 像素重映射以及漫水填充

像素重映射(镜面成像): 把输入图像中各个像素按照一定的规则到另外一张图像的对应位置上去,形成一张新的图像。Remap(src,dst,map1,//x映射表 CV_32FC1map2,//y映射表int interpolation,//选择的插值方法,常见线性插值INTER_LINEARint borderMode,//BORDER_CONSTANTcolor)代码:...

2018-08-16 10:26:37 973

原创 OpenCV图像处理教程C++(十六)霍夫变换--线性变换以及圆变换

霍夫变换是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合特特定形状的集合作为霍夫变换的结果。 前提条件—边缘检测已经完成 霍夫线变换的直接输入只能是边缘二值图像 平面空间到极坐标空间转换 opencv支持三种不同非霍夫变换,标准,多尺度,累计概率 标准霍夫变换(StandardHough Transform,SHT),由HoughLines函...

2018-08-16 08:56:08 2967

原创 OpenCV图像处理教程C++(十五)边缘检测算法--sobel算子、拉普拉斯算子、Canny算子

1、滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波器方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的 高斯核,然后基于高斯核函数对图像灰度矩阵反每一点进行加权就和。 2、增强:增强边缘的基础是确定图像各点领域强度的变化值,增强算法可以将图像灰度点领域强度值有显著变化的点凸显出来,具体编程时可...

2018-08-15 17:08:07 8133 1

原创 OpenCV图像处理教程C++(十四)卷积算子、自定义线性滤波以及边缘处理

卷积概念: 卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。 Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point) 卷积如何工作: 把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。 Sum = 8x1+6x1+6x1+2x1+8x1+6x1+2...

2018-08-15 16:26:59 2419

原创 OpenCV图像处理教程C++(十三)图像上采样与降采样以及基本阈值操作

图像金字塔:最底下图像尺寸最大,最上面最小。 上采样:当前图像分辨率从图像金字塔的低分辨率到高分辨率采样,得到的是一个更高分辨率的图像。 降采样:当前图像分辨率从图像金字塔的高分辨率到低分辨率采样,得到的是一个更低分辨率的图像。 高斯金字塔: 从低向上,逐层降采样得到 降采样之后图像大小是原图像MXN的M/2XN/2,就是对原图像删除偶数行与列, 即得到降采样之后上一层的图片 高斯金...

2018-08-15 15:41:20 3939

原创 OpenCV图像处理教程C++(十一) 形态学操作应用--提取水平与垂直线

原理方法: 图像形态学操作时候,可以通过自定义的核实现对输入图像一些对象敏感,另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出,通过使用两个基本的形态学操作-膨胀与腐蚀,使用不同的核实现对输入图像的操作,得到想要的结果, 膨胀–输出的像素值是核覆盖下输入图像的最大像素值 腐蚀–输出的像素值是核覆盖下输入图像的最小像素值提取步骤: 输入图像色彩图像imread 转换为...

2018-08-15 14:22:26 489

原创 OpenCV图像处理教程C++(十一) 形态学操作--膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽、黑帽

形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有二种,他们是:膨胀与腐蚀(Dilation与Erosion)膨胀:此操作将图像(A)与任意形状的内核 (B),通常为正方形或圆形,进行卷积。内核 B 有一个可定义的 锚点, 通常定义为内核中心点。进行膨胀操作时,将内核 B 划过图像,将内核 B 覆盖区域的最大相素值提取,并...

2018-08-15 14:02:17 7768

原创 OpenCV图像处理教程C++(十)图像模糊--非线性滤波

中值滤波:是一种基于统计学的滤波 统计排序滤波器:中值对椒盐噪声有很好的抑制作用(处理黑白点)。 图像噪声就是硬件处理图像时受干扰产生了极大或极小的像素值,转换成颜色数据就是255或0, 这就是椒盐噪声(黑白) 假如是3*3的卷积因子,图像数据为 ┌ 124 126 127 ┐ │ 120 150 125 │ └ 115 110 120 ┘ 进行排序后为: 115,119,120...

2018-08-15 10:42:44 1161

原创 OpenCV图像处理教程C++(九)图像模糊--线性滤波

模糊操作时图像处理中最简单和常用的操作之一,使用该操作的原因之一就为了给图像预处理时减低噪声。Smooth/Blur是最常见的操作 背后公式:g(i,j)=就和f(i+k,j+l)h(k,l) 通常这些卷积算子计算都是线性操作,所以叫线性滤波 假设有6x6的图像像素点矩阵。 卷积过程:6x6上面是个3x3的窗口(掩膜),从左向右,从上向下移动,黄色的每个像素点值之和取平均值赋给中心红色...

2018-08-14 15:38:25 722

原创 OpenCV图像处理教程C++(八) 绘制形状与文字

point表示2D平面上一个点x,y Point p p.x, p.y or p=Point(x,y) Scalar表示四个元素的向量 Scalar(a,b,c);a=blue,b=green,c=red代码:#include <opencv2/opencv.hpp>#include<iostream>#include<math.h>...

2018-08-14 15:19:29 682

原创 OpenCV图像处理教程C++(七)图像亮度和对比度

图像变换可以看做如下: 像素变换–点操作 领域操作–区域 调整图像亮度和对比度属于像素变换–点操作 对比度: 就是两个像素点之间的差值,差值越大对比度越高,反之越低 g(i,j)=af(i,j)+b 其中a>0,b是增益变量,a是对比度,b是亮度 saturate_cast(value)确保值大小范围为0-255; Mat.at(i,j)[index]=value给每个像素点每...

2018-08-14 15:02:44 880

原创 OpenCV图像处理教程C++(六)图像混合

图像混合 :g(x)=af(x1)+(1-a)f(x2)void addWeighted(InputArray src1,//表示需要加权的第一个数组,常常填一个Mat。 double alpha,//表示第一个数组的权重 InputArray src2,//表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数 double beta, //表示第二个数组的权重值。 doubl...

2018-08-14 14:45:55 565

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除