1. 程式人生 > >sp4.4 Face recognition Neural style transfer

sp4.4 Face recognition Neural style transfer

人臉驗證:輸入照片以及id 1v1的問題看是否相符即可 這裡比如需要掃描的ID卡 他1V1比對 人臉識別:擁有多人資料庫,這裡不需要ID卡 直接人走過來 看在不在資料庫裡 1v多 錯誤率放大N倍     一次學習one-shot learning,因為比如人臉識別 往往只有一個照片 需要通過一個樣例就來學習 只有這人一張照片在資料庫 現在判斷來的是不是這個人 一種方法 照片--CNN--Softmax(總資料庫人數 )判斷是每個人的概率 但訓練樣本只有1個 太少了 而且會有新員工加入   改進方法: 關鍵就是學習到這個 比較函式 FaceNet learns a neural network that encodes a face image into a vector of 128 numbers. By comparing two such vectors, you can then determine if two pictures are of the same person. 依次讓來的人照片和資料庫的每個照片作對比 看相似度 利用siamese網路
  利用Siamese 網路 相當於學習瞭如何給圖片編碼 然後你平方差算就行了 這有點像word2vec啊 全連線層算出來後 假設128維 用相同的引數算出來另外一張圖片 全連線層 也是128維度 這裡定義兩個算出來的誤差 平方差     如何訓練呢   目標函式:三元組損失函式 triplet loss 目標就是讓一個人的照片算出來差異小 不同人算出來差別大 一組三張 兩張同一個人的 一張另外的 α相當於間距引數 相似的照片得數小 不相似的得數大 如果所有輸出都是0也滿足這式子 所以讓他們的差值小於一個負數 也是為了避免函式有可能讓所有的都是0
  代價函式 每次能讓差值小於0 損失就是0 說明分對了     一組三張 兩張同一個人的 一張另外的 需要成對的A和P 同一個人的照片 (遵循AP是一個人 N不是)隨機選擇的話這個原則很容易滿足 一般差異都挺大的 這樣學不到東西 所以儘可能要選相差小的照片 d(AP) 接近d(AN) 還要保證每個人都有多張照片 比如每個人10個照片   另外的方法 上述是轉為三元問題 人臉驗證轉為二分類邏輯迴歸問題 關鍵還是這個SIAMESE網路 比如還利用上面的Siamese 網路 計算兩個圖片的 嵌入 比如128維 對這兩列再用個邏輯迴歸 用藍的或者綠的公式算都可以
到時候只用計算新進門的人 進來個新人 丟進去算這128維就行了   人臉識別: 從資料庫找到和他距離最小的圖片 整個迴圈一遍 然後看和資料庫圖片的最小距離是否滿足 閥值     神經風格遷移: 深度卷積到底在學習什麼 剛開始卷積出來是簡單的線條 深層部分 識別出更復雜的部分   視覺化神經網路   風格轉換的代價函式:判斷生成影象的好壞 這裡需要定義兩個 Jcontent表示生成圖片G的內容與原內容C多相似 Jstyle表示生成圖片G與風格圖片S的相似度   先隨機生成一個圖片 然後一直迭代   內容代價函式:用一個訓練好的比如VGG 算出在某一層(也是試的)的相似度 作為代價           風格代價函式:如何定義風格 其實就是個GRAM矩陣 這裡定義為某層各個通道之間的相關度 他其實算的時候 算了好幾層的 不只一層 假設5個通道數 比如看紅色和黃色之間關聯度 這兩面數字之間關聯度 比較 生成圖片 這兩層的關聯度 看這兩組是否接近   別忘了 神經網路算的是下圖這樣的 在網路初期 他其實每層 對應整個圖片一塊最初的紋理之類的 如果這兩小塊一直同時出現 證明 這兩種材質也是同時出現吧 在更深層次對映   當一個通道檢測出的比如垂線 另一個通道橙色 同時出現或者不出現的頻率 定義兩個陣,風格的a 得出的G     自己乘自己           整個流程       CNN關於1維 3維的 之前幾周學的都是二維的 心電圖可以看成一維的 時間序列 也可以用RNN LSTM     資料本身是三維的 看成無數二維組合 一層一層切片 過濾器也是三維的