人臉識別 論文閱讀(3)

  1. Finding Tiny Faces in the Wild with Generative Adversarial Network,CVPR 2018,Oral
    論文鏈接

三個主要貢獻:

  • 新穎的端到端方式的人臉檢測CNN網絡結構,提出了super-resolution network(SRN)和 refinement network (RN)生成真實並且高分辨率的圖像;
  • 引入新的loss去同時判斷真/假臉、是否爲人臉,指導生成器生成更清晰的人臉並用於分類;
  • 通過從模糊小臉恢復成高分辨率清晰人臉證明模型的有效性,並且在WIDER FACE數據集上的檢測表現達到了state-of-the-art的水平。(注:WIDER FACE數據集包含大量具有較低分辨率的面)

難點:
wild比正常情況下的人臉圖像受任意姿勢,照明和模糊影響可能更大

問題引入:
1)由於小臉缺乏詳細的信息去區分來自相似背景的人臉和模糊人臉
2)現在的CNN人臉檢測器通常使用上採樣的方式去表示人臉,丟失了大部分的空間信息並且對於小臉來說太粗糙了;普通的上採樣的放大因子一般較小,最多兩倍,否則容易產生僞圖,因此格外地增加計算空間和時間。
3)使用intermediate conv 可以達到計算負擔和效果的平衡(即論文中卷積和反捲積都用到了)
4)引入SRN:使用更大的放大因子但能減少僞圖
5)引入RN:恢復上採樣的一些缺失細節生成清晰的高分辨率圖像用於分類

在這裏插入圖片描述

  • a:原始的低分辨率模糊圖
  • b:bi-linear 直接resize
  • c:super-resolution network(SRN)方法生成圖像
  • d:refinement network (RN)方法學習一個顏色和清晰度都最好、最接近真實的圖像

bi-linear 雙線性插值公式:
二次差值公式 ,v(x,y) = ax + by + cxy + d

網絡結構:在這裏插入圖片描述

  • A:輸入一張RGB圖像;

  • B:FB-FCN檢測器,通過輸入圖像裁剪生成正樣本(人臉)和負樣本(非人臉),以訓練生成器和判別器,或者用來生成用於測試的regions of interest (ROI);

  • C:通過生成器、判別器或者ROI生成正樣本和負樣本;

  • D:生成器,輸入小模糊圖像生成清晰的超分辨率網絡,生成器包括上採樣子網絡(使用4倍放大因子)和細分子網絡;
    損失函數是基於像素的MSE損失:
    在這裏插入圖片描述
    G1表示上採樣子網絡,G2表示細分子網絡

  • E:判別器,在VGG19的基礎上做了兩個改動:
    在這裏插入圖片描述
    1)移除conv5的max pool層(爲什麼要移除,我理解的是:conv5已經算深層了,這一層的feature map很小,如果再用max pool降維的話會使感受野變得很小,可能會丟失一些重要的上下文信息)
    2)將f1~f3替換爲兩個並行的全連接層在這裏插入圖片描述(上部分,輸出是真實圖像的概率)、在這裏插入圖片描述(下部,輸出是人臉的概率)

判別器損失:

在這裏插入圖片描述
其中,在這裏插入圖片描述表示高分辨率的人臉(???疑問: 論文中只提到了它是高分辨率圖像,但是具體是生成的高分辨圖像,還是原始訓練集就有的和低分辨率圖像配套的呢????想法1:初始低分辨率做label,生成的高分辨率圖像和label計算損失,再作爲新的label;想法2:訓練的時候要同時用到一張圖像的高分辨率和低分辨率版本,低分辨率輸入,高分辨率監督。--------------->最終通過找到了答案:對原始高分辨率圖像進行下采樣生成低分辨率圖像,是想法2)
表示低分辨率的人臉(原始圖像),y是label(Face or Non-face)。

爲什麼要最大化D的損失,最小化G的損失?

在這裏插入圖片描述
標準GAN的判別器對假數據的損失原理相同,最終達到的目標是對於所有的真實圖片,輸出爲1;對於所有的假圖片,輸出爲0。 生成器的目標是愚弄辨別器矇混過關,需要達到的目標是對於生成的圖片,輸出爲1(正好和鑑別器相反).
所以我認爲生成器訓練的速度比判別器快或者判別器訓練到一定結果就不訓練了,使得判別器的判別能力較強,但是生成器生成的圖像更強,強到能欺騙過這個判別器。

所以最終總損失:

在這裏插入圖片描述
α和β是待學習的參數


基於模型共識的大規模無標註數據標籤傳播方法

2.Consensus-Driven Propagation in Massive Unlabeled Data for Face Recognition,ECCV 2018,商湯科技

論文鏈接

問題引出:標註錯誤、類內差異大。 現在的人臉識別技術主要依賴於神經網絡的大容量和規模越來越大的標註數據集。令作者左右爲難的是,現在提升準確率的一個小數點都可能需要數十萬手工標註特徵,而且容易過擬合(無法泛化到更多身份)。而且,人工標註的錯誤難以避免,人工標註的可靠性可能還不如模型本身;真實情況下,無標註數據很"wild"。("wild"指無約束環境,即來源沒有限制,因此同一類身份的光照、姿態、遮擋等會有很大的差異。)

問題:如何通過未標註數據代替一部分手工標註的數據來提升人臉識別的表現?

解決辦法:一種改進的半監督算法——共識驅動算法(CDP)解決這一具有挑戰性的問題,兩個精心設計的模塊——“committee”和“mediator”,前者在通過聚合多視圖信息提議positive face pairs,後者聚合所有信息輸出最終結果(二元分類器,是否選擇face pair)。實驗證明僅使用9%的無標註數據即可獲得達到和全標註數據一樣的效果。

與傳統半監督的不同:
1) 無標註數據的wild性質。
2) 無標註數據與有標註數據幾乎沒有身份重疊,所以傳統的標籤傳播算法(如KNN)不可行

在這裏插入圖片描述

在這裏插入圖片描述
訓練過程:
1)在無標註數據集在這裏插入圖片描述訓練得到N+1個模型:
base模型 B 和 mediator 模型 在這裏插入圖片描述
映射函數:
在這裏插入圖片描述
在這裏插入圖片描述
2)用前面訓練好的N+1個模型提取特徵,並創建KNN Graph(nmslib庫,一種相似性搜索庫,每個樣本利用餘弦相似度找k個最近鄰,分別連接起來,所有的樣本及它們的鄰居構成了graph) 。作者設置k=20

index = nmslib.init(method='hnsw', space='cosinesimil')
index.addDataPointBatch(feats)
index.createIndex({'post': 2}, print_progress=True)
neighbours = index.knnQueryBatch(feats, k=k)
  1. 在KNN Graph中順序取兩個節點n0和n1,構建Mediator的輸入:
    ①relationship在這裏插入圖片描述
    在這裏插入圖片描述
    ② affinity 在這裏插入圖片描述
    在這裏插入圖片描述
    閾值設定 0.96
    ③ neighbors distribution
    在這裏插入圖片描述
    在這裏插入圖片描述在這裏插入圖片描述
    把 B 簡寫爲C0,輸入的是2個節點(n0和n1)在 N+1 個模型中的 K 個鄰居的期望和方差。

在這裏插入圖片描述
所以一共是 6N + 5 維
4)Mediators是一種改進的聚類方式,選擇有意義的對。使用MLP,兩個隱藏層,每層包含50個節點,Relu激活函數。輸出二分類結果,是or 不是。
因爲是有標註數據,所以pair是有label。
在這裏插入圖片描述

測試過程:
1)使用訓練過程中訓練好的模型,提取特徵得到在這裏插入圖片描述在這裏插入圖片描述
每個樣本N+1個特徵向量
2)生成N+1個KNN 圖
3)Mediator 選擇有意義的對 ,生成Consensus-Driven Graph
4)僞標籤傳播,這個過程完全不用到標註數據的類別
5) 僞標註數據混入在這裏插入圖片描述重新訓練前面的模型
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述 損失用的都是softmax損失

committee的思想來自於1992年的一篇論文Query-by-Committee(QBC),此方法是用來對分類器選擇性採樣的,可以刪除掉不太準確的分類器。生成多個學習器,選擇對樣本分類爭議最大的學習器詢問標籤,誤差傳播。
在此篇論文中,committee確保了graph 的多樣性。
在這裏插入圖片描述

經過測試,Tiny NASNet-A,Inception-ResnetV2,DenseNet121,ResNet101的集成在兩個基準測試中產生68.86%和76.97%準確率。

僞標籤傳播算法:看不太懂
iv. Pseudo Label Propagation. The pairs selected by the mediator in the previous step compose a “Consensus-Driven Graph”, whose edges are weighted by pairs’ probability to be positive. Note that the graph does not need to be a connected graph. Unlike conventional label propagation algorithms, we do not assume labeled nodes on the graph. To prepare for subsequent model training, we propagate pseudo labels based on the connectivity of nodes. To propagate
pseudo labels, we devise a simple yet effective algorithm to identify connected components.

At first, we find connected components based on the current edges in the graph and add it to a queue. For each identified component, if its node number is larger than a pre-defined value, we eliminate low-score edges in the component, find connected components from it, and add the new disjoint components to the queue. If the node number of a component is below the pre-defined value, we annotate all nodes in the component with a new pseudo label. We iterate this process until the queue is empty when all the eligible components are labeled.
我的理解是:

  #標註判斷
  if 鄰居沒有標註 : 標註爲新的類別  
  else: 標註成跟鄰居一類
  
  for pair in Classified pairs:
		for  node for nodes of pair:
		        if the node number > pre-defined value:
		              if 當前邊是低分邊:刪除當前邊
		              else: 進行標註判斷
		        if  the node number <= pre-defined value :
	                  進行標註判斷

pre-defined value指的是分類的類數

參數初始化用的是Xavier ,每一層輸入和輸出的方差儘可能相等,信號不會突然很大或很小

推導:
在這裏插入圖片描述
權衡以上兩者得到 在這裏插入圖片描述 已知[a,b]的均勻分佈方差在這裏插入圖片描述
所以可以解得 在這裏插入圖片描述
參數初始化作用:
在這裏插入圖片描述
可以試着換一下
在這裏插入圖片描述

我改進的想法:

  • Mediator爲什麼全連接,加入dropout行不行?

  1. SphereFace
    參考論文 SphereFace: Deep Hypersphere Embedding for Face Recognition,CVPR 2017

trick:

  • A-Softmax:新提出一種的損失函數,通過權重和特徵向量之間的角度進行分類,可在流形超球面(高維空間)增加角度判別能力,即對降低類內差異、增加類間差異有幫助。

① face detection:使用 MTCNN 學習關鍵點,MTCNN是一種多分辨率圖片讀入方式。
在這裏插入圖片描述
論文使用的是64-layer

MTCNN 參考論文:Joint Face Detection and Alignment using
Multi-task Cascaded Convolutional Networks,ECCV 2016

訓練過程:
在這裏插入圖片描述

網絡結構:
在這裏插入圖片描述

  • 給定一個圖像,resize成不同的比例來構建圖像金字塔。
  • Proposal Network (P-Net):該網絡結構主要獲得了人臉區域的候選窗口和邊界框的迴歸向量。並用該邊界框做迴歸,對候選窗口進行校準,然後通過非極大值抑制(NMS)來合併高度重疊的候選框。

NMS計算過程:
1)將所有候選框和ground truth 的IOU值記錄下來,記作score,初始化最終候選框集合,初始化閾值t;
2)選擇最大score的框放入最終集合,計算其他框和當前最大score框的IOU,超過t則剔除;
3) 重複步驟2直至所有候選框篩選完畢

  • Refine Network (R-Net):該網絡結構還是通過邊界框迴歸和NMS來去掉那些false-positive區域(因爲全連接層能學習到更充分的上下文信息)。只是由於該網絡結構和P-Net網絡結構有差異,多了一個全連接層,所以會取得更好的抑制false-positive的作用。 (??爲什麼)
  • Output Network (O-Net):該層比R-Net層又多了一個卷積層,所以處理的結果會更加精細。作用和R-Net層作用一樣。但是該層對人臉區域進行了更多的監督,同時還會輸出5個landmark座標,是一個10維的向量。

整個網絡中有三項任務:
1)人臉分類:對於每個樣本xi,我們使用交叉熵損失在這裏插入圖片描述

2)邊界框迴歸:在這裏插入圖片描述
ground truth 指的是 the bounding boxes’ left, top, height, and width

3)關鍵點定位:在這裏插入圖片描述
ground truth 指的是 left eye, right eye, nose, left mouth corner, and right mouth corner共5個座標

將以上三個任務統一起來:在這裏插入圖片描述
N爲訓練樣本數量,aj表示任務的重要性,bj爲樣本類型指示符(表示只對ground truth爲人臉的樣本計算損失),Lj爲上面的損失函數。

在卷積層和全連接層後面使用的激活函數是PRelu在這裏插入圖片描述
區別與leacky relu ai是(1,+∞)區間內的固定參數。
此處的α根據小於0的數據變化的 ,更新公式爲:在這裏插入圖片描述這篇論文的作者證明這一點是機器超過人類的關鍵點。

比較特別一點的是對hard sample的處理:取對每個小批量的數據前向傳播的損失進行排序,只取前70%作爲hard sample,反向傳播,忽略掉不太有幫助的簡單樣本。實驗證明,這種策略是有用的,論文在FDDB數據集上提升了1.5%
在這裏插入圖片描述

② face alignment:根據關鍵點做相似變換

③ face representation:

對比其它在深度學習中有用的損失函數:

  • contrastive loss、triplet loss 必須同時輸入一對圖像
  • center loss只對減小類內差異有幫助
    在這裏插入圖片描述
    xi是特徵向量,cyi表示第yi個類別的特徵中心

以二分類爲例,
在這裏插入圖片描述

其中,對於改進的softmax 損失規定:||W1||=||W2||=1,b1=b2=0
(歸一化權重可以緩解訓練數據類別分佈不均勻的影響,減小類內差異)

m是一個待學習參數,正整數,這樣第i類的特徵相比其他類具有較小的θi,m用來控制angular margin,給當前類的角度θ加權,使得特徵對幾乎固定的角度敏感,增大類別的判別力,也就是增大類間差異。

分別使用sigmoid激活函數和對數損失函數:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
幾種損失函數學到的特徵分佈如下圖所示:

在這裏插入圖片描述

可以觀察到A-softmax 利用角度分類的特性,確實判別能力更好。

結論:
性質1:A-Softmax Loss定義了一個大角度間隔的學習方法,m越大這個間隔(其它類的角度和ground truth的角度間隔)也就越大,相應區域流形的大小就越小。

性質2:類內最大角度特徵距離小於類間最小角度特徵距離(這樣可以讓類內差異儘可能小,類間差異儘可能大)。在二分類問題中,在這裏插入圖片描述;在多分類中,在這裏插入圖片描述
證明:
1)對二分類:
在這裏插入圖片描述爲W1、W2之間的夾角

  • 若X在W1、W2之間,可以由mθ1=θ2求出θ1的最大值爲在這裏插入圖片描述
    在這裏插入圖片描述
  • 若X在W1、W2之外,有兩種情況:在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
3)類間最小角度特徵距離:在這裏插入圖片描述
在這裏插入圖片描述
所以,對於二分類有:
在這裏插入圖片描述
解得:在這裏插入圖片描述

對於多分類,設在這裏插入圖片描述在這裏插入圖片描述的夾角,最好的情況是均勻分佈,所以在這裏插入圖片描述
在這裏插入圖片描述
解得:在這裏插入圖片描述

經過試驗,m取4
在這裏插入圖片描述

④ face verification:
在這裏插入圖片描述

附錄:
在二分類情況下,softmax相關損失函數對比:
在這裏插入圖片描述

還有一篇叫NormFace的,說的是訓練的時候有必要正則化。如果基於餘弦距離做改進,就是帶正則化的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章