Cifar10训练及测试方法
2018-01-13 16:24
363 查看
参见文章http://blog.csdn.net/hongbin_xu/article/details/76407581
CIFAR-10数据集包括由10个类别的事物,每个事物各有6000张彩色图像,每张图片的大小是32*32。
整个数据集被分成了5个训练集和1个测试集,各有10000张图片,即50000张图片用于训练,10000张图片用于测试(交叉验证)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/70a4f6e5388954a3d9a8367abd565503)
输入指令:
2
随后,会自动下载数据。
如果嫌下载速度慢,可以自己手动下载,再进行自己解压放到对应目录下。
从get_cifar10.sh文件中可以找到url:
http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
打开get_cifar10.sh:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
下载完成后,$CAFFE_ROOT/data/cifar10下多出了一些文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/ec0fdfcfec6344fa87d6010bba3b2ce1)
训练集:
这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
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/ad3a9be798942aeea5d1be31b5372abe)
2
之后会在目录下生成三个文件:
cifar10_test_lmdb:测试集的lmdb文件
cifar10_train_lmdb:训练集的lmdb文件
mean.binaryproto:整个数据集所有图片的均值文件
2
随后就会开始训练。
先打开train_quick.sh看看
2
3
4
5
6
7
8
9
10
11
12
如果使用的是cpu模式,需要到文件中提到的所有prototxt文件中修改solver_mode为cpu;如果使用的是gpu,则不需要更改,默认就已经是gpu模式了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/bb371103da4b29472e2c7fb35432c608)
使用gpu模式很快就训练好了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/522aa81be26f624fc6b000bec6fc719c)
最后训练完时的准确率是75%左右,效果并不是很好。
)
我们不自己从头写python代码了,使用caffe提供的$CAFFE_ROOT/python/classify.py文件。
参考自:http://blog.csdn.net/asukasmallriver/article/details/73089944
打开classify.py:
在图中所示位置添加一行代码,目的是修改均值计算错误 :
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/4a147f0b2082888bfdebd28a5912e1a3)
将预测的结果打印出来:
2
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/a1267d7f113f5d86db2f0b43aebf7bff)
将结果排序,并找到对应的是什么:
添加如下代码到最后:
2
3
4
5
6
7
8
9
10
11
12
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/97d89ee32655da48350d822833a41737)
修改完就可以来测试了,caffe在$CAFFE_ROOT/examples/images下有一些图片。
输入指令:
载入的图片是cat.jpg,预测结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/8c93e10cfab5c7f88d776ca830ae295c)
我另外从百度随便下了几张图片来测试:
输入指令(根据自己的图片的文件名改下就可以了):
2
猫
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/5fc2533b6c26a6cc0d000b824964bc38)
哈士奇居然被识别成猫了,但是我承认这张图片的哈士奇的确不太像“狗”。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/8b844ecc2db57f7a456a8b5743723d33)
狗
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/141c7961b4d9c50786b8ec1faddc4718)
汽车
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/4e6b147bd3dd33684c4b8fcd048bc6ff)
cifar数据集训练的结果识别效果不是很好,准确率较低,这里仅做学习实验用。
简介
网站链接:CIFAR-10CIFAR-10数据集包括由10个类别的事物,每个事物各有6000张彩色图像,每张图片的大小是32*32。
整个数据集被分成了5个训练集和1个测试集,各有10000张图片,即50000张图片用于训练,10000张图片用于测试(交叉验证)。
下载数据
注意:默认用$CAFFE_ROOT表示caffe的根目录。输入指令:
cd $CAFFE_ROOT ./data/cifar10/get_cifar10.sh1
2
随后,会自动下载数据。
如果嫌下载速度慢,可以自己手动下载,再进行自己解压放到对应目录下。
从get_cifar10.sh文件中可以找到url:
http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
打开get_cifar10.sh:
#!/usr/bin/env sh # This scripts downloads the CIFAR10 (binary version) data and unzips it. DIR="$( cd "$(dirname "$0")" ; pwd -P )" cd "$DIR" echo "Downloading..." wget --no-check-certificate http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz echo "Unzipping..." tar -xf cifar-10-binary.tar.gz && rm -f cifar-10-binary.tar.gz mv cifar-10-batches-bin/* . && rm -rf cifar-10-batches-bin # Creation is split out because leveldb sometimes causes segfault # and needs to be re-created. echo "Done."1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
下载完成后,$CAFFE_ROOT/data/cifar10下多出了一些文件:
训练集:
这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
图片格式转换
输入指令:cd $CAFFE_ROOT ./examples/cifar10/create_cifar10.sh1
2
之后会在目录下生成三个文件:
cifar10_test_lmdb:测试集的lmdb文件
cifar10_train_lmdb:训练集的lmdb文件
mean.binaryproto:整个数据集所有图片的均值文件
训练数据集
输入指令:cd $CAFFE_ROOT ./examples/cifar10/train_quick.sh1
2
随后就会开始训练。
先打开train_quick.sh看看
#!/usr/bin/env sh set -e TOOLS=./build/tools $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_quick_solver.prototxt $@ # reduce learning rate by factor of 10 after 8 epochs $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \ --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate $@1
2
3
4
5
6
7
8
9
10
11
12
如果使用的是cpu模式,需要到文件中提到的所有prototxt文件中修改solver_mode为cpu;如果使用的是gpu,则不需要更改,默认就已经是gpu模式了。
使用gpu模式很快就训练好了。
最后训练完时的准确率是75%左右,效果并不是很好。
测试模型
测试时用到了caffe的python接口,所以一定要先编译并配置好了好了pycaffe。如果没有配置好,请先配置好。我以前的博客有讲过如何linux下搭建caffe,最后讲了如何安装pycaffe。(打开链接)
我们不自己从头写python代码了,使用caffe提供的$CAFFE_ROOT/python/classify.py文件。
参考自:http://blog.csdn.net/asukasmallriver/article/details/73089944
打开classify.py:
在图中所示位置添加一行代码,目的是修改均值计算错误 :
mean=mean.mean(1).mean(1)1
将预测的结果打印出来:
# 自己添加 print("Predictions:%s" % predictions)1
2
将结果排序,并找到对应的是什么:
添加如下代码到最后:
# 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])1
2
3
4
5
6
7
8
9
10
11
12
修改完就可以来测试了,caffe在$CAFFE_ROOT/examples/images下有一些图片。
输入指令:
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/cat.jpg foo1
载入的图片是cat.jpg,预测结果如下:
我另外从百度随便下了几张图片来测试:
输入指令(根据自己的图片的文件名改下就可以了):
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/cat2.jpg foo1
2
猫
哈士奇居然被识别成猫了,但是我承认这张图片的哈士奇的确不太像“狗”。
狗
汽车
cifar数据集训练的结果识别效果不是很好,准确率较低,这里仅做学习实验用。
相关文章推荐
- Caffe中用训练好的模型测试,deploy文件的修改方法
- [深度学习] RCNNs系列(1) Ubuntu下Faster RCNN配置及训练和测试自己的数据方法
- matconvnet环境下训练自己的数据集及模型测试-mnist网络结构-cifar10部分数据集
- Matlab的svmtrain从数据集中抽样训练样本和测试样本的方法
- caffe训练cifar10遇到./build/tools/caffe: not found 错误解决方法
- NVIDIA tx2上直接测试训练好的目标检测模型方法
- 第003篇:ArcGIS中基于矢量样本点制作分类训练样本和测试样本的方法。
- affe训练cifar10遇到./build/tools/caffe: not found 错误解决方法
- caffe搭建以及初步学习--win7-vs2013-gtx650tiboost-cuda8.0-cifar10训练和测试-2-完整解决方案cifar10_full_solver.prototxt
- Windows caffe (二) cifar10 demo 训练与测试
- caffe搭建以及初步学习--win7-vs2013-gtx650tiboost-cuda8.0-cifar10训练和测试-2-快速解决方案cifar10_quick_solver.prototxt
- [深度学习] RCNNs系列(1) Ubuntu下Faster RCNN配置及训练和测试自己的数据方法
- caffe 实验中输入数据和label都是图片时,训练或测试数据列表train.txt生成方法(linux指令总结)
- cifar10数据集的训练测试及ResNet20模型测试
- 大数据测试方法
- selenium-6 测试脚本中等待方法
- Android关于gridview平滑滚动定位smoothScrollToPositionFromTop方法测试
- (转)测试用例的设计方法(全)之三 判定表、正交实验
- PCB电性测试方法介绍
- tesseract-ocr训练方法