女朋友啥时候怒了?Keras识别面部表情挽救你的膝盖
【导读】随着计算机和AI新技术及其涉及自然科学的飞速发展,整个社会上的管理系统高度大大提升,人们对类似人与人之间的交流日渐疲劳而希望有机器的理解。计算机系统和机械人如果需要像生物那样具备解读和传达感情的战斗能力,将彻底转变人与计算机系统两者之间的的关系,使计算机系统需要更佳地为生物公共服务。表情识别是感情解读的根基,是计算机系统解读人们感情的必要,也是人们探寻和解读人工智能的有效途径。
from keras.models import Sequential
from keras.layers import Conv2D,MaxPool2D,Activation,Dropout,Flatten,Dense
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator,img_to_array,load_img
from keras.models import load_model
下面为了充分利用数据集,对图片加入一些裁剪等方面操作:
train_datagen = ImageDataGenerator(rotation_range = 40, # 随机旋转度数width_shift_range = 0.2, # 随机水平平移height_shift_range = 0.2,# 随机竖直平移rescale = 1/255, # 数据归一化shear_range = 20, # 随机错切变换zoom_range = 0.2, # 随机放大horizontal_flip = True, # 水平翻转fill_mode = 'nearest', # 填充方式
)
下面是网络层的搭建,利用卷积神经网络,下面每段代码有注释:
添加一个卷积层,传入固定宽高三通道的图片,以32种不同的卷积核构建32张特征图,
卷积核大小为3*3,构建特征图比例和原图相同,激活函数为relu函数。
model.add(Conv2D(input_shape=(IMG_W,IMG_H,3),filters=32,kernel_size=3,padding='same',activation='relu'))
再次构建一个卷积层
model.add(Conv2D(filters=32,kernel_size=3,padding='same',activation='relu'))
构建一个池化层,提取特征,池化层的池化窗口为2*2,步长为2。
model.add(MaxPool2D(pool_size=2,strides=2))
继续构建卷积层和池化层,区别是卷积核数量为64。
model.add(Conv2D(filters=64,kernel_size=3,padding='same',activation='relu'))
model.add(Conv2D(filters=64,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D(pool_size=2,strides=2))
继续构建卷积层和池化层,区别是卷积核数量为128。
model.add(Conv2D(filters=128,kernel_size=3,padding='same',activation='relu'))
model.add(Conv2D(filters=128,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D(pool_size=2, strides=2))model.add(Flatten()) #数据扁平化
model.add(Dense(128,activation='relu')) #构建一个具有128个神经元的全连接层
model.add(Dense(64,activation='relu')) #构建一个具有64个神经元的全连接层
model.add(Dropout(DROPOUT_RATE)) #加入dropout,防止过拟合。
model.add(Dense(CLASS,activation='softmax')) #输出层
接下来是训练和保存的代码:
model.fit_generator( #模型拟合train_generator, #训练集迭代器steps_per_epoch=len(train_generator), #每个周期需要迭代多少步(图片总量/批次大小=11200/64=175)epochs=EPOCHS, #迭代周期validation_data=test_generator, #测试集迭代器validation_steps=len(test_generator) #测试集迭代多少步)
model.save('{}.h5'.format(SAVE_PATH)) #保存模型
然后预测显示我们的代码:
image = load_img("56.jpg")
image = image_change(image)
img=cv2.imread("56.jpg")
img_PIL = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
myfont = ImageFont.truetype(r'C:/Windows/Fonts/simfang.ttf', 40)
draw = ImageDraw.Draw(img_PIL)
draw.text((300, 10), label[model.predict_classes(image)][0], font=myfont, fill=(200, 100, 0))
img_OpenCV = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
cv2.imshow('frame', img_OpenCV)
cv2.waitKey(0)
如果要调用摄像头就是这样的代码:
cap = cv2.VideoCapture(0)
while True:_,frame = cap.read()bg = "temp.png"cv2.imwrite(bg,frame)image = load_img("temp.png")#plt.imshow(image)image = image_change(image)img=cv2.imread("temp.png")img_PIL = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
myfont = ImageFont.truetype(r'C:/Windows/Fonts/simfang.ttf', 40)
draw = ImageDraw.Draw(img_PIL)
draw.text((300, 10), label[model.predict_classes(image)][0], font=myfont, fill=(200, 100, 0))
img_OpenCV = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
cv2.imshow('frame', img_OpenCV)
key = cv2.waitKey(1) & 0xFFif key == ord("q"):break
(*本文为 AI科技大本营投稿文章,转载请微信联系 1092722531)
◆
精彩推荐
◆
12月6-8日,深圳!2019嵌入式智能国际大会,集聚500+位主流AIoT中坚力量,100+位海内外特邀技术领袖!9场技术论坛布道,更有最新芯片和模组等新品展示!点击链接或扫码,输入本群专属购票优惠码CSDNQRSH,即可享受6.6折早鸟优惠,比原价节省1000元,学生票仅售599元。
推荐阅读
女朋友啥时候怒了?Keras识别面部表情挽救你的膝盖相关推荐
- 使用Keras的面部表情识别
使用Keras的面部表情识别 项目实施... 介绍和概述 Keras是一个非常强大的开源Python库,它运行在TensorFlow.Theano等其他开源机器库之上,用于开发和评估深度学习模型并利用 ...
- 毕业设计总结——自闭症儿童识别面部表情训练系统
很开心完成了这个app,在新年愿望里其中有一个就是能有app上线AppStore,虽然未达到但相信会完成的. 从15年12月份考研之后到今年的3月初,根据指导老师黄玲老师的需求做需求分析文档.设计文档 ...
- 使用 Keras 进行面部表情识别
图片来源 : Pinterest 简介和概述 Keras是一个非常强大的开源Python库,它运行在其他开源机器库(如TensorFlow,Theano等)之上,用于开发和评估深度学习模型,并利用各种 ...
- 看下巴识心情,这个AI项链挂胸前也能识别面部表情
兴坤 发自 凹非寺 量子位 报道 | 公众号 QbitAI 瞄一瞄你的下巴,就知道你有没有在难过. 这个温馨的场景对应的不是窝在怀里的小猫咪,而是-- Neck Face,一款用于监控情绪的智能工具. ...
- tkinter+socket&MySQL+keras识别minst手写数字
tkinter + socket + keras + MySQL识别Minst手写数字 环境配置 代码 服务端 客户端 主函数main.py 类Window.py 实验报告部分 一.总体功能说明 1. ...
- 卷积神经网络CNN——使用keras识别猫咪
在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题.但是对于大多数人来说,CNN仿佛戴上了神秘的面纱.我经常会想,要是能将神经网络的过程分解,看一看 ...
- Kaggle ICML2013 fer2013人脸表情识别/面部表情识别:训练、调优、调试与踩坑
目录 概要: 问题来源: 论文对此比赛的说明: 选择原因: 实现与优化思路: 前置: 数据处理: 原csv数据的读取与分割: csv数据转图片和tfrecord的存取: tfrecord接生产队列供模 ...
- 使用深度学习方法实现面部表情包识别
1.动机 人类面部表情丰富,但可以总结归纳为 7 类基本表情: happy, sad, surprise, fear, anger, disgust, and neutral.面部表情是通过面部肌肉活 ...
- 高姿态下的面部表情识别系统
效果展示: python表情.性别识别 面部表情识别 (FER) 在计算机安全.神经科学.心理学和工程学方面有大量应用.由于其非侵入性,它被认为是打击犯罪的有用技术.然而,FER 面临着几个挑战,其中 ...
最新文章
- [转载] static class 静态类(Java)
- 使用Cookie记录信息
- 我的博客今天2岁104天了,我领取了…
- 目前MPLS有哪些备份方案?
- 基于迭代次数的多中心定位分类法
- matlab特征点数量,特征点检测效果评估(matlab代码)
- CSocket类的使用
- 企业以太坊联盟发布了愿景文件
- vue.js点击更多加载更多数据,双数组合并
- Elasticsearch】es memory locking requested for process but memory is not locked
- ANSI C typedef
- WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba
- 第一章、天天生鲜项目框架搭建
- Django接口文档
- cs61b实验记录(八)project 3:BearMaps 基于OSM的伯克利地图web应用
- Chrome小恐龙游戏前端修改代码【含原理和代码】
- 【华为校招】【校招】【Java】叠积木
- 铲雪车(snow) UVA10203 Snow Clearing 题解
- Microsoft 提供的 USB 驱动程序
- 索尼爱立信滑盖机java_可爱Walkman滑盖机 索尼爱立信W100i评测