姿態估計&目標檢測論文整理(1)

一、姿態估計

1. 現階段人體姿態識別主流的通常有2個思路:

  • Top-Down(自上而下)方法:將人體檢測和關鍵點檢測分離,在圖像上首先進行人體檢測,找到所有的人體框,對每個人體框圖再使用關鍵點檢測,這類方法往往比較慢,但姿態估計準確度較高。目前的主流是CPN,Hourglass,CPM,Alpha Pose等。
  • Bottom-Up(自下而上)方法:先檢測圖像中人體部件,然後將圖像中多人人體的部件分別組合成人體,因此這類方法在測試推斷的時候往往更快速,準確度稍低。典型就是COCO2016年人體關鍵點檢測冠軍Open Pose。

六種人體姿態估計的深度學習模型和代碼總結

2. 姿態估計標註方法

數據的基本結構是:

[{“image_id”:[],
“category_id”:[],
“keypoints”:[],
“score”:[] }]

“keypoints”是長度爲3K的數組([x,y,v]),K是對某類定義的關鍵點總數,這裏人體的keypoint就是17個.位置爲[x,y],關鍵點可見性v. 如果關鍵點沒有標註信息,則關鍵點位置[x=y=0],v=0;如果關鍵點有標註信息,但不可見,則可見性v=1;如果關鍵點在物體segment內,則認爲可見v=2。
在這裏插入圖片描述
(a)17關鍵點
在這裏插入圖片描述
(b)18關鍵點

人體姿態估計數據集整理(Pose Estimation/Keypoint):

3. 評價標準

主要評價標準包括以下兩種,PCK的評價標準多出現在單人的姿態估計上,多人的姿態估計評價標準基本上爲mAP,比賽和學術論文中mAP成爲衡量結果的必須指標。

3.1 PCK

Percentage of Correct Keypoints (PCK),reports the percentage of keypoint detection falling within a normalized distance of the ground truth.
在這裏插入圖片描述

3.2 mAP

人體骨骼關鍵點的評價指標類比通用的物體檢測評價方式,將最終的mAP(mean Average Precision)值作爲評價依據。物體檢測任務中使用IoU(Intersection over Union)來評價預測與真實標註之間的差異,在人體骨骼關鍵點檢測任務中,我們使用OKS(Object Keypoint Similarity)代替IoU,對選手預測的人體骨骼關鍵點位置與真實標註之間的相似性進行打分。

3.3 OKS

在這裏插入圖片描述
其中did_i是檢測到的關鍵點與標籤關鍵點之間的歐式距離,viv_i是標籤的可見性標籤,s是目標尺度,kik_i是每類關鍵點的相關控制衰減常數。每個關節點的相似度都會在 [0,1]之間,完美的預測將會得到OKS~1,預測值與真實值差距太大將會得到OKS~0
OKS指標詳解

4. DeepPose:通過深度神經網絡進行人體姿態估計

與同時期(2014)的其他深度學習方法一樣,DeepPose在領域內帶來的影響是顛覆性的:它將2D人體姿態估計問題由原本的圖像處理和模板匹配問題轉化爲CNN圖像特徵提取和關鍵點座標迴歸問題,並使用了一些迴歸準則來估計被遮擋/未出現的人體關節節點。
模型包括7層Alexnet和額外的迴歸全連接層,輸出爲2*關節點座標數目,表示在二維圖像中的座標。
在這裏插入圖片描述
作者在這個CNN網絡的基礎上使用了一個Trick:級聯迴歸器(Cascaded Regressors)。其思路就是針對當時淺層CNN學習到的特徵尺度固定、迴歸性能差的問題,將網絡得到的粗分迴歸(x, y)座標保存,增加一個階段:在原圖中以(x, y)爲中心,剪切一個區域圖像,將區域圖像傳入CNN網絡學習更高分辨率的特徵,進行較高精度的座標值迴歸。
在這裏插入圖片描述
總體來說這個方法是很具有啓發性的,它不僅僅首次將CNN應用於人體姿態估計,而且使用的級聯迴歸器計算了高低分辨率的不同特徵,證明人體姿態估計任務與人臉定位、瞳孔定位等普通的座標迴歸任務而言更細緻,需要不同圖像尺度下特徵的融合計算,這種思路至今仍然非常具有價值。
其主要侷限性在於:1. Alexnet網絡的學習能力有限;2. 直接回歸2D座標點太困難;3. 泛化能力差。

5. Stacked Hourglass:通過堆疊沙漏網絡進行人體姿態估計

堆疊沙漏網絡同樣在2D人體姿態識別領域有着顛覆性的地位,一經提出(2016)就橫掃各大比賽數據集,並且憑藉簡單靈活的結構獲取了很多的關注和後續改進。
在這裏插入圖片描述
其本質上是一種加入了殘差的編碼器-解碼器-網絡,其中編碼器-解碼器用於提取特徵、恢復尺度,而殘差則用來將不同尺度的特徵通融合起來,並經由上採樣過程逐步進入恢復到原始特徵尺寸。殘差在保留原始特徵的同時也解決了深層網絡的梯度消失問題,使得更深的網絡結構中更加抽象的特徵得以被提取和計算。
這裏的 “hourglass” 結構很像 FCN,結構最大的不同點就是更加對稱的容量分佈(包括特徵從高分辨率到低分辨率,從低分辨率到高分辨率),可能其他工作,FCN 或者 holistically-nested 結構都是高分辨率到低分辨率(down-top)容量比較大(結構較複雜),低分辨率到高分辨率(top-down)就結構簡單。
這裏的結構也與一些做分割,樣本生成,去噪自編碼器,監督/半監督特徵學習等的結構很像,但是操作的本質不同, “hourglass” 沒有使用 unpooling 操作或者是解卷積層,而是使用了最簡單的最近鄰上採樣和跨層連接來做 top-down(上採樣)。還有一個不一樣的點是,本文工作堆疊了多個 “hourglass” 的結構來構建整個網絡。

2D姿態估計整理:從DeepPose到HRNet

6. DensePose

DensePose 是 Facebook開發(2018.2)的一個令人驚歎的人體實時姿勢識別系統,它在 2D 圖像和人體3D 模型之間建立映射,最終實現密集人羣的實時姿態識別。
具體來說,DensePose 利用深度學習將 2D RPG 圖像座標映射到 3D人體表面,把一個人分割成許多 UV 貼圖(UV 座標),然後處理密集座標,實現動態人物的精確定位和姿態估計。
Facebook公佈了這一框架的代碼、模型和數據集,同時發佈了DensePose-COCO,這是一個爲了估計人類姿態的大型真實數據集,其中包括了對5萬張COCO圖像手動標註的由圖像到表面的對應。這對深度學習研究者來說是非常詳細的資源,它對姿態估計、身體部位分割等任務提供了良好的數據源。

6.1 UV紋理貼圖座標

對於三維模型,有兩個最重要的座標系統,一是頂點的位置(X,Y,Z)座標,另一個就是UV座標。U和V分別是圖片在顯示器水平、垂直方向上的座標,取值一般都是0~1,也 就是(水平方向的第U個像素/圖片寬度,垂直方向的第V個像素/圖片高度。紋理映射是把圖片(或者說是紋理)映射到3D模型的一個或者多個面上。紋理可以是任何圖片,使用紋理映射可以增加3D物體的真實感。每個片元(像素)都有一個對應的紋理座標。由於三維物體表面有大有小是變化的,這意味着我們要不斷更新紋理座標。但是這在現實中很難做到。於是設定了紋理座標空間,每維的紋理座標範圍都在[0,1]中,利用紋理座標乘以紋理的高度或寬度就可以得到頂點在紋理上對應的紋理單元位置。紋理空間又叫UV空間。對於頂點來說,紋理座標相對位置不變。
在這裏插入圖片描述

6.2 密集姿態估計

密集姿態估計的核心任務是,訓練一個深度網絡,用於預測 2D 圖片像素 (image pixels)與 3D 表面模型點 (surface points) 之間的密集聯繫 (dense correspondences)。這個任務最近已經通過基於全卷積網絡的 Dense Regression (DenseReg) 系統得到了解決。
在第一步中,我們將一個像素歸類爲屬於背景或者幾個區域部分中的一個,它們提供表面座標的粗略估計,這相當於使用標準交叉熵損失進行訓練的標籤任務。
第二步,迴歸系統指出該像素在區域中的確切座標。由於人體結構的複雜性,我們將其分解爲多個獨立的部分,並使用局部二維座標系對每個部分進行參數化,以識別該表面區域上任何關鍵點的位置。

7. Fast Human Pose Estimation

在本研究中(2018.11),我們考慮了在不降低模型性能的情況下提高姿態估計效率的問題,但保留了可比較的精度結果。我們觀察到,用於最先進的人體姿態網絡(如Hourglass [19])的基本CNN構建模塊在建立小型網絡方面並不具有成本效益,因爲每層的通道數量很多,而且難以訓練。爲了克服這些障礙,我們設計了一種輕量級的沙漏網絡,並以知識蒸餾方式提出了一種更有效的小姿態網絡訓練方法[13]。我們稱之爲快速姿態蒸餾(Fast Pose Distillation,FPD)。與表現最佳的替代姿勢方法[32,10]相比,所提出的FPD方法能夠以更小的模型尺寸實現更快且更具成本效益的模型推斷,同時達到人類姿勢預測性能的相同水平。
在這裏插入圖片描述
值得一提的是此處“姿態知識蒸餾”的損失函數。
在這裏插入圖片描述
通過Teacher網絡的監督信息的加入,彌補了每一步訓練“局部數據集”上標籤錯誤、部分遮擋等問題,也有利於學習到Teacher網絡已經從大量樣本學到的關於人體姿態的先驗信息。

代碼:Official pytorch Code for CVPR2019 paper “Fast Human Pose Estimation”

二、目標檢測

1. YOLO V1,V2,V3對比

1.1 YOLOV1

YOLO網絡結構主要分爲兩個部分,第一部分是特徵提取網絡,主要是爲了提取物體的通用特徵,一般在ImageNet上進行預訓練;第二部分是後處理網絡,目的是迴歸出待檢測物體的座標和類別。
輸入:一張圖片;
輸出:把每張圖片分成SxS個方格,對每個方格,輸出一個B5+C維的數組。其中B是該方格預測方框的數目,包含(x,y,w,h,s),s表示方框的置信度,C表示需要預測的類別數。在YOLO中,S=7, B=2,PASCAL VOC有20類,所以C=20,B5+C=30。
缺點:每個方格只能預測一類物體,對於小目標檢測很難。在損失函數中,對小物體變化的置信度和大物體變化的置信度懲罰相同,實際小物體變化應該加大懲罰。

1.2 YOLOV2

添加了BN層,map提高了2%。用448x448的輸入分辨率在ImageNet上進行參數微調,map提高了4%。把全連接層取消,使用anchor boxes來預測目標方框;用k-means來選擇好的方框先驗。對於每個方格,預測5個方框。把26x26x512的feature-map,相鄰特徵分到不同的channel中,因此得到13x13x2048的feature-map,與後面層進行concat,使得map提高了1%。多scale的訓練,因爲網絡爲全卷積層,所以同樣的網絡可以預測不同分辨率的輸入,每10個batch隨機選擇一個新的image size。

1.3 YOLOV3

YOLO-v3在YOLO-v2的基礎上進行了一些改進。
用邏輯迴歸對矩形框置信度進行迴歸,對先驗與實際方框IOU大於0.5的作爲正例,與SSD不同的是,若有多個先驗滿足目標,只取一個IOU最大的先驗。
對每個類別獨立地使用logistic regression,用二分類交叉熵損失作爲類別損失,可以很好地處理多標籤任務。
利用多個scale進行預測,實際使用3個不同的scale。將前兩層的feature-map進行上採樣,與開始的feature-map進行concat起來,加一些卷積層,然後進行預測。

2. YOLO V3與SSD對比

在這裏插入圖片描述
YOLOv3 爲什麼速度比ssd快?
1)分類器不同,ssd採用了softmax分類器。而yolov3則使用了多logistic分類器分別針對每個類進行二分類,只用設置閾值,便可以大批量篩選;
2)yolov3的默認框選取採用了聚類的方式;
3)在ssd預測時,每次預測的bbox都是在defalut bbox上基礎上,預測出其偏移量。

3. SNIPER

爲了實現對圖片上不同大小目標的檢測,需要針對multi-scale提出有效方法。現在很多先進的目標檢測算法,比如Faster R-CNN/Mask R-CNN,它們實現multi-scale的思路除了使用anchor的思想之外,一般還都包括一種常用的手段,那就是 image pyramid,這方法在早期的目標檢測算法中是經常使用的方法。但是我們知道的,這種方法肯定會嚴重影響速度,不管是訓練還是inference,不過但凡是用了這種方法的一般都是爲了追求高精度,而暫時不注重速度。
image pyramid 影響速度的原因也很明瞭,每一個scale的圖片的所有像素都參與了後續的計算。比如一個3scale的image pyramid(分別是原圖的1倍,2倍,3倍),它要處理相當於原圖14倍的像素.
在CVPR2018上有這樣一篇文章,An Analysis of Scale Invariance in Object Detection。這篇文章分析了小尺度與預訓練模型尺度之間的關係, 並且提出了一個和 Cascade R-CNN 有異曲同工之妙的中心思想: 要讓輸入分佈接近模型預訓練的分佈(本文主要探討尺度的分佈不一致帶來的問題). 之後利用分析的結論, 提出了一個多尺度訓練(MST)的升級版:Scale Normalization for Image Pyramids (SNIP)
SNIP借鑑了Multi-Scale Training(MST)的思想,在MST方法中,由於訓練數據中尺寸極大或極小的目標會影響實驗結果,因此SNIP的做法就是隻對尺寸在指定範圍內的目標回傳損失(該範圍需接近預訓練模型的訓練數據尺寸),也就是說訓練過程實際上只是針對這些目標進行的,這樣就能減少domain-shift帶來的影響。又因爲訓練過程採用了類似MST的做法,所以每個目標在訓練時都會有幾個不同的尺寸,那麼總有一個尺寸在指定的尺寸範圍內。
在這裏插入圖片描述
代碼:SNIPER

4. CornerNet

這篇發表在ECCV2018上的目標檢測文章給人一種眼前一亮的感覺,
1、將目標檢測問題當作關鍵點檢測問題來解決,也就是通過檢測目標框的左上角和右下角兩個關鍵點得到預測框,因此CornerNet算法中沒有anchor的概念,這種做法在目標檢測領域是比較創新的而且能夠取得不錯效果是很難的。
2、整個檢測網絡的訓練是從頭開始的,並不基於預訓練的分類模型,這使得用戶能夠自由設計特徵提取網絡,不用受預訓練模型的限制。
在這裏插入圖片描述

4.1 anchor機制的缺點

目前大部分常用的目標檢測算法都是基於anchor的,比如Faster RCNN系列,SSD,YOLO(v2、v3)等,引入anchor後檢測效果提升確實比較明顯(比如YOLO v1和YOLO v2),但是引入anchor的缺點在於:
1、正負樣本不均衡。大部分檢測算法的anchor數量都成千上萬,但是一張圖中的目標數量並沒有那麼多,這就導致正樣本數量會遠遠小於負樣本,因此有了對負樣本做欠採樣以及focal loss等算法來解決這個問題。
2、引入更多的超參數,比如anchor的數量、大小和寬高比等。

4.2 創新點

論文的第一個創新是講目標檢測上升到方法論,基於多人姿態估計的Bottom-Up思想,首先同時預測定位框的頂點對(左上角和右下角)熱點圖和embedding vector,根據embedding vector對頂點進行分組。
論文第二個創新是提出了corner pooling用於定位頂點。自然界的大部分目標是沒有邊界框也不會有矩形的頂點,依top-left corner pooling 爲例,對每個channel,分別提取特徵圖的水平和垂直方向的最大值,然後求和。
在這裏插入圖片描述
論文的第三個創新是模型基於hourglass架構,使用focal loss[5]的變體訓練神經網絡。
在這裏插入圖片描述
代碼:CornerNet

5. TridentNet

圖像金字塔和特徵金字塔本質上都是希望不同尺度的目標有不同的感受野,這樣提取到的特徵才比較全面,因此TridentNet算法(2019.6)從感受野入手,通過引入空洞卷積增加網絡的感受野,從而實現不同尺度目標的檢測。
在這裏插入圖片描述

5.1 感受野和檢測效果之間到底存在什麼關係?

作者做了一個關於感受野和檢測效果之間的聯繫的對比實驗,實驗結果如Table1所示。這個實驗通過修改Faster RCNN算法的特徵提取網絡中卷積層的dilation參數控制感受野大小,當dilation參數爲1時等效於常規卷積層。可以看出不同尺度目標的最高AP值對應的dilation參數(也就是不同感受野)是不同的,而且存在明顯的規律,這說明針對目標尺度大小設計對應的感受野可以使檢測模型的整體效果達到最佳,這也是TridentNet算法的主要思想。
在這裏插入圖片描述

5.2 改進點

  1. 第1個改進點是將原本特徵提取網絡(backbone)的單支路卷積層替換成3個支路且dilated參數不同的dilated卷積層,這就是論文中提到的多分枝(multi-branch)思想。以特徵提取網絡ResNet爲例,就是將residual block中的3×3卷積層替換成Figure2中的3支路3×3卷積層,dilated參數分別爲1、2、3。
  2. 第2個改進點是權重共享(weight sharing among branches),是指3個支路的卷積層參數是共享的(差別僅在於dilated參數),這麼做的原因是一方面可以減少網絡前向計算的時間,另一方面網絡學到的參數有更好的泛化能力。還有一個好處在於inference,文中提到了一種快速inference做法:選擇一個分支的輸出作爲最終結果,假如沒有權重共享,那麼單分支的結果很難近似多分支結果。
  3. 第3個改進點是指定尺度過濾訓練(scale-aware training scheme),是指不同dilated參數的3個支路分別檢測不同尺度的目標。還記得Table1的實驗結果嗎?不同尺度的目標所對應的網絡最佳感受野是不同的,因此可以爲這3條支路分配不同尺度的目標(和SNIP的思想有點類似),比如對於dalated參數爲3的支路而言,感受野更大,大尺度目標的檢測效果好,因此就分配尺度較大的目標,實現上可以通過判斷RoI的尺寸後將尺度符合定義的目標輸入該支路進行訓練。這種方法減少了每條支路所訓練的目標尺寸差異,雖然訓練樣本也少了,但由於權重是共享的,所以效果不會下降。
    在這裏插入圖片描述

5.3 空洞卷積

空洞卷積(atrous convolutions)又名擴張卷積(dilated convolutions),向卷積層引入了一個稱爲 “擴張率(dilation rate)”的新參數,該參數定義了卷積核處理數據時各值的間距。
該結構的目的是在不用pooling(pooling層會導致信息損失)且計算量相當的情況下,提供更大的感受野。
空洞卷積(Dilated convolutions)在卷積的時候,會在卷積核元素之間塞入空格。
在這裏插入圖片描述
普通卷積主要問題

  1. Up-sampling / pooling layer (e.g. bilinear interpolation) is deterministic. (a.k.a. not learnable)內部數據結構丟失;
  2. 空間層級化信息丟失;
  3. 小物體信息無法重建 (假設有四個pooling layer則任何小於 2^4 = 16 pixel的物體信息將理論上無法重建。)在這樣問題的存在下,語義分割問題一直處在瓶頸期無法再明顯提高精度,而dilated convolution 的設計就良好的避免了這些問題。
    而空洞卷積就有內部數據結構的保留和避免使用 down-sampling 這樣的特性,優點明顯。

代碼: simpledet

三、人臉識別

絕大多數人臉識別都包含如下幾個流程:人臉檢測(Face Detection)、人臉對齊(Face Alignment)、人臉表示(Face Representation)和人臉匹配(Face Matching)。
在這裏插入圖片描述

3.1 人臉檢測

3.1.1 DSFD: Dual Shot Face Detector

在這裏插入圖片描述

3.1.2 Joint Face Detection and Facial Motion Retargeting for Multiple Faces

在這裏插入圖片描述

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