随笔分类 -  研究

算法方面的东西
摘要:关于多gpu训练,tf并没有给太多的学习资料,比较官方的只有:tensorflow-models/tutorials/image/cifar10/cifar10_multi_gpu_train.py 但代码比较简单,只是针对cifar做了数据并行的多gpu训练,利用到的layer、activatio 阅读全文
posted @ 2017-12-27 17:42 handspeaker 阅读(34474) 评论(0) 推荐(1) 编辑
摘要:网上找了下tensorflow中使用batch normalization的博客,发现写的都不是很好,在此总结下: 1.原理 公式如下: y=γ(x-μ)/σ+β 其中x是输入,y是输出,μ是均值,σ是方差,γ和β是缩放(scale)、偏移(offset)系数。 一般来讲,这些参数都是基于chann 阅读全文
posted @ 2017-07-27 14:05 handspeaker 阅读(75312) 评论(21) 推荐(0) 编辑
摘要:最近学习了生成对抗网络(GAN),基于几个经典GAN网络结构做了些小实验,包括dcgan,wgan,wgan-gp。坦率的说,wgan,wgan-gp论文的原理还是有点小复杂,我也没有完全看明白,因此在此就不详细介绍了,如果感兴趣可以阅读参考部分的论文,本篇博客主要着重于记录如何利用tensorfl 阅读全文
posted @ 2017-05-24 18:00 handspeaker 阅读(5529) 评论(0) 推荐(0) 编辑
摘要:最近用caffe做了一下regression问题,先用data layer中的data,float_data试了一下,data用来存放图片,float_data存放regression的values,label存放标签,发现不行,因为float_data和label这俩是指向同一块内存,两者不能共存 阅读全文
posted @ 2016-11-03 19:49 handspeaker 阅读(7206) 评论(13) 推荐(1) 编辑
摘要:最近读了Joint Training of Cascaded CNN for Face Detection这篇论文,论文中把之前人脸检测使用到的cascade cnn,从分开训练的模式,改为了联合训练,并且声称得到了更好的结果。 但是在我读论文的过程中,产生了下面几点疑惑: 1.论文4.2节的Tra 阅读全文
posted @ 2016-06-21 10:20 handspeaker 阅读(6585) 评论(20) 推荐(0) 编辑
摘要:腐蚀、膨胀作为一种简单、基础的形态学操作,我之前没有过多的关注,直到最近发现OpenCV的实现要比自己的实现快几十倍,才进行了深入研究,发现这个操作也并没有想象中的那么简单。 0.准备工作 一般来说,腐蚀和膨胀都是基于二值图像做的,因此我把经典的lena.jpg转换成了二值图像,用于测试效果和性能。 阅读全文
posted @ 2016-03-28 19:40 handspeaker 阅读(11962) 评论(0) 推荐(0) 编辑
摘要:拉格朗日插值原理:拉格朗日插值的具体介绍网址:https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E6%8F%92%E5%80%BC%E6%B3%95翻译成人话就是,该曲线是由多个n次多项式的和构成的,n是参与插值的点... 阅读全文
posted @ 2015-12-11 15:29 handspeaker 阅读(5260) 评论(0) 推荐(0) 编辑
摘要:Lucas-Kanade算法广泛用于图像对齐、光流法、目标追踪、图像拼接和人脸检测等课题中。一、核心思想给定一个模板和一个输入,以及一个或多个变换,求一个参数最佳的变换,使得下式最小化在求最优解的时候,该算法假设目前的变换参数已知,并迭代的计算的增量,使得更新后的能令上式比原来更小。则上式改写为:二、算法流程1.初始化参数向量2.计算及其关于导数,求得参数增量向量3.更新,4.若小于某个小量,即当前参数向量基本不变化了,那么停止迭代,否则继续2,3两步骤。三、具体做法对做一阶泰勒级数展开,则目标函数变为:对其求导,并令导数为0,得到下式:对上式中的求解即可,得到的是的解析解:其中,四、Luca 阅读全文
posted @ 2014-03-17 10:59 handspeaker 阅读(16486) 评论(0) 推荐(1) 编辑
摘要:Viola Jones Face Detector是Paulviola和MichaelJJones共同提出的一种人脸检测框架。它极大的提高了人脸检测的速度和准确率。速度提升方面:利用积分图像来提取图像特征值,所以非常快。同时,利用adaboost分类器的特征筛选特性,保留最有用特征,这也减少了检测时的运算复杂度。准确率提升方面:将adaboost分类器进行改造,变成级联adaboost分类器,提高了人脸检测的准确率(降低漏检率和误检率)。首先介绍几个术语:检测率:存在人脸并且被检测出的图像在所有存在人脸图像中的比例。漏检率:存在人脸但是没有检测出的图像在所有存在人脸图像中的比例。误检率:不存在 阅读全文
posted @ 2013-10-23 14:06 handspeaker 阅读(19667) 评论(3) 推荐(0) 编辑
摘要:Histogram of Oriented Gridients,缩写为HOG,是目前计算机视觉、模式识别领域很常用的一种描述图像局部纹理的特征。这个特征名字起的也很直白,就是说先计算图片某一区域中不同方向上梯度的值,然后进行累积,得到直方图,这个直方图呢,就可以代表这块区域了,也就是作为特征,可以输入到分类器里面了。那么,接下来介绍一下HOG的具体原理和计算方法,以及一些引申。1.分割图像因为HOG是一个局部特征,因此如果你对一大幅图片直接提取特征,是得不到好的效果的。原理很简单。从信息论角度讲,例如一幅640*480的图像,大概有30万个像素点,也就是说原始数据有30万维特征,如果直接做HO 阅读全文
posted @ 2013-08-06 22:11 handspeaker 阅读(44948) 评论(21) 推荐(6) 编辑
摘要:前一阵子为了准备暑期实习笔试、面试,把维基上查到的常用的排序算法全写了一遍。基本是按照算法导论和维基上面的思路写的,有些算法的细节可能和一些书上有出入,但是思想是一样的。cpp文件在最后,代码如下:#include<stdio.h>#include<stdlib.h>#include<string>#include<math.h>#include<deque>using namespace std;#define SIZE 1000#define MIN -65536#define rm(x) (x>>1)#define 阅读全文
posted @ 2013-05-13 21:08 handspeaker 阅读(475) 评论(0) 推荐(0) 编辑
摘要:KMP是经典的字符串匹配算法,时间复杂度为o(m+n)KMP原理(待补充)前一阵子自己试着写了一下,代码如下:/**KMP算法实现*包含两部分:1.模式串前缀函数的计算(预处理)* 2.文本与模式串的匹配**模式串前缀函数的计算(预处理):*假设模式串的长度为len,通过计算模式串从1到len为止的所有子串的*最大前缀长度,来填充前缀数组。这个前缀满足这种特性:是这个子串的*真后缀,而且是这个子串的真前缀(即不为子串本身),能满足以上两者*的最大的那个串,取其长度。例如:abcabc,其中abc既是这个子串的后缀,*也是这个子串的前缀,并且是最长的,所以其前缀函数值为3.**计算所有子串... 阅读全文
posted @ 2013-05-13 20:59 handspeaker 阅读(749) 评论(0) 推荐(0) 编辑
摘要:最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下。1.多项式乘法两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与8*x^6+7*x^4+6*x^3+9两个式子相乘,会得到一个最高次数项为13的多项式。一般来说,普通的计算方法是:把A多项式中的每一项与B中多项式中的每一项相乘,得到n个多项式,再把每个多项式相加到一起,得到最终的结果,不妨假设A,B的最高次项都为n-1,长度都为n,那么计算最终的结果需要o(n^2)时间复杂度。而使用快速傅里叶变换(FFT),则可以将时间复杂度降低到o(nlog n)。这是因为,对 阅读全文
posted @ 2013-04-28 16:33 handspeaker 阅读(13002) 评论(1) 推荐(0) 编辑
摘要:蓄水池抽样(Reservoir Sampling)是一个很有趣的问题,它能够在o(n)时间内对n个数据进行等概率随机抽取,例如:从1000个数据中等概率随机抽取出100个。另外,如果数据集合的量特别大或者还在增长(相当于未知数据集合总量),该算法依然可以等概率抽样。说蓄水池抽样之前,先说一下等概率随机抽取问题,等概率随机抽取是一个很有用的东西,因为在很多情况下,尤其是搞模式识别时,需要这个东西。比如,我们想从10000个样本中随机抽取5000个作为训练集,5000个作为测试集,那么等概率随机抽取便派上用场了。那么,究竟该如何做等概率随机抽取呢?一般的想法应该是,随机生成一个(0,n-1)之间的 阅读全文
posted @ 2012-11-27 13:21 handspeaker 阅读(19345) 评论(0) 推荐(0) 编辑
摘要:1.贝叶斯学习要了解这三个概念,需要先知道什么是贝叶斯学习。贝叶斯学习就是根据给定数据的先验概率计算每种假设的可能性,它是基于先验和后验概率的乘积的,计算式如下:这个公式的意思是,在某个data出现的情况下,这个data属于某一class类的概率等于这个class的先验概率乘以后验概率,其中P(class)是先验概率,P(data|class)是条件概率。2.MAP(最大后验概率)上面的式子为每一类(class)都求出了在某个data出现情况下,属于这类(class)的概率。然而,大多数时候,我们只是想知道这个data最可能属于哪一类。那么,我们只求出使上个式子左边最大的那个类即可,这就是MA 阅读全文
posted @ 2012-11-18 23:37 handspeaker 阅读(6387) 评论(0) 推荐(0) 编辑