折腾了两周多,终于搞定了Win7+Ubuntu双系统,以及Ubuntu下的CUDA开发环境,下面就可以开始学习了。
首先关于Ubuntu下的C语言开发需要选择一个集成开发环境(主要是进行关键字、错误提示之类的提高效率),可以采用Eclipse+gcc,当然具体编译过程我想还是熟悉一下make,毕竟Linux是离不开make的,也就是下面这段时间主要先要完成这部分的配置和熟悉。然后则完成CUDA、QT、OpenMP、MPI在Eclipse下的配置,当然QT、OpenMP和MPI是不着急的,暂时还用不到。
再从模式识别方面,我希望按照分层模块化的方式整理一套自己的算法库,基本上按照如下的大体框架
应用层: 表情识别应用程序
服务层: 人脸检测 人脸跟踪 人脸特征点定位 人脸预处理 特征提取 表情分类
模块层: 人脸检测 人脸跟踪 人脸特征点定位 人脸几何归一化 人脸光照归一化 特征提取 表情分类
算法层: 常用图像处理算法(仿射变换、频域变换、小波变换...) 常用模式识别算法(PCA、LDA、Boosting...)
基础层: Utils IO Math Matrix Image Geometry Dadabase ...
懒得画框图,直接文字按照框图放一下,相信大家看得懂的,基础层的作用主要是对一些原有的接口进行封装或者定义最基本的数据结构和方法,从而方便复用和改变(如控制文本输出为Text还是Binary等);算法层则针对图像处理和模式识别两个方面进行整理,主要是因为学习过程中必然会尝试多种算法,归类整理有利于复用,并且结构清晰;模块层按照表情识别所涉及的功能模块划分,并以统一的接口对外提供功能,但是一个模块可能对应多种算法,如特征点定位可能采用ASM和AAM分别写一套等;服务层则将各功能模块以服务方式部署并对外提供访问接口;应用层则是最终与用户交互的体现功能的客户端。
上述框架我最终会以半开源的方式对外提供(因为有部分可能会与实际工作接近,所以即便简化功能也不便提供源代码)。另外,这个框架只是用来自己学习和完善,所以并不可能是OpenCV那样完整的框架(有时候从头做起才能收获更多),具体使用到哪些就填充哪些。
最后10.14日前计划:
1.完成Eclipse及其CUDA环境配置,调用现有SDK例程,顺利完成编译和运行(CUDA调试可能需要双显卡,不知道optimus能不能算)
2.完成Ubuntu下OpenMP、MPI、QT的开发环境配置
3.完成上述算法库的框架搭建,开始写基础层的代码
4.开始看CUDA开发的相关讲座,熟悉Demo程序
BSKER 于2011.10.04