CAFFE框架训练

CAFFE框架训练

  • caffe框架的“.sh”文件要在绝对目录下运行

  • blob(binary large object),二进制大对象,是一个可以存储二进制文件的容器。

  • 待续
  • caffe训练完成后会生成两个文件caffemodel和solverstate。solverstate相对于caffemodel多了一些数据,例如模型名称,当前迭代次数等。两者的功能不同,caffemodel是模型训练完后保存的结果,在测试阶段用来分类。solverstate是用来恢复训练的,防止意外终止而保存的快照。

5 caffe依赖包解析

* caffe的第三方依赖软件包都可以安装到本地’/home/username/local_install/’下,这样方便caffe从一台服务器移植到另一台服务器后,不需要编译、安装

5.1 ProtoBuffer

  • Google开发的一种可以实现内存与非易失存储介质(如硬盘文件)交换的协议接口
  • 利用ProtoBuffer协议,用户只需要建立统一的参数描述文件(proto),然后利用protoc编译就能让协议细节等关键部分代码自动生成,节省了大量的开发、调试时间。
  • caffe中*solver.prototxt文件中的参数从文件中读到内存的过程就是由ProtoBuffer完成的。
  • ProtoBuffer的api接口caffe.pb.h和caffe.pb.cc就是用于解析caffe参数配置文件、将模型权值序列化/反序列化到磁盘的协议接口。

5.2 Boost

  • c++准标准库

5.3 GFLAGS

  • 在caffe中起到命令行参数解析作用
  • 与ProtoBuffer功能类似,但是参数输入源不同

5.4 GLOG

  • 记录日志的库文件

5.5 BLAS

  • 线性运算库,包括矩阵、向量的计算。

5.6 HDF5

  • 一种高效存储和分发科学数据的新型数据格式

5.7 OpenCV

  • 世界上最流行的开源计算机视觉库
  • caffe利用opencv完成图像的存取的预处理

5.8 LMDB和LEVELDB

  • 在caffe中提供数据管理,将原始数据(JPEG图片、二进制数据)转换为统一的key-value存储,便于caffe的datalayer获取这些数据。
  • 存储的是“键值对”

16 caffe可视化方法

16.1 数据可视化

matlab可以将二进制数据进行可视化

16.2 模型可视化

(1)网络结构可视化
推荐模型可视化工具:http://ethereon.github.io/netscope/#/editor
(2)网络权值可视化

16.3 特征图可视化

底层响应特征图:关注不同细节,背景或主体的纹理或轮廓。
高位响应特征图:变得局部且稀疏,用于剔除不相关内容并提取目标的重要特征。

16.4 学习曲线

caffe运行产生的log重定向到cifar.log文件
./example/cifar/train-quick.sh >& cifar.log &
“>&”表示所有的标准输出(stdout)和标准错误(stderr)
“&”将命令放入后台执行
tail cifar.log 实时观测log文件更新

17 caffe的迁移和部署

17.1 从开发测试到生产部署

(1)caffe在不同平台的迁移和部署
开发测试:离线训练,选择训练数据,设计模型参数,优化调试训练过程,得到满足发布的训练模型。例如:*caffemodel
生产部署:在线识别,获取在线数据,利用模型进行处理,返回结果给客户端。
(2)嵌入式平台
Jetson TX1 :嵌入式CPU+GPU平台,*caffemodel拷贝至SD卡,插入开发板,设置合理参数,机器获得相应智能。

17.2 使用Docker

(1)容器不同于虚拟机,不需要运行操作系统,而是共享主机上的操作系统。
(2)全新的自动化运维工具,实现开发测试环境和生产部署环境的平滑迁移,提高开发线上的效率。

18 关于ILSVRC不得不说的一些事儿

18.1 ImageNet 数据集

18.2 ILSVRC比赛项目

18.2.1 图像分类(CLS)
分类:对图像进行分类
18.2.2 目标定位(LOC)
单目标定位:只定位一种类别的目标
18.2.3 目标检测(DET)
多目标定位:定位图片中不同类别的目标
18.2.4 视频目标检测(VID)
18.2.5 场景分类

19

19.1 图像分类

(1)挑战

  • 观测角度变化
  • 光照条件变化
  • 物体自身形变
  • 物体部分遮挡
  • 背景杂波影响
  • 类内差异

(2)案例

  • 服装识别
  • 车型识别
  • 花卉识别
  • 食物识别
  • 茶叶、香烟识别
  • 交通标志识别

19.2 图像中的字符识别

(1)OCR(optical character recognition)光学字符识别
文本资料图像—-> 文字信息

(2)案例

  • 身份证实名认证:上传身份证,识别身份证文字信息,进行数据库比对,完成实名认证。

19.3 目标检测

R-CNN系列、YOLO系列

19.4 人脸识别

19.5 自然语言处理

20

20.1 caffe缺陷

20.1.1不支持任意数据类型

  • caffe大部分数据结构(如Blob、Layer、Net、Solver等)都是模版类,通过实例化模版类来支持多种数据类型。
  • caffe只支持float和double两种类型网络。原因是caffe依赖Blas库进行基本线性运算,Blas不支持的库,caffe同样不支持。
  • caffe创建网络时一旦使用某种类型,整个网络中各层就都是相同类型。(通过模版参数传递)

20.1.2 不够灵活的高级接口

caffe支持三种接口: 命令行、matlab和python

20.1.3 繁杂的依赖包

相比与pytorch和tf,caffe的依赖环境太过负责。

20.1.4 堪忧的卷积层实现

20.1.5 架构之殇

主要体现在caffe新连接layer
(1)需要写forward、backward以gradient update函数
(2)如果需要gpu加速,还需要写gpu版本
(3)新增层需添加proto描述,同时需要添加caffe.proto中芯层的id,防止与其他层冲突。
(4)只支持单机多卡并行计算,不支持多机多卡分布式计算。
(5)只支持数据级别并行,不支持模型级别并行。

20.1.6应用场景局限

主要面向计算机视觉,对于语音和文字数据不支持。

你可能感兴趣的:(CAFFE,机器学习,CAFFE)