免费久久国产&夜夜毛片&亚洲最大无码中文字幕&国产成人无码免费视频之奶水&吴家丽查理三级做爰&国产日本亚欧在线观看

訂閱
糾錯
加入自媒體

人臉識別是如何實現的?揭sir幫你解答!

近日

維識科技智能工程教育中心

開展了一場別開生面的

人臉識別技術知識公開課

本次公開課主講人為

維識教育科技金牌講師

揭李迪

揭sir本科畢業于谷歌首席科學家Geoffrey Hinton(圖靈獎獲得者,被稱為“神經網絡之父”、“深度學習鼻祖”)的母校愛丁堡大學(Edinburgh University)。研究生師從香港浸會大學(HKBU)國際電子電氣工程協會(IEEE)院士劉繼明(jiming LIU)。曾經擔任融鏈科技項目總監、金力軟件項目經理。參與了公安部旗下與商湯競標的閉路攝像頭人臉檢測項目。精通物體檢測語義分割NLP自然語言處理與AI項目全棧落地WANN無權重機器人等國內外領先技術。

揭sir簡介

人臉識別

其實是對人臉特征進行分析計算

并進行身份識別的一種生物識別技術

即用攝像機或攝像頭采集

含有人臉的照片或視頻

對其中的人臉進行檢測和跟蹤

進而達到識別、辨認人臉的目的

人臉識別技術發展到今天

主要有兩種用途

人臉驗證

人臉驗證做的是1:1的比對。也就是說我們先告訴人臉識別系統,我是張三,然后用來驗證站在機器面前的“我”到底是不是張三。

人臉識別

人臉識別做的是1:N的比對。也就是說系統采集了我的一張照片之后,從數萬人或者數百萬人的庫里自動找出“我是誰”。

而“刷臉”

只是人臉識別中

比較具體可感的一部分

事實上人臉識別

能夠給大家帶來的

遠遠不僅是“刷臉”付款這么簡單

目前

人臉識別在

金融、安防、交通

電子商務、娛樂、醫療等領域

均有著廣泛應用

了解了什么是人臉識別之后

那么問題來了

它是怎么實現的呢?

關于人臉識別

目前有很多經典的算法

基于幾何特征法、局部特征分析法

基于彈性模型法、特征臉法

及神經網絡法等

神經網絡方法在人臉識別上的應用比起前述幾類方法來有一定的優勢,因為對人臉識別的許多規律或規則進行顯性的描述是相當困難的,而神經網絡方法則可以通過學習的過程獲得對這些規律和規則的隱性表達,它的適應性更強,一般也比較容易實現。

卷積神經網絡(CNN)的前級包含了卷積和池化操作,可以實現圖片的特征提取和降維,最近幾年由于計算機算力的提升,很多人都開始轉向這個方向。

所以

本次公開課

揭sir以CNN為技術背景

介紹了人臉識別的基本思路


先用人臉檢測方法檢測出人臉位置,然后根據返回的坐標、尺寸把臉用數組切片的方法截取下來,然后把截取的小圖片送進訓練好的卷積神經網絡模型,得出人臉的分類結果,最后在原圖片上打上包圍框并且把結果寫在包圍框的上端。

當然

實現以上步驟的前提是

有一個訓練好的可以做人臉識別的模型

因為訓練的好壞直接影響識別的準確度

所以

本次課程的重點放在了訓練上

揭sir通過簡述

從LeNet到VGG-Net的網絡架構演進

LeNet

亮點

定義了CNN的基本架構

卷積層、池化層、全連接層

是CNN的鼻祖


AlexNet

亮點

更深的網絡

數據增廣

ReLU

dropout

LRN


ZF-Net

亮點

網絡結構沒什么改進

只是調了調參

性能較AlexNet提升了不少

VGG-16

亮點

卷積層使用更小的filter尺寸和間隔。與AlexNet相比,可以看出VGG-Nets的卷積核尺寸還是很小的,比如AlexNet第一層的卷積層用到的卷積核尺寸就是11*11,這是一個很大卷積核了。而反觀VGG-Nets,用到的卷積核的尺寸無非都是1×1和3×3的小卷積核,可以替代大的filter尺寸。

他指出:CNN從90年代的LeNet開始,21世紀初沉寂了10年,直到12年AlexNet開始又再煥發第二春,從ZF-Net到VGG-Nets,網絡越來越深,架構越來越復雜,解決反向傳播時梯度消失的方法也越來越巧妙。但萬變不離其宗的是CNN基本架構為:卷積層、池化層與全連接層。層數發生變化,但CNN的流程并沒有變化。因此,充分理解了卷積層、池化層與全連接層,就可以找到入門CNN的訣竅了。

卷積層

(Convolution)

關于卷積層我們先來看什么叫

卷積操作

上圖較大網格表示一幅圖片,有顏色填充的網格表示一個卷積核,卷積核的大小為3*3。假設我們做步長為1的卷積操作,表示卷積核每次向右移動一個像素(當移動到邊界時回到最左端并向下移動一個單位)。卷積核每個單元內有權重,上圖的卷積核內有9個權重。在卷積核移動的過程中將圖片上的像素和卷積核的對應權重相乘,最后將所有乘積相加得到一個輸出。上圖經過卷積后形成一個6*4的圖。

在了解了卷積操作后

我們來看下卷積層的特點

局部感知

在傳統神經網絡中每個神經元都要與圖片上每個像素相連接,這樣的話就會造成權重的數量巨大造成網絡難以訓練。而在含有卷積層的的神經網絡中每個神經元的權重個數都是卷積核的大小,這樣就相當于沒有神經元只與對應圖片部分的像素相連接。這樣就極大的減少了權重的數量。同時我們可以設置卷積操作的步長,假設將上圖卷積操作的步長設置為3時每次卷積都不會有重疊區域(在超出邊界的部分補自定義的值)。

局部感知的直觀感受如下圖


ps:使用局部感知的原因是一般人們認為圖片中距離相近的部分相關性較大,而距離比較遠的部分相關性較小。在卷積操作中步長的設置就對應著距離的遠近。但是步長的設置并無定值需要使用者嘗試。

參數共享

在介紹參數共享前我們應該知道卷積核的權重是經過學習得到的,并且在卷積過程中卷積核的權重是不會改變的,這就是參數共享的思想。這說明我們通過一個卷積核的操作提取了原圖的不同位置的同樣特征。簡單來說就是在一幅圖片中的不同位置的相同目標,它們的特征是基本相同的。

其過程如下圖

多核卷積

如權值共享的部分所說我們用一個卷積核操作只能得到一部分特征可能獲取不到全部特征,這么一來我們就引入了多核卷積。用每個卷積核來學習不同的特征(每個卷積核學習到不同的權重)來提取原圖特征。

上圖的圖片經過三個卷積核的卷積操作得到三個特征圖。需要注意的是,在多核卷積的過程中每個卷積核的大小應該是相同的。

池化層

(Pooling)

池化層降低了各個特征圖的維度,但可以保持大部分重要的信息。

池化層夾在連續的卷積層中間,壓縮數據和參數的量,減小過擬合,池化層并沒有參數,它只不過是把上層給它的結果做了一個降采樣(數據壓縮)。

降采樣有兩種常用的方式

Max pooling

選取最大的

我們定義一個空間鄰域

并從窗口內的修正特征圖中取出最大的元素

最大池化被證明效果更好一些

Average pooling

平均的

我們定義一個空間鄰域

并從窗口內的修正特征圖算出平均值

無論是max pool

還是average pool

都有分信息被舍棄

那么部分信息被舍棄后

會損壞識別結果嗎?

因為卷積后的Feature Map中

有對于識別物體不必要的冗余信息

我們降采樣就是

為了去掉這些冗余信息

所以并不會損壞識別結果

全連接層

(Fully connected)

在全連接層中所有神經元都有權重連接,通常全連接層在卷積神經網絡尾部。當前面卷積層抓取到足以用來識別圖片的特征后,接下來的就是如何進行分類。通常卷積網絡的最后會將末端得到的長方體平攤成一個長長的向量,并送入全連接層配合輸出層進行分類。比如,在下面圖中我們進行的圖像分類為四分類問題,所以卷積神經網絡的輸出層就會有四個神經元。


四分類問題

我們從卷積神經網絡的卷積層、池化層以及全連接層來講解卷積神經網絡,我們可以認為全連接層之間的在做特征提取,而全連接層在做分類,這就是卷積神經網絡的核心。

而三者與卷積神經網絡的關系

可以這么理解

卷積神經網絡在形式上有一點點像

咱們的“人民代表大會制度”

卷積核的個數相當于候選人

圖像中不同的特征

會激活不同的“候選人”(卷積核)

池化層

(僅指最大池化)

起著類似于“合票”的作用

不同特征在對不同的

“候選人”有著各自的喜好

全連接相當于是“代表普選”

所有被各個區域選出的代表

對最終結果進行“投票”

全連接保證了receiptive field是整個圖像

既圖像中各個部分(所謂所有代表)

都有對最終結果影響的權利

舉個栗子

以VGG-16為例

對224x224x3的輸入

最后一層卷積可得輸出為7x7x512

如后層是一層含4096個神經元的FC

則可用卷積核為

7x7x512x4096的全局卷積

來實現這一全連接運算過程

它把特征representation整合到一起

輸出為一個值

這樣做

有一個什么好處就是

大大減少特征位置對分類帶來的影響

再舉個簡單的栗子

從上圖我們可以看出

貓在不同的位置

輸出的feature值相同

但是位置不同

對于電腦來說

特征值相同

但是特征值位置不同

那分類結果也可能不一樣

這時

全連接層filter的作用就相當于

貓在哪我不管

我只要貓

于是我讓filter去把這個貓找到

實際就是把feature map

整合成一個值

這個值大,有貓

這個值小,那就可能沒貓

和這個貓在哪關系不大了

魯棒性有大大增強

因為空間結構特性被忽略了

所以全連接層不適合用于

在方位上找Pattern的任務

比如segmentation

全連接層中一層的一個神經元

就可以看成一個多項式

我們用許多神經元去擬合數據分布

但是只用一層fully connected layer

有時候沒法解決非線性問題

而如果有兩層

或以上fully connected layer

就可以很好地解決非線性問題了

我們都知道

全連接層之前的作用是提取特征

全理解層的作用是分類

我們現在的任務是去區別一圖片是不是貓

假設這個神經網絡模型已經訓練完了

全連接層已經知道

當我們得到以上特征

我就可以判斷這個東東是貓了

因為全連接層的作用主要就是實現分類

從下圖

我們可以看出

紅色的神經元表示這個特征被找到了

(激活了)

同一層的其他神經元

要么貓的特征不明顯

要么沒找到

當我們把這些找到的特征組合在一起

發現最符合要求的是貓

OK

我認為這是貓了

貓頭有這么些個特征

于是我們下一步的任務

就是把貓頭的這么些子特征找到

比如眼睛、耳朵

道理和區別貓一樣

當我們找到這些特征

神經元就被激活了

(上圖紅色圓圈)

這細節特征又是怎么來的

就是從前面的卷積層,池化層來的

全連接層參數特多

(可占整個網絡參數80%左右)

ps:至于VGG-Nets之后GoogLeNet引入Inception結構代替單純卷積+激活的傳統操作,中間層的輔助LOSS單元,后面的全連接層全部替換為簡單的全局平均pooling;ResNet在網絡結構上做了較大創新等發展,本次公開課并未做過多闡述,有興趣的童鞋可自行查閱相關資料了解。

最后,揭sir

以Facenet與Face Recognition為訓練模型

讓童鞋們實操了一把人臉識別的全流程

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

    人工智能 獵頭職位 更多
    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號