caffe提供了将图像转换为lmdb或者leveldb格式的工具,在tool文件夹下的convert_imageset中可以找到对应文件,这个工具在很多例子中都有用到,比如mnist和imagenet,由于caffe默认使用lmdb这种又快又小的格式,我们在处理大量图像时也会用到,而我们如果要根据自身需求进行修改,那就需要读源码了。
MFC使用RichEditor显示消息
在VC10的MFC中,RichEditor富文本控件升至2.0版本,现在使用RichEditor可以显示多种内容,这篇博客将提供一个方法,将这个方法封装在类中可以轻松的使用RichEditor显示文本消息,我们开始吧!
利用python生成供给Caffe的hdf5数据
caffe中需要将数据存储为lmdb、hdf5等数据库格式,caffe自带的convert_image工具可以完成lmdb数据格式的转换,但是遇到浮点数,这个工具就不行了,所以,只有存成hdf5了。对于python存储hdf5,本文分析多个demo的数据生成代码,并作出总结(主要就是贴代码了):
python版protobuf的安装和使用
谷歌的开源项目protobuf,官方支持四种语言版本,C++、Java、Go、Python,使用protobuf的诸多优点就不多介绍了,在我之前的博客中使用过C++版本的protobuf,如果有兴趣可以参考,这里提供python版protobuf的使用方法,博主在学习caffe,将protobuf数据存为hdf5格式,于是protobuf就也成了C++和python数据交互的接口了,好,我们开始吧!
使用Caffe进行图像分类
我们参考caffe中ImageNet的例子来完成图像分类,我们的流程如下
1.参考ImageNet的代码,构建我们自己的数据集,jpg格式的图像分为train和val,即训练集和测试集
2.在文本文件中列出图像和标注
3.修改create_convert脚本,将图像转化为lmdb格式,注意,一定是jpg格式的图像,如果没有进行大小归一化,最好在脚本中进行缩放操作
4.使用make_mean脚本,计算图像均值
5.修改solver_prototxt文件和train_val_prototxt文件中的参数,进行训练
Ubuntu下Caffe的编译、配置、导入eclipse
Caffe的作者是贾扬清(伯克利大学博士期间成果),其在深度学习科学研究中有着非同一般的地位,尤其是其代码在github上开源,以及CUDA加速的使用,使得普通学者也可以较为轻松的进行训练,介绍就不多说了,作为Caffe的第一课,首先就是Caffe环境配置、编译以及导入IDE中方便调试了,我们开始吧。
跨平台的protobuf安装配置方案
现在有很多介绍protobuf的文章,而本篇博客与其它文章的不同在于,为不同平台及不同编译环境下适配protobuf提供一体化的解决方案,包括linux,windows系统,同时在Windows系统中控制台 MFC等框架下也会有不同的编译环境,比如你可以选择使用静态库还是动态库等,偶尔,我们还会需要google的其它库,比如glog,接下来将进行详细介绍。
MFC中显示Mat格式图像——Mat转CImage方法
Mat是opencv中的图像格式,如果想要图像在MFC中显示,将Mat格式转为MFC支持的CImage格式是一种较为优秀的解决方案,这篇博客就来介绍在MFC中显示Mat图像的方法。虽然原理相同,但博主还是要介绍两种方式:一种是通过子类化显示控件的方式进行显示,第二种是在父窗口中调用。如果你做的工程比较庞大,博主建议使用子类化控件的方法,当然,如果你是小工程,博主也依然建议你使用子类化的方法,这样不仅使代码结构简单封装良好,而且方便了控件的拓展。
在MFC中使用OpenGL
老外的教程果然还是非常赞的,强烈推荐原版,这篇博客简单介绍一下步骤:
1.新建MFC工程
2.添加Picture Control控件
3.添加一个OpenGL控件类
4.在MFC中使用OpenGL控件
获取博主编译的测试工程(使用VS2013 X64平台,你还需要另外配置OpenGL相关环境),运行效果如左图所示,这个Demo还可以接受鼠标的控制,对模型进行操作。如果你需要多个OpenGL窗口,再实例化这个类,可以很轻易地实现多个窗口的绘制。这里就不翻译老外网站上的教程了,在上面给出了框架搭建的链接,这里就直接介绍该OpenGL类的使用方法吧。
VRML解析——使用OpenGL绘制wrl三维模型
这里,我们首先释出编译好的读取wrl文件的程序,如左图所示,是打开的一个CASIA-3D-Face数据库的三维模型文件,使用Opengl进行了绘制。这个程序还提供了一些快捷键,使我们可以方便的移动模型和视角,如ASDW等。
这里提供了一个编译好的demo的下载链接,请注意,程序必须运行在64位的Windows上,你需要打开prototxt文件,修改你需要打开的wrl文件的目录,由于使用静态库进行编译,你不需要相关环境(Opengl protobuf glog等),但是你可能需要安装VC2013Runtime X64。
当然,你也可以使用此博客中的代码,编译其它版本的程序,下面的内容会默认你已经了解了本博客前两节的内容,对wrl文件的格式和本文读取wrl文件的方式有所了解。在本程序的icp类中包含了OpenGL的相关内容,参考了 LeheOpenGL 的代码设计,如果你对OpenGL还不太了解,推荐经典入门教程:Nehe的OpenGL教程。不多说了,开始吧。
VRML解析——C++处理CASIA-3D-Face数据库wrl文件
虽然VRML语言已经被HTML5取代,但是仍有许多早期的三维模型文件采用wrl文件存储,并且偶尔会在转存成其它文件的过程中遇到问题,于是我们常常需要直接解析wrl文件。这里给需要解析wrl文件的同学指一条明路:Openvrml。
Openvrml本身调用了许多库,可以借助ARToolKit或者OGN进行安装,据说OGN比较容易一些,博主并没有使用过上述工具。而编译openvrml的过程极其痛苦,于是博主自己写了一个解析CASIA-3D-Face数据库中wrl文件的程序,仅供参考。这里附上中科院三维人脸数据库的链接,感谢中科院免费提供的资源。