2加载fer2013数据集

utils.py

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

def load_data(data_file):
    """ loads fer2013.csv dataset
    # Arguments: data_file fer2013.csv
    # Returns: faces and emotions
            faces: shape (35887,48,48,1)
            emotions: are one-hot-encoded
    """
    data = pd.read_csv(data_file)
    pixels = data['pixels'].tolist()
    width, height = 48,48
    faces = []
    for pixel_sequence in pixels:
        face = [int(pixel) for pixel in pixel_sequence.split(' ')]
        face = np.asarray(face).reshape(width,height)
        faces.append(face)
    faces = np.asarray(faces)
    print(faces.shape)
    #faces = preprocess_input(faces)
    faces = np.expand_dims(faces,-1)
    df = pd.get_dummies(data['emotion'])
    emotions = df.as_matrix()
    return faces, emotions

def preprocess_input(images):
    """ preprocess input by substracting the train mean
    # Arguments: images or image of any shape
    # Returns: images or image with substracted train mean (129)
    """
    images = images/255.0
    return images

该函数输入的是fer2013.csv文件路径,返回值是一个元组,包含faces图像矩阵以及emotions的one-hot-encoded矩阵。
data = pd.read_csv(data_file)
利用pandas读取csv文件到data变量。
pixels = data[‘pixels’].tolist() 返回一个列表,列表中每个数据如下:

70 80 82 72 58 58 60 63 54 58 60 48 89 115 121 119 115 110 98 91 84 84 90 99 110 126 143 153 158 171 169 172 169 165 129 110 113 107 95 79 66 62 56 57 61 52 43 41 65 61 58 57 56 69 75 70 65 56 54 105 146 154 151 151 155 ...

列表中每个数据都是表情图片像素点的值的集合,用空格分隔。

接下来,遍历图像列表,

for pixel_sequence in pixels:
        face = [int(pixel) for pixel in pixel_sequence.split(' ')]
        face = np.asarray(face).reshape(width,height)
        faces.append(face)

遍历图像列表,将每一个图片像素数据先用空格分隔,然后转换为列表,之后在转换为48*48的矩阵,最后加入到列表faces。

faces = np.asarray(faces)

将列表faces再次转换成numpy矩阵,此时faces的shape为(35887,48,48)

 faces = np.expand_dims(faces,-1)

扩充faces的维度,扩充之后的faces的shape为(35887,48,48,1),做此步操作的原因是,神经网络的输入为图片,格式为(height,width,通道信息)。

 df = pd.get_dummies(data['emotion'])

pd.get_dummies(data[‘emotion’])获得每一个表情分类的one-hot表示,返回的是一个dataframe,最后调用

emotions = df.as_matrix()

将类型转换为矩阵

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值