点击上方“蓝字”关注我们
背景介绍
大家好~今天跟大家分享的案例是关于“分类”的深度学习案例,从之前的案例中我们知道深度学习在图片分类上效果十分强大。比如说,深度学习一个经典的分类问题是“猫狗大战”,即让AI看一张图片,然后它将告诉你这张图片里是究竟是猫还是狗。
由Kaggle举办的风靡一时的猫狗分类竞赛..
经过参赛选手们的不懈努力,在所有目前已公开的模型中,我们点开了一个获赞数较高的模型,它能够在训练集和测试集上同时取得接近90%的准确率。
![44a01e9d1833e3472d455931f2f86ca6.png](https://i-blog.csdnimg.cn/blog_migrate/9bf91436e2570b311cf3a9e61835e304.png)
横轴是训练次数,纵轴是准确率,粗的点是训练集结果,细的线是验证集结果..
既然AI能够在关于猫狗的二分类问题中取得这么好的效果,那我们试试加大力度,看一看AI能不能解决一些难度更高的图像分类问题呢~
在西方艺术发展历史上,艺术风格经历了多次变革,我们随机选取了四个时期,即中世纪、文艺复兴、后文艺复兴和现代艺术时期,然后把这些图片收集起来,分类别存在电脑里,作为数据准备。
下边给大家展示的四幅图,就分别是这四个时期的作品之一,有看官能认出来每一张图片分别属于哪一个时期吗?(相信大部分朋友应该和我一样傻傻分不清~~)
![971a224dda9cdad16ca6a4ad09e7c147.png](https://i-blog.csdnimg.cn/blog_migrate/e38ced84c3ab909b9e1329a3983fba79.jpeg)
所以有人能告诉我图3是啥吗..
数据介绍
我们通过公开网站找到各个时期的画作,作为演示案例,随机选取了每个时期的一部分画作进行分析,包括中世纪(80张)、文艺复兴(80张)、后文艺复兴(80张)、现代艺术(90张)。按照深度学习的数据划分方式,我们把这些照片储存在训练集文件夹(/data/train)和测试集文件夹(/data/validation),每个时期的画作又各自储存在各自的文件夹中。
图像数据生成器:在读入每一张图片的同时,对图像进行像素增减、旋转、平移或放缩等操作,达到识别度更高的效果,也就是所谓的“数据增强”。
从深度学习库keras中导入ImageDataGenerator这个类,然后对图像的变换进行声明,在创建这个类的时通过传入参数达到想要的效果,以下是每一个参数的含义。
![113f1c5f176b39f4e283f65f6e96389d.png](https://i-blog.csdnimg.cn/blog_migrate/827989b3f0c6a69410444f91ed2ef53a.png)
除了传入参数以外,IMSIZE是我们传入图片的大小,train_generator是训练集数据生成器,validation_generator是测试集数据生成器。
在使用ImageDataGenerator时,调用flow_from_directory函数,它告诉程序target_size(图像大小)是299×299,batch_size(每次训练图片的数量)是50,class_mode是'categorical',声明这是一个多分类问题。在测试集生成器中也传入了相应的参数,具体的参数取值可以在代码中找到哦~以下是详细代码:
from keras.preprocessing.image import ImageDataGenerator
IMSIZE=299
train_generator = ImageDataGenerator(
rescale=1./255,
shear_range=0.5,
rotation_range=30,
zoom_range=0.2,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True).flow_from_directory('../case2-picture style/data/train',
target_size=(IMSIZE, IMSIZE),
batch_size=50,
class_mode='categorical')
validation_genera