04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换
文章目錄
- 1. 什么是人臉識別
- 2. One-Shot學習
- 3. Siamese 網絡
- 4. Triplet 損失
- 5. 人臉驗證與二分類
- 6. 什么是神經風格遷移
- 7. 深度卷積網絡在學什么
- 8. Cost function
- 9. Content cost function
- 10. Style cost function
- 11. 一維到三維推廣
- 作業
參考:
吳恩達視頻課
深度學習筆記
1. 什么是人臉識別
門禁閘機:人臉識別+活體檢測
人臉驗證(face verification)
- 輸入圖片,ID / 人名
- 輸出圖片是否是這個人(1對1問題)
人臉識別(face recognition)(1對多問題,比人臉認證更難)
- 有 K 個人的數據庫
- 輸入圖片
- 輸出這個人的 ID 或者 未識別(不在數據庫中)
2. One-Shot學習
人臉識別面臨的挑戰:要解決一次學習問題,通過單單 一張圖片/人臉 就能去識別這個人
- 然而小的訓練集不足以去訓練一個穩健的神經網絡
- 新人員的加入,你要重新訓練嗎?不是好的想法
辦法: 學習 Similarity 函數,看差異是否小于某個超參數閾值
當加入了新的人,只需要將這個人與系統里的每個人,用 d 函數進行對比
3. Siamese 網絡
考查編碼之差的范數
d(x(1),x(2))=∥f(x(1))?f(x(2))∥22d\left(x^{(1)}, x^{(2)}\right)=\left\|f\left(x^{(1)}\right)-f\left(x^{(2)}\right)\right\|_{2}^{2}d(x(1),x(2))=∥∥∥?f(x(1))?f(x(2))∥∥∥?22?
對于兩個不同的輸入,運行相同的卷積神經網絡,然后比較它們,這一般叫做Siamese網絡架構
改變這個網絡所有層的參數,得到不同的編碼結果,用反向傳播來改變這些所有的參數,以確保滿足條件(相同的人,d 小,不同的人,d 大)
4. Triplet 損失
定義三元組損失函數然后應用梯度下降,來學習優質的神經網絡參數
我們希望: ∥f(A)?f(P)∥2≤∥f(A)?f(N)∥2\|f(A)-f(P)\|^{2} \leq\|f(A)-f(N)\|^{2}∥f(A)?f(P)∥2≤∥f(A)?f(N)∥2
為了防止網絡把所有的輸入都學成固定的輸出(也滿足上式),加入一個超參數 aaa(間隔 margin)
∥f(A)?f(P)∥2?∥f(A)?f(N)∥2+a≤0\|f(A)-f(P)\|^{2}-\|f(A)-f(N)\|^{2}+a \leq 0∥f(A)?f(P)∥2?∥f(A)?f(N)∥2+a≤0
定義損失函數為:
L(A,P,N)=max?(∥f(A)?f(P)∥2?∥f(A)?f(N)∥2+a,0)L(A, P, N)=\max \left(\|f(A)-f(P)\|^{2}-\|f(A)-f(N)\|^{2}+a, \quad0\right)L(A,P,N)=max(∥f(A)?f(P)∥2?∥f(A)?f(N)∥2+a,0)
對于整個訓練集:總的損失是所有的單個三元組損失之和
訓練集選擇原則:
- 同一個人需要有多張照片,不然不能產生足夠多的數據(且AP,AN比例會不均衡)
- 要選擇比較難的組合來訓練 d(A,P)≈d(A,N)d(A,P) \approx d(A,N)d(A,P)≈d(A,N) ,這樣還可以增加學習的效率
- 如果隨機選擇,其中很多樣本太簡單,算法不會有什么效果,因為網絡總是很輕松的得到正確結果
注意:獲得足夠多的人臉數據不容易,可以下載別人的預訓練模型,而不是一切從頭開始
5. 人臉驗證與二分類
Triplet loss 是一個學習人臉識別卷積網絡參數的好方法,還可以把人臉識別當成一個二分類問題
把人臉驗證當作一個監督學習,創建一個只有成對圖片的訓練集,不是三個一組,目標標簽是1表示是一個人,0表示不同的人。
利用不同的成對圖片,使用反向傳播算法去訓練Siamese神經網絡。
6. 什么是神經風格遷移
7. 深度卷積網絡在學什么
淺層的隱藏單元通常會找一些簡單的特征,比如邊緣或者顏色陰影
一個深層隱藏單元會看到一張圖片更大的部分,在極端的情況下,可以假設每一個像素都會影響到神經網絡更深層的輸出,靠后的隱藏單元可以看到更大的圖片塊
8. Cost function
J(G)=α?Jcontent(C,G)+β?Jstyle(S,G)J(G) = \alpha*J_{\text{content}}(C,G) + \beta*J_{\text{style}}(S,G)J(G)=α?Jcontent?(C,G)+β?Jstyle?(S,G)
算法步驟:
- 隨機生成白噪聲圖片
- 使用代價函數 J(G)J(G)J(G),梯度下降將其最小化
- 更新 G:=G???GJ(G)G := G - \frac{\partial}{\partial G}J(G)G:=G??G??J(G),更新像素值
9. Content cost function
通常會選擇網絡的中間層 lll 出來計算損失
Jcontent?(C,G)=12∥a[l][C]?a[l][G]∥2J_{\text {content }}(C, G)=\frac{1}{2}\left\|a^{[l][C]}-a^{[l][G]}\right\|^{2}Jcontent??(C,G)=21?∥∥∥?a[l][C]?a[l][G]∥∥∥?2
a[l][C],a[l][G]a^{[l][C]},a^{[l][G]}a[l][C],a[l][G] 表示 lll 層的兩個圖片 C, G 的激活函數值
10. Style cost function
圖片的風格定義為層 lll 中各個通道之間激活項的相關系數
style matrix 風格矩陣(又叫 Gram 矩陣):
Gkk′[l](S)=∑i=1nH[l]∑j=1nW[l]ai,j,k[l](S)ai,j,k′[l](S)G_{k k^{\prime}}^{[l](S)}=\sum_{i=1}^{n_{H}^{[l]}} \sum_{j=1}^{n_{W}^{[l]}} a_{i, j, k}^{[l](S)} a_{i, j, k^{\prime}}^{[l](S)}Gkk′[l](S)?=i=1∑nH[l]??j=1∑nW[l]??ai,j,k[l](S)?ai,j,k′[l](S)?
Gkk′[l](G)=∑i=1nH[l]∑j=1nW[l]ai,j,k[l](G)ai,j,k′[l](G)G_{k k^{\prime}}^{[l](G)}=\sum_{i=1}^{n_{H}^{[l]}} \sum_{j=1}^{n_{W}^{[l]}} a_{i, j, k}^{[l](G)} a_{i, j, k^{\prime}}^{[l](G)}Gkk′[l](G)?=i=1∑nH[l]??j=1∑nW[l]??ai,j,k[l](G)?ai,j,k′[l](G)?
Gkk′[l]=∑i=1nH[l]∑j=1nW[l]ai,j,k[l]ai,j,k′[l]G_{k k^{\prime}}^{[l]}=\sum_{i=1}^{n_{H}^{[l]}} \sum_{j=1}^{n_{W}^{[l]}} a_{i, j, k}^{[l]} a_{i, j, k^{\prime}}^{[l]}Gkk′[l]?=i=1∑nH[l]??j=1∑nW[l]??ai,j,k[l]?ai,j,k′[l]?
然后兩個圖像的風格矩陣做差,再求 Frobenius范數,在乘以歸一化常數,就得到 lll 層的風格損失
對各層都使用風格代價函數,會讓結果變得更好,在神經網絡中使用不同的層,包括類似邊緣的低級特征的層,以及高級特征的層,使得神經網絡在計算風格時能夠同時考慮到這些低級和高級特征
用梯度下降法,或更復雜的優化算法來找到一個合適的圖像 GGG,并計算 J(G)J(G)J(G) 的最小值
11. 一維到三維推廣
一維推廣:
三維推廣:
醫學CT掃描(使用X光照射,輸出身體的3D模型,CT掃描可以獲取你身體不同片段)
還有例子,可以將電影中隨時間變化的不同視頻切片看作是3D數據,將這個技術用于檢測動作及人物行為
作業
作業:快樂屋人臉識別+圖片風格轉換
本文地址:https://michael.blog.csdn.net/article/details/108775763
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1187. 使数组严格
- 下一篇: 04.卷积神经网络 W1.卷积神经网络(