您的位置:首页 > 其它

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数据的格式。此外,将图片减去均值再进行训练和测试,可以提高速度和精度。

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 测试图片

下面是分类结果以及对应标签的概率。

分类结果:



对应标签的概率:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: