Cifar-10数据集的训练与测试

本文介绍如何使用Caffe框架在Ubuntu 14.04环境下搭建开发环境,下载并处理CIFAR-10数据集,进行训练及测试,最终实现图像分类任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


开发环境:ubuntu14.04+caffe(cpu)
参考博客: http://blog.youkuaiyun.com/hongbin_xu/article/details/76407581

1.简介


 Cifar-10由60000张32*32的RGB彩色图片构成,共10个分类。50000张训练,10000张测试(交叉验证)。这个数据集最大的特点在于将识别迁移到了普适物体,而且应用于多分类(姊妹数据集Cifar-100达到100类,ILSVRC比赛则是1000类)。

2.下载数据

找到caffe根目录:输入./data/cifar10/get_cifar10.sh下载数据,时间有点长
./data/cifar10/get_cifar10.sh
如果嫌下载速度慢,可以自己手动下载,再解压放到对应目录下。
从get_cifar10.sh文件中可以找到url:
http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
下载后:
1111
训练集:
这5个文件就是分成了5份的那50000张图片。
data_batch_1.bin
data_batch_2.bin
data_batch_3.bin
data_batch_4.bin
data_batch_5.bin
测试集:
测试数据集,总共10000张图片。
test_batch.bin
类别说明:
说明了整个cifar-10数据集所包括的10个事物类别。
batches.meta.txt

3.图片格式转换

输入指令:
cd $CAFFE_ROOT
./examples/cifar10/create_cifar10.sh
problem:
./build/examples/cifar10/convert_cifar_data.bin: not found 

可能原因:没有编译caffe,接下来在caffe根目录下进行编译:

make all

再次运行就可以了
2222
之后会在目录下生成三个文件:
cifar10_test_lmdb:测试集的lmdb文件
cifar10_train_lmdb:训练集的lmdb文件
mean.binaryproto:整个数据集所有图片的均值文件
3

4.训练数据集


gpu模式直接运行:
./examples/cifar10/train_quick.sh
cpu模式需要到train_quick.sh文件中提到的所有prototxt文件中修改solver_mode为cpu再运行。(用cpu训练在我的电脑上需要一小时的时间)
先用cifar10_quick_solver.prototxt迭代4000次,再用 cifar10_quick_solver_lr1.prototxt,在上一次训练的基础上再迭代1000次。其中 cifar10_quick_solver.prototxt的学习率为0.001,cifar10_quick_solver_lr1.prototxt的学习率为0.0001
在solver的设置中,每100次迭代会输出一次训练损失,测试是500次迭代输出一次
训练阶段,lr是学习率,loss是训练函数。测试阶段,score 0是准确率,score 1是损失函数。
训练完成后,准确度约为75%
4

5.测试模型

测试时用到了caffe的python接口,所以一定要先编译并配置好了好了pycaffe。
caffe/python/classify.py文件,打开classify.py:
1.在图中所示位置添加一行代码,目的是修改均值计算错误 :
mean=mean.mean(1).mean(1)
5
2.将预测的结果打印出来:
print("Predictions:%s" % predictions) #在如图位置添加

6

3.添加如下代码到最后,目的是将结果排序,并找到对应的是什么:

# match the result
    labelNums = len(predictions[0])
    labels = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
    for i in range(labelNums):
        if i == 0:
            maxPrediction = predictions[0][i]
            maxIndex = i
        else:
            if maxPrediction < predictions[0][i]:
                maxIndex = i
                maxPrediction = predictions[0][i]
    print(labels[maxIndex])


7
修改完就可以来测试了,caffe在$CAFFE_ROOT/examples/images下有一些图片:
python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5  --center_only  examples/images/cat.jpg foo
8
python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_5000.caffemodel.h5  --center_only  examples/images/cropped_panda.jpg foo
9
python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_5000.caffemodel.h5 --center_only  examples/images/dog3.jpg foo

10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值