| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【表情识别】基于卷积神经网络CNN实现人脸表情识别附matlab代码 -> 正文阅读 |
|
[人工智能]【表情识别】基于卷积神经网络CNN实现人脸表情识别附matlab代码 |
1 简介人脸表情蕴含着丰富的情感信息,在人际交往沟通中起非常关键的作用,如何让计算机正确的识别理解人脸表情信息是一项具有重要意义且极具挑战性的工作.随着深度学习的发展,利用深度学习技术实现人脸表情识别成为了表情识别领域新的研究热点.人脸表情特征大多集中在人脸的局部关键区域,如眼睛,眉毛,嘴巴及其周围区域,人们可以忽略人脸的整体信息,而直接借助人脸的局部关键区域信息,来正确的识别人脸图像中的表情类别.因此,如何让深度神经网络对输入的自然场景下的人脸图像中提取出更有区分性的表情特征,从而提升表情识别网络的整体识别精度是表情识别研究的重点.现有的一些人脸表情识别方法中大多通过定位人脸关键点,并裁剪出多个人脸区域,送入网络中然后通过特定的注意力机制等来突出某些对表情分类贡献较大的区域的作用.虽然这能在一定程度上提升识别效果,但同时也会增加网络的计算量,并使网络结构变得更加复杂.自然场景下的人脸图像背景较复杂,往往会受到不同因素的干扰,比如光照变化,遮挡以及头部姿态变化等,实现自然场景下的人脸表情识别更具重要的研究价值和现实意义。 就卷积神经网络而言,其低隐层包括两大部分:卷积层和采样层,高层则是逻辑回归分类器以及由全连接层与多层感知器所对应的隐含层。输入到第一个全连接层的特征图像是提取子采样层以及卷积层的特征而得到的。最后一个输出层属于分类器,以输入图像为对象可利用逻辑回归作出分类,支持向量机算法也同样可以。传统神经网络最为常见的激活函数为 ReLU 和tanh,正是由于上述函数的存在神经网络具备了非线性映射能力。站在数学的视角上对上述函数展开分析,非线性函数 ReLU 和 tanh 对两侧区表现出较小的信号增益,对中央区则表现出较大的增益,就特征空间映射而言,效果还是相当好的。ReLU和 tanh 的公式如下: ?2 部分代码function main clc close all % 创建人脸检测对象 faceDetector = vision.CascadeObjectDetector; % 人脸检测 FaceRecognition(faceDetector); end %% 选择图片 function I = SelectPicture() [FileName,PathName] = uigetfile('*.jpg', '选择一张图片'); if isequal(FileName,0) ? ? disp('没选择图片,请重新选择!') ? ? I = []; else ? ? I = imread(fullfile(PathName,FileName)); end end %% 人脸检测 function [I_faces, bbox] = GetFaces(faceDetector, I) % 检测人脸 bbox = step(faceDetector, I); % 创建一个形状插入对象来绘制边框圈出的检测的结果 if size(I, 3) == 1 % 灰度图像,插入白色或黑色框 ? ? if mean(I(:)) > 128 % 图像较亮,使用黑框 ? ? ? ? shapeInserter = vision.ShapeInserter(); ? ? else % 图像较暗,使用白框 ? ? ? ? shapeInserter = vision.ShapeInserter('BorderColor','White'); ? ? end else % 彩色图像,插入红色框 ? ? shapeInserter = vision.ShapeInserter('BorderColor','Custom','CustomBorderColor',[255 0 0]); end % 绘制边框以圈出结果 I_faces = step(shapeInserter, I, int32(bbox)); end %% 图片人脸检测 function FaceRecognition(faceDetector) % 鼠标单击响应 ? ? function BtnDownFcn(h, evt) ? ? ? ? FaceRecognition(faceDetector); ? ? end % 选择文件 I = SelectPicture(); if isempty(I) ? ? return end % 人脸检测 [I_faces, bbox] = GetFaces(faceDetector, I); close all % 创建figure对象 fig1 = figure; pos1 = get(fig1,'Position'); set(fig1,'Position',[10 pos1(2:4)]); set(fig1,'WindowButtonDownFcn',@BtnDownFcn); % 显示 figure(fig1) imshow(I_faces) title('单击此图片选择另一图片识别') for i = 1:size(bbox, 1) ? ? text(bbox(i, 1), bbox(i, 2), mat2str(i), 'color', 'r') end % 检测 intbbox = int32(bbox); for i = 1:size(intbbox, 1) ? ? xs = intbbox(i, 1); ? ? xe = xs + intbbox(i,3); ? ? ys = intbbox(i, 2); ? ? ye = ys + intbbox(i,4); ? ?? ? ? % 创建figure ? ? if rem(i, 16) == 1 ? ? ? ? fig2 = figure; %#ok ? ? end ? ?? ? ? subplot(4, 4, rem(i-1, 16)+1) ? ? imshow(I(ys:ye, xs:xe, :)) ?? ? ? title(mat2str(i)) ? ? ss=I(ys:ye, xs:xe, :); ? ? ? imwrite (ss,strcat('f\',mat2str(i),'.jpg')) end end 3 仿真结果4 参考文献[1]刘汝涵. 基于卷积神经网络的人脸微表情识别及其可视化研究. 云南大学. 博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。部分理论引用网络文献,若有侵权联系博主删除。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 21:46:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |