持續更新......
概括:以往很多論文藉助深度資訊將2D上升到3D,這篇論文則是想要用網路訓練代替深度資料(裝置成本比較高),提高他的泛性,詮釋了只要合成資料集足夠大和網路足夠強,我就可以不用深度資訊。這篇論文的思路很清晰,主要分為三個部分:
1、HandSegNet
2、PoseNet
3、the PosePrior network
第1、2個網路主要是藉助 Convolutional Pose Machines 這篇論文的網路進行設定, 通過卷積圖層表達紋理資訊和空間資訊提取出手的位置(只是對第一個網路新增了二值化處理形成了handmask 的中間輸出),由於手勢比較小,因此對手的位置進行裁剪成為第二個網路的輸入,以類似的方式提取關節的位置(score map)。
本論文的核心是第三個網路,該網路以score map 作為輸入,進行網路的訓練估計正則化框架WC內的三維座標,並分別估計旋轉矩陣R(Wrel),根據公式反求出wc (rel)。
為什麼2D資料可以直接通過網路進行3D的估計?
關鍵在於方法用的是合成資料集(synthetic dataset (R-val) ),什麼是合成資料集呢?Unity大家一定不陌生。通過類似Unity的引擎我們可以模擬各種場景、光線下的人物,根據自己的需要去製作大量的資料集,解決計算機視覺領域缺少資料集的短板。但是,這只是合成資料集的其中一個好處,最大的好處在於由於我們通過引擎模擬人物,那麼這個人物的資料我們是有的,即我們可以知道人物三維手勢各個關節的相對位置和絕對位置(ground truth),因此我們可以通過這些資料進行訓練,從而達到不用深度資料就可以3D訓練的效果。
為什麼要用一個canonical frame呢?
論文中這樣定義:
給定一個顏色影像I∈RN×M3顯示一隻手,我們想推斷它的三維姿態。 我們用一組座標wi=(xi,yi,zi)來定義手姿,它描述了J關鍵點在三維空間中的位置,即在我們的情況下,用J=21來∈[1,J]。
s將某對關鍵點之間的距離歸一化為單位長度。
深度資料限制了我們可以脫離整個影像,如果不用深度資料,我們的目光就只需要針對一隻手,以手建立物件來研究他的屬性。論文中,作者將關節之間的距離歸一化,並且手心關節這一個關鍵點作為標誌(land mark),計算其他關節到手心關節點的距離,從而構成一個canonical frame。第三層網路則是不斷將canonical frame測量值和ground truth 採用L2 損失對兩個估計值WC內的三維座標和旋轉矩陣R(Wrel)進行訓練。
為什麼要用旋轉矩陣將視角統一?
我的理解是如果將視角統一,那麼手勢的所有可能形式將大大地減少,這樣子網路訓練準確率將提高。
論文學習知識補充(之後遷移到其他地方)
ill-posed problems
定義:滿足以下條件稱為適定問題(well-posed problem):1. a solution exists 解必須存在2. the solution is unique 解必須唯一3. the solution's behavior changes continuously with the initial conditions. 解能根據初始條件連續變化,不會發生跳變,即解必須穩定
理解:病態問題簡單來說就是結果不唯一,比如a*b=5,求解a和b的值就是病態問題。實際應用上很多問題都是病態問題,比如如果一個高溫的東西,你不能直接去測量他,你只能間接去測量他,間接可以構成一個模型等式y=f(x,h...),那麼我們得到測量值y,求解x,可見由於間接測量我們會受到其他無法測量的因素所影響,反向求x存在多個解,這就叫病態問題以對於病態問題,我們需要做各種先驗假設來約束他,讓他變成well-posed problem。
正則化與過擬合
摘錄整理
基本定義:對於大量的訓練資料,如果我們單純最小化誤差,那麼模型的複雜度就會上升(聯想一下maltab 的表示式很長很長),這樣子會讓模型泛化程度很小,所以我們定義規則函式,讓他不要過擬合,保持模型較為簡單(模型誤差小)。
還有另一種理解:規則函式就是拿前人的經驗讓你少走彎路。
還有第三種理解:規則化符合奧卡姆剃刀原理,從從貝葉斯估計的角度來看,規則化項對應於模型的先驗概率。民間還有個說法就是,規則化是結構風險最小化策略的實現,是在經驗風險上加一個正則化項(regularizer)或懲罰項(penalty term)。
對於最小化的目標函式:
Obj(Θ)=L(Θ)+Ω(Θ)
常用的損失函式:損失函式連結
訓練集上的損失定義為:L=∑ni=1l(yi,y^i)
1.0-1損失函式 (0-1 loss function): L(Y,f(X))={1,Y≠f(X)0,Y=f(X)
2.平方損失函式 (quadratic loss function) : L(Y,f(X))=(Y−f(x))2
3.絕對值損失函式 (absolute loss function) : L(Y,f(x))=|Y−f(X)|
4.對數損失函式 (logarithmic loss function) : L(Y,P(Y∣X))=−logP(Y∣X)
5.Logistic 損失:l(yi,yi)=yiln(1+eyi)+(1−yi)ln(1+eyi)
6.Hinge 損失:hinge(xi)=max(0,1−yi(w⊤xi+b)) ,SVM 損失函式,如果點正確分類且在間隔外,則損失為 0;如果點正確分類且在間隔內,則損失在 (0,1);如果點錯誤分類,則損失在 (1,+∞)
7.負對數損失 (negative log-likelihood, NLL):Li=−log(pyi),某一類的正確預測的失望程度 (>0),其值越小,說明正確預測的概率越大,表示預測輸出與 y 的差距越小
8.交叉熵損失 (cross entropy):首先是 softmax 定義為 pk=efk/∑jefj,其中 fk=Wx+b 表示某一類的預測輸出值,則某類的交叉熵損失為該類的輸出指數值除所有類之和。基於交叉熵和 softmax 歸一化的 loss
L=−1N∑i=1Nyi log ef(xi)∑ef(xi)
condition number
摘錄
如果一個系統是ill-conditioned病態的,我們就會對它的結果產生懷疑。那到底要相信它多少呢?我們得找個標準來衡量,因為有些系統的病沒那麼重,它的結果還是可以相信的,不能一刀切。終於回來了,上面的condition number就是拿來衡量ill-condition系統的可信度的。condition number衡量的是輸入發生微小變化的時候,輸出會發生多大的變化。也就是系統對微小變化的敏感度。condition number值小的就是well-conditioned的,大的就是ill-conditioned的。
低秩
摘錄整理
X是低秩矩陣。低秩矩陣每行或每列都可以用其他的行或列線性表出,可見它包含大量的冗餘資訊。利用這種冗餘資訊,可以對缺失資料進行恢復,也可以對資料進行特徵提取。
L1是L0的凸近似。因為rank()是非凸的,在優化問題裡面很難求解,那麼就需要尋找它的凸近似來近似它了。對,你沒猜錯,rank(w)的凸近似就是核範數||W||*。
L0和L1的關係
L1可以使矩陣稀疏化,可以提取特徵
L2可以防止過擬合,使得無關的引數更加小。
凸優化問題
為什麼不能用MSE作為訓練二元分類的損失函式呢?
因為用MSE作為二元分類的損失函式會有梯度消失的問題。
one hot編碼
摘錄
我們繼續之前,你可以想一下為什麼不直接提供標籤編碼給模型訓練就夠了?為什麼需要one hot編碼?
標籤編碼的問題是它假定類別值越高,該類別更好。“等等,什麼!”
讓我解釋一下:根據標籤編碼的類別值,我們的迷你資料集中VW > Acura > Honda。比方說,假設模型內部計算平均值(神經網路中有大量加權平均運算),那麼1 + 3 = 4,4 / 2 = 2. 這意味著:VW和Honda平均一下是Acura。毫無疑問,這是一個糟糕的方案。該模型的預測會有大量誤差。
我們使用one hot編碼器對類別進行“二進位制化”操作,然後將其作為模型訓練的特徵,原因正在於此。
當然,如果我們在設計網路的時候考慮到這點,對標籤編碼的類別值進行特別處理,那就沒問題。不過,在大多數情況下,使用one hot編碼是一個更簡單直接的方案。
OpenCV雙目視覺之立體校正
立體校正就是,把實際中非共面行對準的兩幅影像,校正成共面行對準。因為理想情況下計算距離需要兩個攝像機需要在同一水平上,但是現實生活中我們有時候多視角的照片不是在同一個水平上拍的,所以需要立體校正將圖片變成類似兩個攝像機在同一水平上拍攝出來的效果。
雙目立體視覺資料集 Stereo dataset
xx對,每一對可以通過立體校正後進行測距。
影像的先驗特徵
直觀的理解就是你對影像的瞭解,比如手勢估計中的手的大小其他已知的資訊。
這些先驗在很多影像task中可以作為loss中的正則化項,來迫使處理後的影像不會過於擬合。
梯度爆炸和梯度消失
@看【25】論文 與深度資料的區別
之後更新
@@怎樣用STB去訓練的?
之後去復現,目前認為是立體校正後將深度資料輸入網路進行訓練。