从去年上研究生以来,渐渐地适应了研究生的生活。
这大半年来做了些什么呢?
本职工作做的有如下:
1.HOG特征+SVM分类器的物体识别算法研究与应用。
带着大学时代的青涩,用着MATLAB测试代码,最坑的事提取样本的时候,还是用MATLAB编程来对视频截图,后来由于要用到一个系统软件上去,转战C++,开始接触OpenCV,三十行代码完成这个任务。
2.Haar特征+Adaboost分类器的物体识别算法研究与应用。
第二个骨头,最烦的就是提取正样本,开始也是用MATLAB截图,后来确实受不了啦,就跑去研究跟踪算法,打算做一个自动提取正样本的东西,后来120行左右的代码实现了,这个也是在OpenCV上四十行代码实现了,但是缺点也随之而来,不断地学习,不断的思考,不断的改进。
3.TLD算法的研究
还没应用,主要还是没搞清楚,调试这个代码费了很多时间,在Ubuntu上装个OpenCV,然后调通了TLD,后来电脑跟不上,只有在Windows上调通,然后学习,PN学习,Bit特征,一步一步的走下去。
意外收获:
1.平台的转换
曾经依赖MATLAB平台,最大的缺点,做的算法如果应用的话就傻掉了,C++编程基础薄弱,本科也没用系统的学习C++编程,后来开始从C++源码库开始,一个一个源文件阅读。
STL库对于做视觉计算,人工智能几乎不可或缺,而OpenCV也是提升效率的不二选择。
个人对OpenCV的认识:
第一层次:看书百度写代码
第二层次:看库源码写代码
第三层次:优化库函数写代码
在第三层次中,如何优化呢?
大量的数据处理,于是开始接触:汇编,intel指令集,CUDA,多线程。
2.关于编程语言的思考
看了一些杂书,一个好的编程语言对于算法的设计和应用至关重要,上层建筑对于基础建设至关重要,就似一个县长在一个贫困县修一条6车道的大路,被群众骂了好些年,后来大家都买了车,发现6车道的路都不够用,不过其他的路更是堵得一塌糊涂。
回到正题,Python,Lua,Go,关注小语言,主要是想摸清语言的特点,而且对于一个非专业的人来说,时间也巨宝贵,但是编程语言原理也需要熟悉,行业顶级期刊上发表的文章,思想很重要,编程是一切的基石,而选择合适的编程语言组合搭配设计一个算法,也就凸显其魅力。
研究最多的还是Lua,首先短小,核心源码就2W行左右,拓展性很强,看了有股冲动,设计一门语言,但是后来看编译原理和编译器设计,编程语言原理,发现还是先好好搞好本行,一步一步来,难度不小,有这时间不如去写一个库。
3.关于库的思考
OpenCV库,OpenGL库,OpenMP库,WINDOWS库,STL库,BOOST库。。。。。。。
在学习算法的过程中,粘贴复制,动手设计了一些算法代码,CSDN,github,后来还是感觉写成一个库,搞个API接口,分门别类,也许库的用途还不止这点,呵呵。
4.linux的学习
shell就是个引子,由于系统的原因,就学了bash,主要还是调试代码,学习算法。
5.算法拓展
特征提取系列算法
主要了解的特征:
HOG特征
SIFT特征
HAAR特征
Gabor特征
BitBP特征
SURF特征
LBP特征
目标跟踪系列算法
主要了解的跟踪算法:
Camshift跟踪
Meanshift跟踪
四种光流法运动估计
分类器系列算法
主要涉及的分类思想
SVM
Adaboost
贝叶斯分类器
决策树
下一个开始 //
Computer Vision
Conf.:
Jour.:
接下来的日子继续看文献,争取也多写几篇博客了。。。