4.1什么是人臉識別
(1)人臉驗證(face verification):1對1,輸入一個照片或者名字或者ID,然后判斷這個人是否是本人。
(2)人臉識別(face recognition):1對多,判斷這個人是否是系統中的某一個人。
4.2One-shot學習
(1)比如一個公司的員工,一般每個人只給一張工作照(如4個人),這時網絡輸出五個單元,分別代表他們以及都不是。這樣設計會有兩個明顯的問題:第一是每個人只給了一張照片,訓練樣本太少;第二是如果這時候又來了一個員工,那么網絡的輸出得重新調整,顯然不合理。
(2)實際使用的方法,是訓練一個差異度函數(degree of difference between images)的網絡,給網絡輸入兩張照片,如果是同一個人則輸出很小的值(差異很小),如果不是同一個人則輸出很大的值,這時只要將來的人與系統中的照片逐一比較即可。同時如果來了新員工,也只需要將他的照片放入到系統中就可以了。
4.3Siamese網絡
(1)Siamese的輸出不經過softmax激活函數做分類,直接就是輸出一個向量,相當於把每個人映射成一個向量,然后判斷兩張圖片是否是同一個人時只需要,分別輸入這同一個網絡,然后求輸出向量的范數,如下所示:
4.4Triplet損失
(1)首先訓練集中必須有相同人的照片(網絡應用的時候沒這個要求),三張照片為一組(分別叫做Anchor,Positive,Negative),如下圖所示:
(2)損失函數如下,將兩張相同的圖片的距離比兩張不同圖片的距離的差值(注意此處差值已經是一個負值了)小於某個閾值時,其誤差視為0:
4.5面部驗證與二分類
(1)可以用二分類的思想來訓練上面的Siamese網絡,同樣是用同一個網絡,輸出兩張照片的向量,這時候在后面將向量對應元素做差的絕對值作為一個特征,再創建一層邏輯回歸即可,輸出0、1,如下等式所示:
(2)用這種方法訓練網絡,每次是使用兩張照片,而不是三張照片了。
(3)不管是上面提到的兩種訓練方式的哪一種,當在應用網絡的時候,不需要在系統中存儲大量的照片,可以提前把照片輸入網絡計算出來的向量存在系統中即可,這樣在實際應用時就非常的快樂。
4.6什么是神經風格轉換
(1)下面就是一個風格轉換的例子,左邊是內容圖(C),右邊是風格圖(S),下面是生成圖(G)
4.7什么是深度卷積網絡
(1)淺層檢測到簡單的一些邊緣,越到后面,圖形越來越復雜。
4.8代價函數
(1)相似度越好,代價函數越小,所以就是最小化下面的代價函數,包括內容相似度和風格相似度,(α,β是調節兩者的權重,其實一個就夠了):
(2)生成圖G一開始就是隨機初始化,下面是生成圖隨着最小化代價函數的變化過程(其中1是內容圖,2是風格圖):
4.9內容代價函數
(1)用隱含層l來計算內容代價,如果l是一個很小的數,比如說隱含層1,這個代價函數就會使你的生成圖片像素上非常接近你的內容圖片。如果你用非常深的層,那么如果內容圖上有狗,那么它就會確保生成圖片里面有一只狗。所以在實際中,這個l既不會選擇太淺也不會選擇太深。用預訓練的VGG網絡模型。取中間的l層,這時將內容圖與生成圖分別輸入到VGG中得到第l層的激活值,然后求其相似度,就是按元素對應相減:
4.10風格代價函數
(1)需要着重理解:一個通道是由一個卷積核卷積生成的,假如這個卷積核擅長識別垂直的線段,那么這個通道將會有很多垂直線段,另一個通道的卷積核擅長識別橙色,那么這個通道可能就表現出許多橙色,如下圖所示:
(2)那么什么是通道間的相關性呢?如果一個通道出現垂直線的地方,更容易出現橙色,即二者同時出現或者不出現的概率大那么二者就相關了。
(3)說兩張圖的風格相似,可以看成兩張圖各自不同通道之間的相關性是相同的,那么這兩張圖就風格相同(或者類似)。
(4)以下是一種不是很標准(之所以說不標准是因為沒有減去各自的均值再相乘)的求相關系數的方法,即兩個通道間對應元素相乘,然后求和,最后結果越大說明越相關:
(5)最后只要把風格圖和生成圖在隱含層l層的各自的相關系數做差再求范數即可(前面的歸一化可要可不要,因為還有超參數α、β):
(6)最后就形成了總的代價函數:
4.11一維到三維推廣
(1)一維數據,如心電圖,這時候的卷積核如下所示,一個14維與一個5維卷積核卷積形成一個10維輸出:
(2)三維數據,如CT圖,一個3D對象,如14*14*14(這里沒有出現通道數,寬度和深度是后面兩個),這時候5卷積核比如說5*5*5*1(假設輸入照片是1通道的),這時候輸出10*10*10*5。需要時刻記住的是卷積核的通道數一定要和輸入的通道數相同。