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