人脸表情识别笔记

摘要

通过人脸图片对表情进行识别,受人脸姿态等其他因素地影响很大,如果达到80则是一个不错地成绩,但是该任务不仅仅是一个分类问题。

1 数据

在实际的任务中图片的脸部是不规整的,可能是一个人或者多个人;图片的大小可能不统一;数据集较大,数量庞大,不能一次性输入内存进行计算,而应该分批。

1.1 数据存储方法

形式一: 同一类的图片放到同一个文件夹下,文件夹以类别进行命名,如下图所示。
以类别存储示例
形式二: 两个文件夹,一个文件夹存放图片数据(非结构化数据),另一个CSV文件存储标签和路径。CSV文件中每一行以逗号隔开,左侧存储图片的地址,右边存储图片对应的标签。
结构化存储在这里插入图片描述

1.2 数据探索

利用python脚本对数据进行探索,统计不同种类数据的数量,即获得样本数。主要利用OS库中的listdir和isdir函数。

import os
import numpy as np
lst_dir = os.listdir('./')  #返回该路径下的所有子文件,获得一个list
for path in lst_dir:
	if os.path.isdir(path):  # 看遍历的path是一个文件夹还是一个文件,如果是文件夹继续
		lst_jpg = os.listdir(path)  # 获得path文件夹下的所有子文件
		print(len(np.unique(lst_jpg)))  # 通过np的unique对文件进行选择,过滤重复文件

2 Pipline的制定

对于CV方向利用openCV和python的框架进行。什么是Pipline?中文意思是管道,也就是制定一个处理流程。对于当前表情识别可按照下图指定Pipline。第一部分为数据预处理,第二部分为数据建模,而且第一部分数据预处理占用大部分时间,模型上一般利用现有模型。Pipline
1、截取人脸: 利用传统方法进行,这样速度很快。可以利用openCV或者face orgnal包。但是截取的人脸大小可能是不同的。
2、缩放和裁剪: 设置固定值,强行进行缩放可能造成脸部变形。这样就需要将缩放与裁剪相结合,找到最长或最短的一个维度,按照最短的放缩,然后再进行一个裁剪就会减小形变。
3、图片格式转换: 现有图片是一个RGB图片,但是我们不关注颜色,只关注脸部的形变,因此可以将其转化为灰度图片。对于PNG格式图片多了alpha通道,表示透明度。因此输入图片时要检查图片格式是否相同,通道数是否相同。
4、训练集划分: 在划分训练集时要划分出一个验证集,以评估训练的效果。
5、数据加载: 加载数据时应该分批加载,而不应该一股脑扔进内存,占用大量内存。
6、深度学习模型: 首先选择网络结构;然后设计损失函数,分类可以用交叉熵;再确定优化方法,利用Adam、SGD等。
7、模型训练: 模型训练时一般会用到数据增强,在数据加载后进行随机数据增强,一般放在数据加载与深度学习模型中间。加载数据后进行增强,然后输入模型进行训练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值