CIFAR-10模型训练与可视化
2016-12-19 21:54
441 查看
通过caffe深度学习框架在cifar10数据集训练得到模型,观察并分析模型的train loss 、test loss及accuracy曲线,并对得到的caffemodel进行测试。
数据集介绍:cifar-10是一个使用非常广泛的物体识别图像数据集,CIFAR-10数据中包含了60000张32×32的彩色图像,其中训练集50000张,测试集10000张。共有10类物体,分别是airplane,automobile,bird,cat,deer,dog,frog,horse,ship,truck。
图1 CIFAR-10数据部分示例图片
实验环境:Ubuntu14.04+caffe+gtx960+cuda7.5
网络模型
(1)下载数据集
首先需要从CIFAR-10网站上下载数据集并将图片转为lmdb格式以及计算二进制格式均值,caffe框架中的example中已包含相应的文件,依次执行即可。caffe对于训练数据格式,支持lmdb、h5py等等,其中lmdb数据格式常用于单标签数据,像分类等,经常使用lmdb的数据格式。对于回归等问题,或者多标签数据,一般使用h5py数据的格式。此外,将图片减去均值再进行训练和测试,可以提高速度和精度。
(2)模型
CIFAR-10是典型的卷积神经网络结构,包含相应的卷积层,池化层,修正线性单元以及最顶层带有分类器的归一化采样层。在cifar10_quick_train_test.prototxt中可以看到相应的网络结构设置,下图是网络结构的可视化示意图。
图2 CIFAR-10 CNN Model网络结构可视化示意图
(3)训练模型
在.prototxt文件里面定义了网络的结构,输入cifar10的lmdb文件,通过softmax函数计算损失与准确率。在solver.prototxt文件里定义了训练的各种参数。最后运行train_quick.sh文件,即可获得训练结果。可以在terminal中看到训练过程中loss参数以及迭代次数等信息。最后训练的结果保存在cifar10_quick_iter_5000中。
图3 模型训练过程中显示信息
可以看
4000
到,在训练过程中,每次迭代里,lr表示的是learning rate,loss为training function。在测试部分,score 0表示accuracy,score 1便是testing loss function。
4.python接口模型训练及可视化显示
下面使用caffe的python接口进行分类并可视化显示,绘制loss以及accuracy曲线。这里采用的是jupyter notebook来进行曲线绘制。
在这里使用cifar10_full_train_test.prototxt中的网络结构模型
迭代次数niter = 40000
图4 训练过程有关数据显示
图5 loss与accuracy曲线
5.使用模型分类新数据
训练完成后我们得到模型:
cifar10_quick_iter_4000.caffemodel.h5
cifar10_quick_iter_4000.solverstate.h5
下面是测试使用的deploy模型结构图
图6 模型结构图
下面是测试使用的图片,为一张马的图片。
图7 测试图片
下面是分类结果以及对应标签的概率。
分类结果:
对应标签的概率:
数据集介绍:cifar-10是一个使用非常广泛的物体识别图像数据集,CIFAR-10数据中包含了60000张32×32的彩色图像,其中训练集50000张,测试集10000张。共有10类物体,分别是airplane,automobile,bird,cat,deer,dog,frog,horse,ship,truck。
图1 CIFAR-10数据部分示例图片
实验环境:Ubuntu14.04+caffe+gtx960+cuda7.5
网络模型
(1)下载数据集
首先需要从CIFAR-10网站上下载数据集并将图片转为lmdb格式以及计算二进制格式均值,caffe框架中的example中已包含相应的文件,依次执行即可。caffe对于训练数据格式,支持lmdb、h5py等等,其中lmdb数据格式常用于单标签数据,像分类等,经常使用lmdb的数据格式。对于回归等问题,或者多标签数据,一般使用h5py数据的格式。此外,将图片减去均值再进行训练和测试,可以提高速度和精度。
cd $CAFFE_ROOT ./data/cifar10/get_cifar10.sh ./examples/cifar10/create_cifar10.sh
(2)模型
CIFAR-10是典型的卷积神经网络结构,包含相应的卷积层,池化层,修正线性单元以及最顶层带有分类器的归一化采样层。在cifar10_quick_train_test.prototxt中可以看到相应的网络结构设置,下图是网络结构的可视化示意图。
图2 CIFAR-10 CNN Model网络结构可视化示意图
(3)训练模型
在.prototxt文件里面定义了网络的结构,输入cifar10的lmdb文件,通过softmax函数计算损失与准确率。在solver.prototxt文件里定义了训练的各种参数。最后运行train_quick.sh文件,即可获得训练结果。可以在terminal中看到训练过程中loss参数以及迭代次数等信息。最后训练的结果保存在cifar10_quick_iter_5000中。
图3 模型训练过程中显示信息
可以看
4000
到,在训练过程中,每次迭代里,lr表示的是learning rate,loss为training function。在测试部分,score 0表示accuracy,score 1便是testing loss function。
4.python接口模型训练及可视化显示
下面使用caffe的python接口进行分类并可视化显示,绘制loss以及accuracy曲线。这里采用的是jupyter notebook来进行曲线绘制。
在这里使用cifar10_full_train_test.prototxt中的网络结构模型
迭代次数niter = 40000
图4 训练过程有关数据显示
图5 loss与accuracy曲线
5.使用模型分类新数据
训练完成后我们得到模型:
cifar10_quick_iter_4000.caffemodel.h5
cifar10_quick_iter_4000.solverstate.h5
下面是测试使用的deploy模型结构图
图6 模型结构图
下面是测试使用的图片,为一张马的图片。
图7 测试图片
下面是分类结果以及对应标签的概率。
分类结果:
对应标签的概率:
相关文章推荐
- VggNet10模型的cifar10深度学习训练
- 【深度学习】笔记7: CNN训练Cifar-10技巧 ---如何进行实验,如何进行构建自己的网络模型,提高精度
- cifar-10图像插值方法对训练模型结果的影响
- CIFAR_10处理数据——搭建模型——训练模型
- 深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
- CIFAR-10模型训练python版cifar10数据集
- CIFAR-10训练模型
- Caffe for Windows 训练cifar10 VS2013
- CNN训练Cifar-10技巧
- TensorFlow CIFAR-10训练例子报错解决(亲测有效)
- Windows平台上Caffe的训练与学习方法(以数据库CIFAR-10为例)
- Tensorflow CIFAR-10训练例子报错解决
- tensorflow笔记:模型的保存与训练过程可视化
- Deep Learning-TensorFlow (5) CNN卷积神经网络_CIFAR-10进阶图像分类模型(下)
- Caffe for windows 训练minst和cifar-10
- TensorFlow学习——CIFAR-10(python实现数据可视化)
- 用数据玩点花样!如何构建skim-gram模型来训练和可视化词向量
- Tensorflow CIFAR-10训练例子报错解决
- caffe学习(二) CIFAR-10数据集上训练
- Windows平台上Caffe的训练与学习方法(以数据库CIFAR-10为例)