摘要: 为了让文章不那么枯燥,我构建了一个精灵图鉴数据集(Pokedex)这都是一些受欢迎的精灵图。我们在已经准备好的图像数据集上,使用Keras库训练一个卷积神经网络(CNN)。
为了让文章不那么枯燥,我构建了一个精灵图鉴数据集(Pokedex)这都是一些受欢迎的精灵图。我们在已经准备好的图像数据集上,使用Keras库训练一个卷积神经网络(CNN)。
深度学习数据集
上图是来自我们的精灵图鉴深度学习数据集中的合成图样本。我的目标是使用Keras库和深度学习训练一个CNN,对Pokedex数据集中的图像进行识别和分类。Pokedex数据集包括:Bulbasaur (234 images);Charmander (238 images);Squirtle (223 images);Pikachu (234 images);Mewtwo (239 images)
训练图像包括以下组合:电视或电影的静态帧;交易卡;行动人物;玩具和小玩意儿;图纸和粉丝的艺术效果图。
在这种多样化的训练图像的情况下,实验结果证明,CNN模型的分类准确度高达97%!
CNN和Keras库的项目结构
该项目分为几个部分,目录结构如下:
如上图所示,共分为3个目录:
1.数据集:包含五个类,每个类都是一个子目录。
2.示例:包含用于测试卷积神经网络的图像。
3.pyimagesearch模块:包含我们的SmallerVGGNet模型类。
另外,根目录下有5个文件:
1.plot.png:训练脚本运行后,生成的训练/测试准确性和损耗图。
2.lb.pickle:LabelBinarizer序列化文件,在类名称查找机制中包含类索引。
3.pokedex.model:序列化Keras CNN模型文件(即“权重文件”)。
4.train.py:训练Keras CNN,绘制准确性/损耗函数,然后将卷积神经网络和类标签二进制文件序列化到磁盘。
5.classify.py:测试脚本。
Keras和CNN架构
我们今天使用的CNN架构,是由Simonyan和Zisserman在2014年的论文“用于大规模图像识别的强深度卷积网络”中介绍的VGGNet网络的简单版本,结构图如上图所示。该网络架构的特点是:
1.只使用3*3的卷积层堆叠在一起来增加深度。
2.使用最大池化来减小数组大小。
3.网络末端全连接层在softmax分类器之前。
假设你已经在系统上安装并配置了Keras。如果没有,请参照以下连接了解开发环境的配置教程:
2.设置Ubuntu 16.04 + CUDA + GPU,使用Python进行深度学习。