1 简介
随着计算机应用的发展和人们对信息保密意识的增强,人脸识别技术作为一种生物识别技术越来越受到人们的重视.而卷积神经网络的出现大大提高了计算机对图像内容的识别和判断能力,因此我们考虑将卷积神经网络应用于人脸识别技术,形成一套以卷积神经网络为技术核心的人脸识别系统.
就卷积神经网络而言,其低隐层包括两大部分:卷积层和采样层,高层则是逻辑回归分类器以及由全连接层与多层感知器所对应的隐含层。输入到第一个全连接层的特征图像是提取子采样层以及卷积层的特征而得到的。最后一个输出层属于分类器,以输入图像为对象可利用逻辑回归作出分类,支持向量机算法也同样可以。传统神经网络最为常见的激活函数为 ReLU 和tanh,正是由于上述函数的存在神经网络具备了非线性映射能力。站在数学的视角上对上述函数展开分析,非线性函数 ReLU 和 tanh 对两侧区表现出较小的信号增益,对中央区则表现出较大的增益,就特征空间映射而言,效果还是相当好的。ReLU和 tanh 的公式如下:
2 部分代码
function varargout = pushbuttonrlkjl(varargin) % PUSHBUTTONRLKJL MATLAB code for pushbuttonrlkjl.fig %人脸库建立按钮对应的窗体 % PUSHBUTTONRLKJL, by itself, creates a new PUSHBUTTONRLKJL or raises the existing % singleton*. % % H = PUSHBUTTONRLKJL returns the handle to a new PUSHBUTTONRLKJL or the handle to % the existing singleton*. % % PUSHBUTTONRLKJL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in PUSHBUTTONRLKJL.M with the given input arguments. % % PUSHBUTTONRLKJL('Property','Value',...) creates a new PUSHBUTTONRLKJL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before pushbuttonrlkjl_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to pushbuttonrlkjl_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help pushbuttonrlkjl% Last Modified by GUIDE v2.5 19-Dec-2019 12:03:28% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @pushbuttonrlkjl_OpeningFcn, ...'gui_OutputFcn', @pushbuttonrlkjl_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []); if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1}); endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT% --- Executes just before pushbuttonrlkjl is made visible. function pushbuttonrlkjl_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to pushbuttonrlkjl (see VARARGIN)% Choose default command line output for pushbuttonrlkjlhandles.output = hObject;% Update handles structure guidata(hObject, handles);% UIWAIT makes pushbuttonrlkjl wait for user response (see UIRESUME) % uiwait(handles.figurepushbuttonrlkjl);% --- Outputs from this function are returned to the command line. function varargout = pushbuttonrlkjl_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); %人脸库建立按钮对应的窗体 % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;% --- Executes on button press in pushbuttonsplz. function pushbuttonsplz_Callback(hObject, eventdata, handles) % hObject handle to pushbuttonsplz (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) capturefacesfromvideo;% --- Executes on button press in pushbuttonspjz. function pushbuttonspjz_Callback(hObject, eventdata, handles) % hObject handle to pushbuttonspjz (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) shipingzhuantupian;% --- Executes on button press in radiobuttonfh. function radiobuttonfh_Callback(hObject, eventdata, handles) % hObject handle to radiobuttonfh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close(gcf); pause(1); cnnFaceRecognition;% Hint: get(hObject,'Value') returns toggle state of radiobuttonfh
3 仿真结果
4 参考文献
[1]丁冠祺, 刘宇涵, 杨皓博. 基于卷积神经网络的人脸识别[J]. 信息记录材料, 2018, 19(9):2.
**部分理论引用网络文献,若有侵权联系博主删除。**
5 MATLAB代码与数据下载地址
见博客主页