博客正式进入caffe源码精读系列,博主会在阅读源码的过程中将自己认为重要的部分记录下来,整理成笔记。由于博主之前粗略浏览过一遍源码,对caffe的架构和caffe中使用的库有了了解,这些笔记介绍整体工作流程和框架的同时,还将偏重于源码的细节。第一篇博客主要由程序入口开始介绍caffe训练的流程。…

        在机器学习中,有两个很重要的概念,bias and variance,根据学习曲线判断当前的状态是high bias还是high variance来调整机器学习中的参数,以达到理想的效果。多年前学习斯坦福机器学习教程时对这两个概念的影响尤为深刻,鉴于这两个概念又是如此重要,特此整理。…

        caffe提供了将图像转换为lmdb或者leveldb格式的工具,在tool文件夹下的convert_imageset中可以找到对应文件,这个工具在很多例子中都有用到,比如mnist和imagenet,由于caffe默认使用lmdb这种又快又小的格式,我们在处理大量图像时也会用到,而我们如果要根据自身需求进行修改,那就需要读源码了。…

        caffe中需要将数据存储为lmdb、hdf5等数据库格式,caffe自带的convert_image工具可以完成lmdb数据格式的转换,但是遇到浮点数,这个工具就不行了,所以,只有存成hdf5了。对于python存储hdf5,本文分析多个demo的数据生成代码,并作出总结(主要就是贴代码了):…

        谷歌的开源项目protobuf,官方支持四种语言版本,C++、Java、Go、Python,使用protobuf的诸多优点就不多介绍了,在我之前的博客中使用过C++版本的protobuf,如果有兴趣可以参考,这里提供python版protobuf的使用方法,博主在学习caffe,将protobuf数据存为hdf5格式,于是protobuf就也成了C++和python数据交互的接口了,好,我们开始吧!…

        上一节,我们介绍了使用Caffe训练我们自己的图像用于分类,由于我们有ImageNet的例子,所以一切显得非常自然。那么,如果我们要用裸数据来训练网络(用于分类或者回归),那我们应该怎么做呢?这篇博文进行了详细的介绍。…

我们参考caffe中ImageNet的例子来完成图像分类,我们的流程如下

1.参考ImageNet的代码,构建我们自己的数据集,jpg格式的图像分为train和val,即训练集和测试集

2.在文本文件中列出图像和标注

3.修改create_convert脚本,将图像转化为lmdb格式,注意,一定是jpg格式的图像,如果没有进行大小归一化,最好在脚本中进行缩放操作

4.使用make_mean脚本,计算图像均值

5.修改solver_prototxt文件和train_val_prototxt文件中的参数,进行训练…

        Caffe的作者是贾扬清(伯克利大学博士期间成果),其在深度学习科学研究中有着非同一般的地位,尤其是其代码在github上开源,以及CUDA加速的使用,使得普通学者也可以较为轻松的进行训练,介绍就不多说了,作为Caffe的第一课,首先就是Caffe环境配置、编译以及导入IDE中方便调试了,我们开始吧。…

        对于MFC绘图,博主也没有什么真知灼见,只是将自己在学习MFC绘图中遇到的问题进行整理,大部分内容并非原创,博主都在醒目位置给出了出处。包含的内容有DC设备描述表、绘图基础、双缓冲、鼠标控制和MFC中使用OpenGL。希望能有帮助,我们开始吧。…