手把手教你開發基于深度學習的人臉識別【考勤/簽到】系統

    • 人臉識別介紹
    • 平臺環境需求
    • 技術點
    • 系統流程
    • 細節設計
      • 人臉檢測
      • 人臉關鍵點定位
      • 人臉特征提取
        • 模型的訓練
        • 模型的部署
      • MySQL數據庫的使用
      • MFC工程的搭建
    • 軟件使用

人臉識別介紹

人臉識別技術是一項非接觸式、用戶友好、非配合型的計算機視覺識別技術。隨著機器學習、深度學習等技術的發展,人臉識別的應用正日趨完善和成熟。本文將介紹人臉識別技術如何用于考勤/簽到系統。

本文將主要從以下幾個方面闡述:

  • 平臺環境需求
  • 涉及的技術點
  • 人臉識別系統流程
  • 細節設計

平臺環境需求

  • 操作系統:Windows 64位
  • 第三方庫:OpenCV,Caffe,boost
  • 開發語言:C++
  • 數據庫:MySQL

技術點

adaboost算法和CNN用于人臉檢測與定位;?
隨機森林算法/CNN用于人臉關鍵點標定;?
卷積神經網絡用于人臉特征提取;?
MFC用于設計系統操作界面;?
MySQL數據庫用于管理人物-人臉特征數據庫;?
Caffe框架用于上述環節中CNN模型的訓練;?
使用Caffe的C++接口進模型行部署和使用;?
使用connector C++進行MySQL數據庫的連接。

系統流程

考勤系統主要包含兩個操作:注冊和實時識別記錄。

注冊是指管理員通過軟件界面將需考勤人員登記入庫。 這里要輸入待考勤人員的信息。?
實時識別記錄是系統自動對來往人群進行人臉識別,并記錄通行者的身份。

進行注冊的流程如下:

開始注冊?人臉檢測特征提取插入數據庫yes

實時識別的流程如下:

開始實時識別?人臉檢測特征提取搜索數據庫并記錄身份yes

細節設計

人臉檢測

使用OpenCV的人臉檢測器進行人臉的初步檢測,使用Caffe訓練CNN網絡進行人臉的二分類判定,將兩部分合在一起完成人臉檢測。此環節需注意根據應用場景調整參數,做到性能與召回率的平衡。

也可使用Python+OpenCV進行視頻中的人臉檢測,參考這篇文章。

人臉關鍵點定位

關鍵點定位的目標是在確知人臉位置的基礎上,精確定位面部的關鍵點,如下圖示意:

獲得面部關鍵點的目的是進行人臉的對齊和標準化。標準化的人臉輸入可以獲得更高的人臉識別精度。

人臉特征提取

人臉特征提取是根據上述標準化的人臉區域圖塊,提取出數字化的特征。即完成從RGB信息到數值特征的變換。此環節需要盡量使得同一個人物的不同人臉所提取到的特征盡可能相似,而不同人物的人臉所提取的特征盡可能相異。

模型的訓練

人臉識別的CNN網絡模型的訓練采用CASIA-Webface數據庫,具體訓練方式參見我的這篇文章。訓練模型的流程參考我的github項目。

本模型在LFW評測集上達到了接近97%的準確率。具備一定的實用性。

模型的部署

部署主要考慮Caffe在Windows平臺的移植,官方的Caffe對Windows系統并不支持,為了使用Caffe的C++接口,我們需要使用Windows版本的Caffe,微軟出了一個版本的Caffe,參考這里。

MySQL數據庫的使用

MySQL的安裝和配置詳見這里。?
我們使用默認的3306端口,配置好賬戶密碼后,即可創建數據表。

MFC工程的搭建

使用Visual Studio 2013創建MFC工程,設計本軟件的界面。詳細的配置流程參考這里。

本軟件設計界面如下?
界面

主要包括注冊和搜索兩個功能。點擊注冊時,按鈕下方出現輸入框,用于輸入待考察人物的信息。

軟件使用

注冊,點擊注冊按鈕,并選定需要注冊的人臉。?
注冊?
輸入人物信息,并提交到數據庫。?
輸入信息?
搜索,點擊搜索,界面中實時識別人物,并將識別到的信息展示在人臉上。?
搜索

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387679.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重學前端學習筆記(二十二)--選擇器的機制

筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文…

Windows+VS2013爆詳細Caffe編譯安裝教程

1. 安裝cuda Cuda是英偉達推出的GPU加速運算平臺 我這里安裝的是cuda7.5,已經安裝過的忽略,還沒有安裝過的這里有安裝教程.windows下面安裝還是非常簡單的. 點擊打開鏈接 (我的顯卡是1080 現在支持cuda8.0 所以我下的是8.0) 2. 下載cuDNN(其實是個壓縮…

CF 526F Max Mex(倍增求LCA+線段樹路徑合并)

Max Mex 題目地址&#xff1a;https://codeforces.com/contest/1084/problem/F然后合并時注意分情況討論&#xff1a; 參考代碼&#xff1a;1 #include<bits/stdc.h>2 using namespace std;3 #define pb push_back4 #define mkp make_pair5 #define fi first6 #define se…

大學剛畢業,零基礎大數據如何入門?

這篇文章中&#xff0c;本文作者將針對三種不同的、想要進入數據科學領域的人群&#xff0c;給出自己的經驗&#xff0c;幫助他們迅速有效入行。無論是軟件工程師、應屆畢業生&#xff0c;還是完全初學者&#xff0c;都要問自己一個關鍵問題&#xff1a;什么樣的職業軌跡最接近…

Opencv EmguCv 基本識別步驟

{//1.灰度化&#xff0c;豎向邊緣檢測//2.自適應二值化處理//3.形態學處理&#xff08;膨脹和腐蝕&#xff09;//4.輪廓查找與篩選Image<Bgr, byte> simage OriImage; //new Image<Bgr, byte>("license-plate.jpg");//Image<Bgr, Byte> simage…

(轉)Java中的守護線程

Java的守護線程與非守護線程 守護線程與非守護線程 最近在看多線程的Timer章節&#xff0c;發現運用到了守護線程&#xff0c;感覺Java的基礎知識還是需要補充。 Java分為兩種線程&#xff1a;用戶線程和守護線程 所謂守護線程是指在程序運行的時候在后臺提供一種通用服務的線程…

vue項目中對axios的全局封裝

項目中接口會很多&#xff0c;個人喜歡創建api文件對請求統一管理1.新建api文件夾&#xff0c;文件夾下創建 axios.js&#xff0c;login.js2. axios.jsimport axios from axiosimport router from ../router //引入路由是為了做重定向&#xff0c;比如沒有登錄過期定向到登錄頁…

輪廓檢測

輪廓&#xff08;Contours&#xff09;&#xff0c;指的是有相同顏色或者密度&#xff0c;連接所有連續點的一條曲線。檢測輪廓的工作對形狀分析和物體檢測與識別都非常有用。 在輪廓檢測之前&#xff0c;首先要對圖片進行二值化或者Canny邊緣檢測。在OpenCV中&#xff0c;尋找…

【大數據】阿里云大數據助理工程師認證(ACA)課程

阿里云大數據助理工程師認證&#xff08;Alibaba Cloud Certified Associate&#xff0c;ACA&#xff09; 是面向使用阿里云大數據產品的專業技術認證&#xff0c;主要涉及阿里云的大數據計算、存儲、開發平臺&#xff0c;數據應用類的基礎產品。是對學員掌握阿里云大數據產品技…

WebGL——osg框架學習一

從今天開始&#xff0c;我們開始正式的學習osg框架&#xff0c;今天我們學習的是osg的渲染模塊&#xff0c;我們來看一下代碼結構。 所有DrawXXX的js模塊都是渲染的模塊&#xff0c;我們逐一來簡單介紹一下&#xff0c;第一個Drawable.js&#xff0c;這個模塊是描述可繪制對象的…

EmguCV 一些基本操作

一、先是在程序中圖像的導入&#xff0c;我是根據圖像路徑實現&#xff0c;其中path是string類型&#xff0c;是圖像路徑。 IntPtr imgCvInvoke.cvLoadImage(path, Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR); 二、圖像灰度化處理&#xff0c;先創建一幅尺寸大小…

Java字符串分割

java中字符串的分割函數&#xff0c;split("你想要分割的字符", 你想要最多分割為多少段&#xff0c;正整數&#xff09; 注意事項&#xff1a; 1.分割特殊字符考慮轉義字符的使用。如&#xff1a; . \ | 2.第二個參數&#xff1a; 無&#xff1a; 不傳默認分割全部…

OpenCV人臉識別的原理 .

在之前講到的人臉測試后&#xff0c;提取出人臉來&#xff0c;并且保存下來&#xff0c;以供訓練或識別是用&#xff0c;提取人臉的代碼如下&#xff1a; [html] view plaincopy print?void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect,double s…

說一下SEO和SEM到底有哪些區別?

開場白免了&#xff0c;我們直接說與主題相關的。 SEO和SEM到底有什么區別&#xff1f; SEO和SEM到底有什么區別 我們先理解字面意思&#xff1a; SEO&#xff08;Search Engine Optimization&#xff09;&#xff1a;漢譯為搜索引擎優化。 SEM&#xff08;Search Engine Marke…

django模型的繼承

很多時候&#xff0c;我們都不是從‘一窮二白’開始編寫模型的&#xff0c;有時候可以從第三方庫中繼承&#xff0c;有時候可以從以前的代碼中繼承&#xff0c;甚至現寫一個模型用于被其它模型繼承。這樣做的好處&#xff0c;我就不贅述了&#xff0c;每個學習Django的人都非常…

SpringBoot部署項目到Docker倉庫

SpringBoot部署項目到Docker倉庫1.開啟遠程控制端口Centos7開啟方式&#xff1a; vim /lib/systemd/system/docker.service找到ExecStart行 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 重啟docker 啟動 systemctl start docker守護進程…

人臉識別經典方法

這篇文章是擼主要介紹人臉識別經典方法的第一篇&#xff0c;后續會有其他方法更新。特征臉方法基本是將人臉識別推向真正可用的第一種方法&#xff0c;了解一下還是很有必要的。特征臉用到的理論基礎PCA在另一篇博客里&#xff1a;特征臉(Eigenface)理論基礎-PCA(主成分分析法)…

Jquery常用正則驗證

常用校驗的正則表達式var rulesConfig { /** * str.replace(/^\s|\s$/g, ) 解析&#xff1a; str&#xff1a;要替換的字符串 \s : 表示 space &#xff0c;空格 &#xff1a; 一個或多個 ^&#xff1a; 開始&#xff0c;^\s&#xff0c;以空格開始 $&#xff1a; 結束&#x…

svm參數說明

svm參數說明---------------------- 如果你要輸出類的概率&#xff0c;一定要有-b參數 svm-train training_set_file model_file svm-predict test_file model_fileoutput_file 自動腳本&#xff1a;Python easy.py train_data test_data 自動選擇最優參數&#xff0c;自動進行…

poj-3667(線段樹區間合并)

題目鏈接&#xff1a;傳送門 參考文章&#xff1a;傳送門 思路&#xff1a;線段樹區間合并問題&#xff0c;每次查詢到滿足線段樹的區間最左值&#xff0c;然后更新線段樹。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; co…