Keras and Convolutional Neural Networks (CNNs)神奇宝贝分类

先下好资源及源代码,贴上论文地址

五类神奇宝贝样本在230左右,素材多样,包括卡通形象卡片玩具等。

工程的结构:

1.数据集包含五类。2.有6个检测图片来检测。3.包含smallerVGGNet模型类。还有其他文件,plot就是打出来的损失和准确率函数,lb.pickle是索引用的(不知),pokedex.model是模型文件用于存放各参数,train是训练程序,classify是测试程序。

还提供了安装Keras教程,以及在云测试。

使用的图像是96*96*3通道的图像。利用了dropout抑制过拟合,以及same pool来缩减空间维度。从3 x 3减少到2 x 2的最大池大小,以确保不会过快地减少空间维度。

将原始图片转成规定大小,并将图片转成数组:

image = cv2.resize(image, (IMAGE_DIMS[1], IMAGE_DIMS[0]))

image = img_to_array(image)

利用数据增强技术增加训练集数量,减少过拟合。

还讲解了模型参数的保存。

在此之前还要做一下命令行的讲解,其实他所讲的命令行就是在执行命令运行该脚本时加上要处理的图片位置。

在此强调:python中文件指令使用/;存储文件所用格式:目录/名称,要保存的图片;在图片上显示文字cv2.putText

 

cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细。

程序运行时间:

import time

start = time.clock()

run_function()

end = time.clock()

print str(end-start)

现在前面的说明都已经讲完并实现了。下面开始全面解读学习小精灵的分类网络。

训练:

首先是smallervggnet.py文件,主要定义网络结构。引入必要库,都是keras上的。定义了smallervgg类,包含h,w,d,c,后面开始加入各种结构。有网络结构图可以参考。

然后是训练脚本train.py。先导入库,再写命令行导入,可用可不用。然后是重要变量的设置。迭代次数EPOCHS选择为100,BS设置batch的大小。IMAGE_DIMS确定了图片的大小。遍历每张图片按照固定大小转成数组,取出标签更新。后面数据的处理,打印数据大小信息,训练和测试8:2分。然后使用了数据增强data augmentation,增加数据集大小。最后编译模型并训练,保存参数,写入文件,画出损失函数准确度等曲线。

测试:

在classify.py文件里,还是先导入必要包,还是有命令行参数加持。接着将输入的图片大小规范,加载模型标签等,最后用于显示。准确与否是根据文件名与预测的标签是否一致。其中测试时的代码model.predict是从model上带的,就像训练代码中的model.fit_generator是Keras中的用于训练的方法,所以predict也是在创建model时所导入的预测方法。

 

模型缺陷是少量样本,颜色对结果的影响较大。

Keras and Convolutional Neural Networks (CNNs)神奇宝贝分类_第1张图片

如果对你有所帮助,谢谢您的鼓励^_^

红包还不收?

你可能感兴趣的:(Keras and Convolutional Neural Networks (CNNs)神奇宝贝分类)