論文閱讀筆記 — 3D人體姿態辨識 LCR-Net: Localization-Classification-Regression for Human Pose
這周要跟大家介紹的3維人體動作識別LCR-Net原始論文連結如下 (https://openaccess.thecvf.com/content_cvpr_2017/papers/Rogez_LCR-Net_Localization-Classification-Regression_for_CVPR_2017_paper.pdf).
在Youtube上面可以看到在conference上的影片介紹
模型預測的結果如圖1, 從圖1中可以知道LCR-Net可以進行影像中多人的3維與2維人體關鍵點預測, 而LCR三個英文字母分別代表的是Localization-Classification-Regression的縮寫.
LCR每個英文字母分別代表這個模型中的3個步驟, 其中Localization代表找出影像中可能有人存在的區域, 接著將這個區域中的人物影像與事先設定好K組可能的姿態(作者稱這K組事先選出來的姿態為anchor pose)進行比對, 以得到影像中的姿態與這K組anchor pose中哪一個最為接近 (Classification), 以及這個影像動作與anchor pose之間的誤差(Regression), 模型的架構如圖2所示.
圖2中可以看到我們剛剛所說的Localization, Classification與Regression這三個步驟, 最終的Loss就是這3個步驟的總和如下, 接下來我們針對這3個步驟做詳細說明.
首先Localization的部分, 作者也把這個部分稱為Pose Proposal Network, 骨幹採用的是VGG-16, 並參照Faster R-CNN裡面的Regional Proposal Network (RPN), 選出影像中人物所在的區域, RPN網路架構如圖3, RPN針對每一個像素點, 都會提出9個Bounding box (3種大小與3種長寬比的組合), 並經由RPN網路去預測這個bounding box內是否有物品 (圖3上路, 經由1x1輸出9x2 = 18個特徵), 以及這個bounding box經RPN微調後的頂點座標 (圖3下路, 輸出9x4=36), 關於RPN的說明可以參閱圖3的連結.
而從RPN中可能會得到多組類似的動作, 如圖4所示, 作者提到他們除了用傳統NMS(Non-maximum suppression)的演算法挑出最高得分的姿態以整合附近區域重複的動作外, 另外也採用一個叫做Pose proposal integration(PPI)的方式將多個重複的動作整合.
在說明PPI前要先說明作者使用的符號定義, 人體姿態分為2維姿態的p與3維姿態的P. 其中p代表關鍵點在影像中的像素座標, P代表每個關鍵點相較於身體中心的3維座標 (以公尺為單位). s(p, P)代表姿態在分類器得到的分數高低.
在PPI中會先挑出最高分數的(p*, P*)如下
並過濾與最高分數3維座標中距離太遠(>T3D)的點群P’如下:
最終將這些距離內的點群利用他們的分類分數s(q, Q)作為權重與座標相乘後加總平均得到最終的座標p如下式:
上式列出的只有2維座標的表示方式, 3維座標也是採用相同的方法, 另外S是所有分類分數的總和如下, S =
以上就是PPI整合重複姿態的方式, 另外在每張影像中最多選出32個Bounding box, 而Localization的loss就是RPN的loss如下:
而Classification的部分如圖2所示, 會針對K組anchor pose, 判斷影像中的姿態與哪一組anchor pose最相近, loss function定義如下,
上式中u代表的是機率分布, 也就影像中姿態與K組anchor pose中每一個姿態相近的機率, 而cB屬於{0…K}, 代表屬於某個anchor pose的label. 要將訓練資料中的影像給定屬於某個anchor pose則用下式定義, 式子中Ak就是K組anchor pose中第k組的3維座標, P則是訓練資料中真正的3維座標, 也就是ground truth, 兩個關鍵點座標誤差距離最小的就定義該影像屬於那個類別.
Regression的部分如圖5所示, 圖5最左側是我們選出最接近ground truth的anchor pose, 圖5中間則是影像中正確的3維座標, 而我們回歸的目標, 就是圖5最右側的圖, 要回歸出ground truth與我們anchor pose之間對應關鍵點的誤差距離向量.
將我們的目標向量用公式表示如下, 式子中p~, P分別代表ground truth的2維與3維座標, a~cB與AcB則是anchor pose的2維與3維座標.
Loss function是採用Smooth-L1 loss如下, tcB就是我們剛剛定義的, vcB則是我們要透過網路回歸出的向量, vcB的大小為(K+1) x 5 x #joints, 5代表2+3, 就是2個2維座標與3個3維座標之合, 而#joints這篇論文採用13個關鍵點.
Smooth-L1定義如下:
到這邊了解了整個模型的方法, 至於我們一直提到K組anchor pose是如何得到的呢? 作者提到他們從300,000張影像的3維座標中, 利用K-means的方法去篩選出K組最具代表性的anchor pose, 並進一步去比對選擇不同的K值可得到最佳的關鍵點精度如表1所示, 從表中可以知道當K=100時可以有最小的誤差.
另外本篇所採用的3維資料集是Human3.6M, 2維資料集則是MPII. Human3.6M包含了11個演員的17種動作, 並有4種不同攝影角度. 為了能夠與其他論文進行比較, 作者採用了3種方法. 第一種方法P1為採用S1, S5, S6, S7, S8, S9 6個人的影片作為訓練, S11/第2攝影機的資料做為測試. 第2種方法P2使用S1, S5, S6, S7, S8作為訓練, S9與S11用以測試, 第3種方法P3用於訓練與測試的受試者號碼與P2相同, 但使用第3攝影機與trial 1的資料, 3種方法的比較如表2, LCR-Net有搭配NMS以及PPI的作法, 可以看到搭配PPI可以得到較小的誤差.
最後列出與其他方法比較的結果如表3