书籍《深度学习 21天实战Caffe》

版权声明: https://blog.csdn.net/qccz123456/article/details/82049215
第一章 什么是深度学习

  学霸,训练效果比较好,学渣,训练不充分,学痴,训练过拟合。
  泛化:通过明确未知系统的输入输出对,自动实现系统内部算法,对未知输入也能产生正确输出。
  训练集、验证集、测试集
  深度学习热门开始于2012年多伦多大学Geoffrey Hinton的学生在ImageNet竞赛中获得双冠军。
  Google的TensorFlow和AlphaGo,Hinton在Google,Microsoft的CNTK,Facebook的Torch,LeCun在Facebook,Amazon的Paas模式、NVIDIA的GPU硬件和cuDNN加速库,百度国内最早,运用FPGA到AI中,阿里用深度学习在商品搜索,腾讯的社交数据,中国科学院计算所陈云霁提出深度神经网络处理器寒武纪,科大讯飞的智能语音和语音技术。
  商汤科技SenseTime引领深度学习,构建AI行业解决方案;北京旷世科技Face++视觉服务平台;涂鸦致力于提供普通硬件转变智能硬件的解决方案;格灵深瞳致力于三维计算机视觉技术;Dress+搜索时尚商品,Linkface人脸识别技术。

第二章 深度学习的过往

  传统机器学习技术设计特征提取器Feature Extractor转化为特征向量。
  监督学习使用随机梯度下降SGD,反向传播算法,卷积神经网络ConvNet四基本原则:局部互联、共享权值、下采样以及使用多个卷积层。由于相对位置特征形成一个基本图案可能会有些许变化,可靠检测该图案可以使用粗粒度位置实现。
  模型参数远大于数据量,过拟合问题;模型参数远小于数据量,欠拟合问题。

第三章 深度学习工具汇总

Caffe
  Convolutional Architecture for Fast Feature Embedding伯克利视觉和学习中心开发基于C++/Cuda/Python的卷积神经网络架构,提供命令行、Matlab和Python接口,作者贾扬清。实现CNN,而非RNN,速度快,适合二维图像。
Torch & OverFeat
  轻量级脚本语言Lua,功能全。
MxNet
  面对效率和灵活性设计。
TensorFlow
  Google开发,异构分布式系统上的大规模机器学习架构。
Theano
  Python开发,但计算速度慢。
CNTK
  微软开发,针对windows系统最好。

第四章 准备Caffe环境

Mac、Ubuntu、RHEL/Fedora/CentOS、Windows均可安装。
  sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
  sudo apt-get install –no-install-recommends libboost-all-dev
  sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
  sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
  若无CUDA可以修改makefile成只有CPU模式。

第五章 Caffe依赖包解析

  安装以下依赖包可以指定用户目录便于移植 –prefix=/home/yourname/local_install
ProtoBuffer
  Google开发用于实现内存与非易失存储介质(如硬盘)交换的协议接口,建立统一的参数描述文件proto。
Boost
  C++的准标准库,功能强大,跨平台,caffe主要使用智能指针。
GFLAGS
  主要起到命令行参数解析的作用。
GLOG
  Google开发用于记录应用程序日志的库,可选择不同日志级别,C++标准输入输出接口。
BLAS
  Basic Linear Algeria Subprograms主要用到数学计算是矩阵和向量计算,实现有Intel的MKL、ATLAS、OpenBLAS。Caffe使用OpenBLAS负责数值计算,该库直接影响Caffe的运行性能,GPU端有cuBLAS,类似OpenBLAS。
HDF5
  美国国家高级计算应用中心的高效存储和分发科学数据的新型数据格式,用于存储不同类型图像、文件,可在不同类型机器上传输。
OpenCV
  最流行的开源计算机视觉库
LMDB和LEVELDB
  Lightning Memory-Mapped Database Manage闪电般内存映射型数据库管理器,为Caffe提供数据管理,将各种数据转换为统一的Key-Value存储。LMDB已大部分替代LEVELDB。
Snappy
  用于压缩和解压的C++库,比Zlib更快,但文件要大20%-100%。
Caffe
  若以上的库是手动编译,则需要将以上依赖库目录加入到caffe的Makefile.config文件的INCLUDES_DIRS和LIBRARY_DIRS中。
  运行测试代码:需要导入LD_LIBRARY_PATH环境变量:
  export LD_LIBRARY_PATH=/home/yourname/local_install/lib:$LD_LIBRARY_PATH
  export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  若使用Matlab或Python的接口,需要编译make matcaffe或make pycaffe。
  生成可发布安装包,供其他调用:make distribute。

第六章 运行手写体数字识别例程

  MNIST大型手写体数字数据库,需将原数据转换成LMDB数据格式
  LeNet-5模型,输入blob为bottom,输出blob为top。更大的模型有AlexNet、GoogleNet、VGG等。
  模型采用ProtoBuffer文本格式表达,最终训练的模型权值保存在caffemodel文件中,训练状态保存在solverstate文件中。

猜你喜欢

转载自blog.csdn.net/qccz123456/article/details/82049215