- 浏览: 344338 次
- 性别:
- 来自: 上海
最新评论
-
liweicong:
这个识别的准确率是多少呢?训练的那个circle和四个参数代表 ...
交通标牌检测与识别 -
13227819390:
请问在博主的percolation代码块里的isFull函数, ...
并查集算法关于渗透模型中虚拟节点的使用问题 -
zzzimooo:
请问博主,大概在130行:Bitmap bmp = getRe ...
OpenCVforAndroid应用之银行卡号识别 ------ 实战篇 -
u010074054:
您好,我想请教一下关于银行卡识别的问题,您方便加一下我QQ吗? ...
OpenCVforAndroid应用之银行卡号识别 ------ 实战篇 -
javams:
闵大荒是什么?
闵大荒之旅(一)
文章列表
闵大荒之旅(八) ----- 时间都去哪了
- 博客分类:
- 毕业设计
HOG+SVM做行人检测,是非常经典的做法,但是真正使用过的人可以发现,就OpenCV提供的检测算算法而言,其实时性是非常差的。事实上,OpenCV中还做了一定的优化,比如利用CPU对多尺度行人检测进行一个并行计算,但是,在我笔 ...
闵大荒之旅(七) ----- 源码移植
- 博客分类:
- 毕业设计
要把OpenCV的源码改写成CUDA,那么在改写成并行计算之前,我们需要保证CUDA C中(特别是CUDA中的核函数)能够支持OpenCV定义的类型,否则我们只有重写。
所以在将OpenCV源码改写成CUDA并行计算之前,我首先将OpenCV源码改写成了普通的C语言版本------这里的改写指的是:一些结构体的重写、Mat数组和普通一维二维数组的转换等等,具体情况下面的代码将见分晓。
这次改写的是ComputeGradient函数
注意:这里保留了Mat img,因为这里到时候移植到CUDA C中要改写成PtrstepSZ变量,这里就不费功夫把他改成数组了。
#includ ...
闵大荒之旅(六) ----- 初探HOG源码
- 博客分类:
- 毕业设计
目前的进度有些缓慢了。。。
要想用CUDA实现HOG特征的并行计算,那么首先就要熟悉HOG计算的相关内容、思想,以便实现并行计算方案。
关于HOG特征的介绍,在网上有非常非常多,其中英文原文:http://vision.stanford.edu/teaching/cs231b_spring1213/papers/CVPR05_DalalTriggs.pdf
故这里不作详细介绍,简单摘抄其他博客内容进行介绍:
HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口):
1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);
2)采用Gamma校正法对输入图 ...
参考http://www.cnblogs.com/dwdxdy/p/3528711.html博客,加之以实践环节,我们可以知道有几种使用到GPU运算的方法:
1.利用OpenCV中提供的GPU模块
2.单独使用Cuda API编程
3.利用OpenCV中提供接口,并结合Cuda API编程
如果仅仅使用OpenCV中的GPU函数,就像博客(三)中演示一下,的确非常的简单而且可以得到比较理想的效果,但是缺点也是显然的,这种直接利用别人的函数是非常不灵活的。很多情况下,并行计算都会存在 ...
闵大荒之旅(四) ---- CUDA预热
- 博客分类:
- 毕业设计
上一回演示了使用OpenCV中集成的gpu部分进行gpu编程,实现hog+svm算法对行人进行检测,检测效果对比得出gpu运行时间要远比cpu运行时间小,更加具有实时性。但是直接使用OpenCV中的函数,显得过于呆板,灵活性较差,于是,为了将gpu运算牢牢掌握在自己手里,我选择CUDA编程,接下来,我简单的介绍一下gpu、cuda的一部分内容。
1.CPU是顺序处理;GPU是并行处理,并行计算将大大缩短时间;
2.CUDA是NVIDIA公司推出的语言风格与C语言很相似的一款通用架构,必须要在NVIDIA公司生产的显卡上使用;
3.CUDA虽然是对GPU并行计算的一个编程框架,但是 ...
在使用cuda进行编程之前,我们不妨再来看看OpenCV中的效果是什么样子的,那么这一次,我将使用OpenCV来进行HOG+SVM的行人检测。
事实上,HOG+SVM在行人检测上的应用在网上已经有了非常丰富的资料,可以说,这个技术相对来说是比较成熟的,那么此次应用OpenCV进行行人检测的实现主要目的如下:
1.了解HOG+SVM在行人检测上的实际效果,并借此熟悉OpenCV中相关程序的编写
2.比较CPU与GPU的运行差别
3.引入我对HOG以及SVM的原理性学习
事实上,我们可以参考http://docs.opencv.org/2.4.9/modules/refman.htm ...
閔大荒之旅(二) --- 熟悉熟悉環境
- 博客分类:
- 毕业设计
本次我所要完成的項目是 基於GPU加速的行人檢測系統前言
GPU 加速的计算是利用一颗图形处理器 (GPU) 以及一颗 CPU 来加速科学、工程以及企业级应用程序。工业与学术界的数据科学家已将 GPU 用于机器学习以便在各种应用上实现开创性的改进,这些应用包括图像分类、视频分析、语音识别以及自然语言处理等等。我們實驗室的方向是無人駕駛,這個領域最近也是非常火熱,更有人直言三至五年無人駕駛將得以普及。而無人駕駛的必要條件之一就是要能快速、準確地識別出道路情況,相比於串行順序工作方式的CPU,那麼以多核並行計算的工作方式的GPU在運算速度方面將提供更大的優勢,這對於識別的實時性是非常有幫助的。 ...
人生总不能过的那么潇洒吧,不能想做的就做,不想做的就撒手不干,人还是要适当地逼自己一下吧。至少现在我只能这么安慰一下自己。
坐了14个小时的火车+一个多小时的地铁+半个小时的步行,我终于来到阔别已久的闵大荒,我的大学生涯竟然将在这里结束,我的研究生阶段即将在这里开始。一切对我来说都是陌生的,陌生的往往伴随着刺激!是的,我很激动和兴奋,不一样的校园环境,不一样的同学,我也是不一样的心情。还有三十八天就交大120周年校庆了,然而留给我毕业设计的时间也就两个多月了。想当初还没决定来上海的时候,我想着花两个星期做出毕设一个星期写完论文就这么水水就过去了,然而现在不行了,留给我的是一个一个新颖的难题 ...
机器学习算法 ---- 正规方程组
- 博客分类:
- 机器学习
监督学习之正规方程组
上一篇博客是介绍了梯度下降法,旨在每一次迭代都从下降梯度最大的方向进行,最终找到全局最大值!但是,这样的效率往往是不高的,无论是批量梯度下降法还是改进后的随机梯度下降法,在大样本的情况下都需要进行迭代。那么今天学习的正规方程组就希望用一个式子就将参数表示出来。
数学概念和定理的引入
这里要得到正规方程组,需要一些高等数学和线性代数的知识,在此引入:(公式太难打了)
对于上图中的定理,我给出证明如下(6过程颇多,有兴趣的可以联系我): 于是,正规方程组推导如下:
以上便是推导过程,相比于迭代,正规方程组将直接得出参数值,无疑提高了效率
...
机器学习算法 ---- 梯度下降法
- 博客分类:
- 机器学习
机器学习在当今社会应用越来越广泛,如计算机视觉、机器人控制、无人机无人车技术等等,都离不开机器学习算法。而机器学习并不像学习一门语言那样简单,算法的实质是数学,有了数学的推导结果,运用什么样的语言那 ...
上文中讲述了两种在android平台中使用opencv的办法,这里我将使用的是opencvforandroid的方法,也就是直接使用opencv提供的Java的API,这种方法对开发者来说是比较简单省事的。由于算法原理在《银行卡号识别》中已经阐述过,这里不再详细介绍,直接上关键代码!
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.andro ...
前阵子的考试、旅游让我有很长一阵子没来博客看看,现在寒假了,是时候写点、看点新的东西了!
前面我主要围绕着基于OpenCV的机器学习算法在图像识别处理上的应用来展开学习的,当然这些个技术(如银行卡号识别)最终 ...
一、提取方法的修正
上回说道,我们使用cvFindContours函数来找银行卡上的数字的外包矩形,从而从银行卡上将数字抠下来进行识别,但是,使用后会发现有如下两个问题:
(1)不好筛选
提供的图片大小不一样,那么数字的外包矩形框的大小也就不一样,如果简单地采用面积的办法进行筛选,那么这种方法的适应性是非常的差的。
(2)外包矩形框的不确定性
我们来看看数字8的外包矩形框
...
在进行完预处理之后,我们可以开始用算法识别数字了。首先我们不做那么复杂的、一连串银行卡数字的识别,而是做一个数字的测试。
一、机器算法的引入-----K近邻算法
K最近邻(k-Nearest Neighbour,KNN)分类算法是一个理论上比较成熟的算法,也是最简单的机器学习算法之一。顾名思义,k最近邻实际上就是取和待分类物最相似的k个模板,然后这k
上回书说道,我们对银行卡进行了一系列的预处理后,得到了下面的结果:
银行卡下半部分严重影响到了检测的效果,所以在进行机器学习前,我们还需要做一点处理,把下半部分的噪声给消除掉。
思路:首 ...