人脸表情识别 (2) 数据增强

数据增强非常重要,特别是在面对一个分布不是很均匀的数据集的时候。一个好的训练数据集是训练一个良好模型的前提,训练数据做好了在后面的模型训练时往往能够事半功倍。

不多说,上代码

"""
Created on Tue May  7 08:38:42 2019

@author: LZY
"""
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import matplotlib.pyplot as plt
import os

datagen = ImageDataGenerator(
        rotation_range=20,
        width_shift_range=0.1,
        height_shift_range=0.1,
        shear_range=0.1,
        zoom_range=0.1,
        horizontal_flip=True,
        fill_mode='nearest')

dir='E:/BaiduNetdiskDownload/fer2013/train/6'
for filename in os.listdir(dir):              #listdir的参数是文件夹的路径
    print(filename)
    img = load_img(dir+'/'+filename)  # 这是一个PIL图像
    x = img_to_array(img)  # 把PIL图像转换成一个numpy数组,形状为(3, 150, 150)
    x = x.reshape((1,) + x.shape)  # 这是一个numpy数组,形状为 (1, 3, 150, 150)
    # 下面是生产图片的代码
    # 生产的所有图片保存在 `preview/` 目录下
    i = 0
    for batch in datagen.flow(x, batch_size=1,
                              save_to_dir='fer2013TrainDataAdd/6', 
                              save_prefix='6', 
                              save_format='jpeg'):
        i += 1
        if i > 5:
            break  # 否则生成器会退出循环

还是使用的Keras框架,其中封装的 ImageDataGenerator就是我们需要的。正常想要做数据增强一般都需要自己写代码,对图片做一些诸如翻转,平移,旋转之类的操作,而使用ImageDataGenerator会在你设定的参数范围内做随机的变换,大大增多了数据量,数据增强的好处是能提供更多不同的训练数据,对提高最后的识别精度有很大的好处。

我简单介绍以下这段代码,dir是你想要进行数据增强的文件夹,save_to_dir是增强后的图片存放的位置,save_prefix是图片的前缀,这个无所谓,只是自己容易归类和区分而已,save_format是保存格式,就存为jpeg就行,亲测没有问题。ImageDataGenerator里的参数设置建议去看Keras文档,我这里就不赘述了,大体上就是规定了变换的范围,如旋转角度之类的。

给你们看看我处理完的效果。

这些都是生成的数据,直接把这些图片复制到训练数据集对应分类的文件夹中就行了,经过一轮的数据增强之后,我的训练数据从约为28000飙升到了80000左右,精度也提升了很多,特别是对disgust分类的识别精度提高了很多,可以看我的精度对比柱状图,纵坐标为精度提升的百分比。disgust分类的识别精度提升了之前精度的40%。

上图是现在各分类的识别精度,可以和我上一篇博客中未经过数据增强的训练集训练的模型的各分类识别精度做个对比,上一节的图片我就不放了,想要了解可以点击这个链接跳转。

https://blog.csdn.net/qq_38279908/article/details/89952461

下一节我就要搭建模型训练数据了,做好准备!

 

 

  • 11
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值