1. 程式人生 > >論文筆記(CPN):Cascaded Pyramid Network for Multi-Person Pose Estimation

論文筆記(CPN):Cascaded Pyramid Network for Multi-Person Pose Estimation

 

該論文發表在2018年CVPR上,用於多人姿態估計的級聯金字塔網路

arxiv論文地址:https://arxiv.org/abs/1711.07319

github程式碼:https://github.com/GengDavid/pytorch-cpnhttps://github.com/chenyilun95/tf-cpn

對於目前多人姿態估計中仍然存在的問題(遮擋點,不可見點和擁擠的背景,是的人體關鍵點檢測存在的問題),作者將其原因歸納為兩點:

1)作者認為,只通過表層特徵不能識別這些“難點”,例如:軀幹點;

2)在訓練過程中沒有明確解決這些“難點”的檢測問題;

因此,在本文中,作者提出了一種新的網路結構,稱為Cascaded Pyramid Network(CPN)級聯金字塔網路

,該網路可以有效緩解“hard” keypoints的檢測問題,CPN網路分為兩個階段:GlobalNet和RefineNet。GlobalNet網路是一個特徵金字塔網路,該網路用於定位簡單的關鍵點,如眼睛和手等,但是對於遮擋點和不可見的點可能缺乏精確的定位;RefinNet網路該網路通過集合來自GolbalNet網路的多級別特徵來明確解決“難點”的檢測問題。

本文作者的工作有三大創新點:

  • 作者提出了一個新的有效的網路:CPN,該網路由GlobalNet和RefineNet網路構成;
  • 作者分析了在top-down結構中問題對於多人姿態估計產生影響的不同因素;
  • 作者的演算法實現了在challenging COCO multi-persion keypoint benchmark資料集上的最好的結果,在test-dev dataset上達到73.0AP,在test challenge dataset 上達到72.1AP。

在本論文中,作者採用了top-down的路線:先在image上使用一個human detector得到人的bounding-boxes,然後再使用cpn網路盡心關鍵點的檢測;本文重心在cpn網路實現的關鍵點檢測。

Our Approach for Multi-person Keypoints Estimation

一. Human Detector

檢測演算法作者使用FPN和Mask RCNN網路,以得到每個人的bounding-boxes,然後使用bounding-boxes對原圖進行裁剪,並將裁剪後的結果用於CPN網路的輸入進行關鍵點檢測。

二. cascaded Pyramid Network(CPN)

作者提出的網路結構如下,可以看到該網路由兩個子模組構成:GlobalNet和RefineNet。

2.1 GlobalNet

該網路的基礎網路採用resnet網路,以resnet50為例,使用在imagenet上預訓練的resnet50網路,然後使用該網路提取特徵,分別使用1/4,1/8,1/16,1/32四個級別的網路特徵(conv2_x, conv3_x, conv4_x, conv5_x的輸出),然後在GlobalNet中分別將四層特徵的通道轉換為相同的通道數,此時,得到了四層通道數相同的特徵圖,該四層特徵用兩個用途:

用途一:對該四層網路特徵做如下操作:低層特徵進行上取樣,與上一層特徵進行相加,即不同尺度特徵進行融合,最終得到融合了低層特徵的四層特徵,最後對該四層特徵分別進行通道轉換(轉換為與關鍵點數目相同的通道數)並都上取樣到1/4大小,用於計算該階段的L2 loss)(四層輸出分別和四種不同的高斯分佈的label進行損失計算)。

用途二:對於四層特徵,在RefineNet中進行使用, 見2.2。

小結:通過GlobalNet網路,可以對簡單的點進行有效的關鍵點檢測,但是對於不可見的關鍵點的檢測,效果仍然不佳,如下圖:對於left eye(簡單點)特徵圖上的啟用區域的groundtruth中的位置和接近,說明在GlabalNet階段,該網路對於這種簡單點的檢測已經達到了很不錯的效果;但是看left hip(難檢測的點),在特徵圖上,還幾乎沒有啟用區域呢,說明在該階段網路並不能有效檢測到該類別點,所以作者又設計了後續的RefineNet網路,專門用於檢測類似這種的難檢測的點,在下圖中,也可以看到,經過RefineNet之後,該網路已經可以有效檢測到難檢測點了。作者將檢測點通過兩個階段的網路進行檢測,這種想法很值得我們學習。

2.2 RefineNet

在GlobalNet中,得到了四層特徵圖,作者通過給每一層特徵圖設計了不同的數量的botleneck塊,再分別經過不同倍率的上取樣,然後經過concat操作後,達到了對不同尺度特徵的結合,最後經過一個bottlenet塊,再經過簡單的變換,得到網路的最終的輸出。

注意:L2 loss和L2 loss*的區別,在GlobalNet中,使用L2 loss,即GlobalNet網路的輸出和label計算所有關鍵點的loss;在RefineNet中,使用L2 loss*,即網路輸出和label計算所有關鍵點的loss,然後對loss進行從大到小排序,最後選擇top-k個loss用於網路的反向傳播。

三. Experiment & Discussion

Datasets:使用MS COCO trainval dataset(包含57k images and 150k person instances)和驗證集:MS
COCO minival dataset (includes 5000 images);測試集:test-dev set (20K images) and test-challenge
set (20K images)。

Experiments:

(1):可以看到cpn網路可以取得AP:69.4的效果;

(2)該實驗說明在refinenet階段,每個層級的特徵使用不同個數的boottleneck塊,達到的檢測效果;

(3)該實驗說明,使用哪幾層的特徵可以達到良好的效果;

(4)  該實驗說明在refineNet中計算loss後選取M個loss作為網路的訓練,下表中可以看到不同的M值,該網路得到的不同的AP值;

(5)下表說明,在CPN網路中,採用不同的loss形式帶來的檢測效果,可以看到GlobalNet中採用L2 loss,RefineNet中採用L2 loss *,cpn網路可以達到最優的效果。