999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Tensorflow人臉識別系統設計 ①

2021-01-13 07:54:10趙厚科
關鍵詞:特征模型

吳 晶, 趙厚科

(1.東北石油大學秦皇島分校,河北 秦皇島 066004;2.西南民族大學電氣信息工程學院,四川 成都 610225)

0 引 言

一個基于深度學習的人臉識別系統是學習機器學習的最好的一個案例。系統是基于深度學習平臺Tensorflow所搭建的人臉識別系統,通過攝像頭獲取視頻,使用opencv自帶的分類器定位人臉[1],并且在每一幀圖像中截取人臉,使用卷積神經網絡進行訓練人臉識別。

1 模塊功能和結構劃分

系統共分為四個部分,實時人臉截取模塊、圖片處理模塊、CNN搭建和訓練模塊以及測試模塊。

實時人臉截取主要負責采集人臉圖片,通過USB攝像頭截取人臉數據,使用OpenCV定位人臉,同一數據格式,并最終保存人臉圖片。

本地圖片處理模塊主要用于處理在網絡上下載下來作為第三個分類類別使用的圖片,其主要功能是將圖片讀入,使用opencv定位人臉,然后將人臉圖片保存成我設定好的規格以便使用。

CNN搭建和訓練模塊主要完成搭建神經網絡、劃分訓練集與測試集,深度學習訓練,訓練模型的保存,是整個系統的關鍵部分[2]。

測試部分主要來調用攝像頭捕獲人臉圖片,然后讀入之前保存好的訓練成熟的網絡模型進行識別。

2 項目原理

2.1 卷積神經網絡

卷積神經網絡是一種具有卷積運算和深度結構的前饋神經網絡,是深度學習的典型算法之一。卷積神經網絡具有表示學習能力,能夠根據其層次結構對輸入信息進行分類,基本框架見圖1。

圖1 卷積神經網絡基本框架

2.1.1 卷積層

其中在卷積神經網絡中存在著由許多卷積單元組成的卷積層[3],并且可以通過利用反向傳播算法來優化各個卷積單元的參數。其中提取輸入的不同特征是由卷積運算提供的,第一卷積層只能提取邊緣、直線和角度等低級特征。更多的網絡層可以迭代地從低級特征中提取更復雜的特征。可以將每個過濾器描繪成一個窗口,該窗口在圖像的尺寸上滑動并檢測屬性。濾鏡在圖像上滑動的像素數量稱為步幅。步幅為1意味著濾波器一次移動一個像素,其中2的步幅將向前跳過2個像素。

圖2 提取特征向量并簡化數據量

在圖2所示的例子中,可以看到一個垂直線檢測器。原始圖像為6×6,它使用3×3濾鏡進行掃描,步長為1,從而產生4×4尺寸輸出。而過濾器僅對其視野左右列中的部分感興趣。通過對圖像的輸入求和并乘以3×3濾波器的配置,得到8+1+2-5-3-2=-2。然后濾波器向右移動一步,然后計算0+6+3-8-0-1=0。0然后進入-2右側的位置。此過程將持續到4×4網格完成為止。之后,下一個特征圖將使用它自己的唯一過濾器/內核矩陣計算自己的值。

2.1.2 池化層

圖3顯示的池化層處理過程。池化層的目的是為了來進一步降低維度,通過聚合卷積層收集的值或所謂的子采樣進行降維。除了為模型提供一些正則化的方案以避免過度擬合之外,這還將減少計算量。它們遵循與卷積層相同的滑動窗口思想,但不是計算所有值,而是選擇其輸入的最大值或平均值。這分別稱為最大池化和平均池化。

圖3 池化層處理過程

這兩個組件是卷積層的關鍵構建塊。然后,通常會重復此方法,進一步減少特征圖的大小尺寸,而且會增加其深度。每個特征圖將專門識別它自己獨特的形狀。在卷積結束時,會放置一個完全連接的圖層,其具有激活功能,例如Relu或Selu,用于將尺寸重新整形為適合的尺寸送入分類器。例如,如果你的最終轉換層為3×3×128矩陣,但你只預測10個不同的類,則需要將其重新整形為1×1152向量,并在輸入分類器之前逐漸減小其大小。完全連接的層也將學習它們自己的特征,見圖4。

2.2 人臉識別分類器

2.2.1 Haar-like特征

Haar特征分為:邊緣、線性、中心特征和對角線特征,這些特征相互組合成特征模板。特征模板內有白色和黑色兩種矩形,模板的特征值定義為白色矩形和減去黑色矩形(在opencv實現中為黑色-白色)。

圖4 神經網絡框架總圖

Haar的特征值反映了圖像灰度的變化。例如,面部的某些特征可以簡單地用矩形特征來說明,但是矩形特征只對一些簡單的圖形結構敏感,比如邊緣和線段,所以這些特征模板只能描述特定方向,例如水平、垂直、傾斜的人臉結構。如果將這樣的矩形設置在非人臉臉區域的話,計算出的特征值應該和臉部特征值有所不同,所以這些矩形為了區別臉部和非臉,去定量化臉部特征[4]。

圖5 人臉識別特征模板

圖6 矩形特征在人臉圖像的特征匹配

2.2.2 特征模板

如圖5所示,人臉的構造特征可以根據矩形的特征簡單地描繪出來。例如,圖6中眼睛比臉頰顏色深,鼻子的兩側比鼻子的梁顏色深,嘴唇比周圍的顏色深等。

對于24×24像素分辨率的圖像,矩陣特征的數量約為160000。此時,需要通過一種特定的算法來過濾合適的矩陣特征,并將它們組合成一個強分類器來檢測人臉。

2.3 積分圖

在得到矩形特征后,計算矩形特征的值。定義一個坐標為A(x,y)的積分圖,這個積分圖的定義是其人臉圖像左上角的所有像素之和,因此,對每個像素進行少量計算就可以得到的“積分圖”并且可以同時計算不同尺度的矩形特征值,從而大幅度的提高了計算效率。

對于圖像中的點a(x,y),積分圖被定義為ii(x,y):

其中i(x',y')為點(x',y')處的像素值。

圖7 積分圖

坐標a(x,y)的積分圖定義為左上角矩陣中所有像素的和,如圖7陰影部分所示:

由此可以看出,要計算兩個區域像素值之間的差(即計算矩形模板的特征值),只需使用特征區域端點的積分圖進行簡單的加減運算即可。積分圖法可以快速計算矩形特征的特征值。

圖8 特征模板的特征值計算原理圖

如圖8所示,特征模板的特征值 = pixel area(B)-pixel area(A) =[ii4 + ii1 - (ii2 + ii3)] -[ii6 + ii3 - (ii4 + ii5)]。

3 系統搭建

3.1 face-recognize.py(截取臉部數據用于訓練)

選擇用opencv來完成人臉截取。首先給opencv視頻來源,可以來自一段已存好的視頻,也可以直接來自USB攝像頭(cv2.VideoCapture(camera_idx)),選擇使用USB攝像頭來進行實時截取。然后選擇opencv自帶的人臉識別分類器(haarcascade_frontalface_alt2.xml),之后循環來讀取視頻里每一幀的圖像進行人臉截取。

首先把當前圖像轉換喂灰度圖像,這樣能大幅減少數據量,以便計算特征,然后開始進行人臉檢測,調用classfier.detectMultiScale函數其中選取1.2為圖片縮放比例,和2個檢測有效點,其參數為grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32),當這個函數返回值的len長度大于0時檢測到人臉然后保存到本地,當循環到達設定的要截取人臉數據量時退出循環。

3.2 face-dispose.py(處理下載的人臉數據庫)

處理圖片也用opencv大致步驟與第一步出不多,只是寫2個循環來讀取圖片、處理圖片、保存圖片。把圖片處理成64×64大小的圖片,方便以后訓練。

3.3 train_faces.py(訓練模型)

學習平臺選擇Tensorflow2.0,并且導入opencv和sklearn,由于大部分功能都用不到Tf2.0的特性于是添加下面兩行代碼來讓使用V1版本的功能import tensorflow.compat.v1 as tf和 tf.disable_v2_behavior()。接下來需要定義幾個函數來實現一些功能,他們分別是:

def getPaddingSize(img):

此函數的作用是給2維圖像一個坐標其中要用//整除符號,否則結果會進行偏移。函數返回 top, bottom, left, right。4個值。

def readData(path , h=size, w=size):此函數的主要功能是讀取圖片數據后先將圖片放大, 擴充圖片邊緣部分,其次將圖片數據與標簽轉換成數組、隨機劃分測試集與訓練集,設置圖片數據的總數,圖片的高、寬、通道,接下來將數據轉換成小于1的數,在此函數中設置一個圖片塊,每次取100張圖片。

def weightVariable(shape):

權重變量,函數返回tf.Variable(tf.random_normal(shape, stddev=0.01))

def biasVariable(shape):

函數返回tf.Variable(tf.random_normal(shape))

def conv2d(x, W):2維的卷積層,用于圖片的卷積, 輸入圖像的通道數= x (灰度圖像),卷積核的種類數=W, 卷積核的shape是[1,1,1,1]的,padding = 'SAME'輸入圖片大小和輸出圖片大小是一致的。

def maxPool(x):

max pooling是CNN當中的最大值池化操作,函數返tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')

def dropout(x, keep):

返回tf.nn.dropout(x, keep)

def cnnLayer():

第一層:卷積核大小(3,3),輸入通道(3),輸出通道(32),卷積,池化,減少過擬合,隨機讓某些權重不更新。

第二層:卷積核大小(3,3),輸入通道(32),輸出通道(64),卷積,池化,減少過擬合。

第三層:卷積核大小(3,3),輸入通道(64),輸出通道(64),卷積,池化,減少過擬合。

輸出層:二維張量,1*512矩陣卷積,共2個卷積,對應開始的ys長度為2,最后的分類,結果為1*1*2softmax和sigmoid都是基于logistic分類算法,一個是多分類一個是二分類。

def cnnTrain():

開始數據訓練以及評測,調用cnnLayer(),比較標簽是否相等,再求的所有數的平均值,tf.cast(強制轉換類型),將loss與accuracy保存以供tensorboard使用,數據保存器的初始化,開始循環,每次取128張圖片,開始訓練數據,同時訓練三個變量,返回三個數據,打印損失,獲取測試數據的準確率,準確率大于0.98時保存訓練完成的模型,以便調用。

4 Distinguish.py(讀取模型并驗證模型)

在剛才train_faces.py的基礎上再定義一個函數以便于驗證模型,同樣使用opencv來幫助驗證模型,首先加載剛剛訓練好的模型。

saver = tf.train.Saver()

sess = tf.Session()

saver.restore(sess, tf.train.latest_checkpoint('存放模型的目錄'))

然后定義一個函數用來讀取圖像到模型中進行比對,是否為模型訓練里的臉,并返回true或false。接下來就要調用opencv截取每一幀視頻圖像截取人臉作為參數傳遞給驗證函數,并且在人臉框旁邊顯示這張臉人主人是誰。

5 結 語

此項目的最重要的部分有兩個,首先是圖片數據的處理,必須將圖片處理成合適的大小來進行訓練,這樣能加快效率,其次是模型訓練,這是整個項目的重中之重,這里總共用到了2個卷積,因為由于隱私問題不能隨便使用別人的人臉數據,這里的數據主要是作者的人臉數據和少部分網上公開無版權糾紛的人臉數據庫,數據不多,這個項目主要區分作者和其他人的臉,如果想訓練模型識別多個人的人臉可以在數據處理時加幾個循環,大體框架不變,訓練時多幾個變量即可完成項目。

猜你喜歡
特征模型
一半模型
抓住特征巧觀察
重要模型『一線三等角』
新型冠狀病毒及其流行病學特征認識
重尾非線性自回歸模型自加權M-估計的漸近分布
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 国产女人在线| 九九九精品视频| 无码专区国产精品一区| 国产精品自在拍首页视频8| 在线播放91| 99国产精品免费观看视频| 久久77777| 国产成人综合亚洲欧美在| 亚洲Va中文字幕久久一区| 国产内射在线观看| 亚洲国产精品不卡在线| 天天综合网亚洲网站| 国产三级国产精品国产普男人| 国产国模一区二区三区四区| 国产va免费精品| 亚洲色婷婷一区二区| 久久精品国产免费观看频道| 五月婷婷综合色| 伊人久久大香线蕉成人综合网| 五月婷婷导航| 亚洲第一页在线观看| 亚洲一区无码在线| 99爱视频精品免视看| 99视频在线精品免费观看6| 高清不卡一区二区三区香蕉| 亚洲成人黄色网址| 黄色网页在线播放| 欧美激情成人网| 国产一区二区色淫影院| 日韩av在线直播| yy6080理论大片一级久久| 国产高清毛片| 99久久国产综合精品2023| 成人毛片免费在线观看| 中文字幕久久亚洲一区| 老熟妇喷水一区二区三区| 日本午夜在线视频| 亚洲欧美日韩久久精品| 欧美精品伊人久久| 国产精品九九视频| 在线观看国产小视频| 亚洲黄色片免费看| 亚洲第一黄片大全| 中文字幕欧美成人免费| 黄色成年视频| 又爽又大又黄a级毛片在线视频| 欲色天天综合网| 波多野结衣第一页| 欧美视频在线第一页| 国产天天射| 免费又黄又爽又猛大片午夜| 69av在线| 亚洲精品人成网线在线| 草草线在成年免费视频2| 在线观看国产精美视频| 在线观看无码av免费不卡网站| 久久这里只有精品23| 国产在线视频福利资源站| 香蕉国产精品视频| www中文字幕在线观看| 日韩欧美视频第一区在线观看| 欧美一区二区福利视频| 伊人天堂网| 国产成人精品在线1区| 99re这里只有国产中文精品国产精品 | 热思思久久免费视频| 亚洲成aⅴ人在线观看| 老熟妇喷水一区二区三区| 毛片免费视频| 久青草国产高清在线视频| 欧美区一区| 亚洲欧美成人在线视频| 国产精品无码作爱| 欧美一级99在线观看国产| 国模极品一区二区三区| 国产欧美日韩91| 久草视频一区| 国产在线精品网址你懂的| 全部免费特黄特色大片视频| 久久无码av一区二区三区| 色哟哟国产精品| 亚洲精品日产AⅤ|