DEKR 解構(gòu)式人體關(guān)鍵點(diǎn)回歸(二):標(biāo)簽分配(Label Assignment)
前言
上一期 DEKR 解構(gòu)式人體關(guān)鍵點(diǎn)回歸(一):算法思想與原理 解析了DEKR的算法與工作原理,這期本文將聚焦于標(biāo)簽分配。當(dāng)然,首先得了解標(biāo)簽是什么,明確模型的學(xué)習(xí)目標(biāo),然后再進(jìn)一步看看如何制作與分配標(biāo)簽。
目錄
I. 定義標(biāo)簽
II. 標(biāo)簽分配
定義標(biāo)簽
通過上一期,我們了解到DEKR會(huì)針對(duì)每類關(guān)鍵點(diǎn)解構(gòu)式地回歸出它們的位置,因此容易想到標(biāo)簽必須含有關(guān)鍵點(diǎn)的位置。于是,這就是回歸任務(wù)對(duì)應(yīng)的標(biāo)簽。但是回歸位置并非是直接預(yù)測(cè)關(guān)鍵點(diǎn)的坐標(biāo),而是基于偏移(offset)的形式。
除此之外,既然我們利用網(wǎng)絡(luò)提取了關(guān)鍵點(diǎn)特征,那么這些特征就應(yīng)該利用起來對(duì)關(guān)鍵點(diǎn)進(jìn)行識(shí)別。因此,還需要設(shè)置一個(gè)分類標(biāo)簽,而對(duì)關(guān)鍵點(diǎn)進(jìn)行識(shí)別通?;跓岫葓D(heatmap)的形式。
綜上,訓(xùn)練的標(biāo)簽包含兩種:
一種對(duì)應(yīng)于分類任務(wù),是heatmap的形式,在其中只有關(guān)鍵點(diǎn)所在位置才有非0值,這種是最直觀的hard形式,而在實(shí)際操作中通常會(huì)采用soft形式:以關(guān)鍵點(diǎn)位置為中心,中心值為1向四周逐漸衰減,最經(jīng)典的莫過于高斯核;
而另一種則對(duì)應(yīng)于回歸任務(wù),是offset的形式,即:每個(gè)特征點(diǎn)位置都計(jì)算當(dāng)前位置與各關(guān)鍵點(diǎn)的距離(坐標(biāo)差值)。但是,直接這樣做是會(huì)出問題的,因?yàn)橐环鶊D像中往往有多個(gè)人,那么如果一個(gè)特征點(diǎn)去回歸所有人的關(guān)鍵點(diǎn)位置那明顯模型會(huì)不好學(xué)習(xí),而且計(jì)算量也大。因此,一種更合理的方式應(yīng)當(dāng)是:特征點(diǎn)選擇距離其最近的人的關(guān)鍵點(diǎn)進(jìn)行回歸。然而,DEKR實(shí)際是如何實(shí)現(xiàn)的呢?CW在下一節(jié)為大家揭曉。
標(biāo)簽分配
Heatmap
其實(shí)在上一節(jié)已經(jīng)大致揭曉答案了,就是采用高斯核的方式:在每個(gè)關(guān)鍵點(diǎn)位置以其為中心向四周擴(kuò)散,只有處于核半徑范圍內(nèi)的位置
才屬于正樣本,對(duì)應(yīng)的標(biāo)簽值根據(jù)高斯函數(shù)計(jì)算:
至于負(fù)樣本嘛,它們的標(biāo)簽值當(dāng)然就是0啦,你是不是這樣想?這里還真不是,DEKR“寬宏大量”——給了它們值為0.1的權(quán)重。
那么問題來了,如果一個(gè)正樣本(x,y)處于多個(gè)關(guān)鍵點(diǎn)的高斯核半徑范圍內(nèi),那么它應(yīng)該負(fù)責(zé)預(yù)測(cè)哪個(gè)關(guān)鍵點(diǎn)?標(biāo)簽值該如何設(shè)置?
最直接拍腦袋的做法——選擇最近的那個(gè)關(guān)鍵點(diǎn)去預(yù)測(cè)。那么,對(duì)應(yīng)的標(biāo)簽值就是最大的那個(gè)。因?yàn)橛筛咚购瘮?shù)的公式可知,距離中心越近函數(shù)值越大。
另外,還有個(gè)重點(diǎn)需要說明下,就是DEKR不僅為各類關(guān)鍵點(diǎn)(COCO是17類)制作了heatmap,而且還為一種被稱為中心點(diǎn)的虛擬關(guān)鍵點(diǎn)(后簡(jiǎn)稱虛擬中心點(diǎn))制作了heatmap。這種虛擬中心點(diǎn)與人一一對(duì)應(yīng),其坐標(biāo)值就是每個(gè)人所有關(guān)鍵點(diǎn)的坐標(biāo)均值。
這個(gè)虛擬中心點(diǎn)很關(guān)鍵,因?yàn)榻酉聛淼膐ffset標(biāo)簽主要是基于它進(jìn)行分配的。
這樣,heatmap的shape最終將是,其中
指的是有幾種關(guān)鍵點(diǎn)(COCO的話就是17種),+1就是加上了虛擬中心點(diǎn),
即輸出特征圖的高和寬。
Offset
其實(shí)這部分的思想和以上Heatmap那里的差不多,只不過不是基于高斯核的方式,而是直接設(shè)定一個(gè)距離r ,以虛擬中心點(diǎn)為中心, 橫、縱坐標(biāo)與虛擬中心點(diǎn)的距離都不超過r 的位置(x,y) 則為正樣本,其標(biāo)簽值由該位置坐標(biāo)與各個(gè)關(guān)鍵點(diǎn)(COCO的話就是17個(gè))的坐標(biāo)作差計(jì)算得出:
這時(shí),問題又來了(CW是問題少年/女嗎..):如果一個(gè)正樣本(x,y) 處于多個(gè)虛擬中心點(diǎn)(也就是對(duì)應(yīng)多個(gè)人)的有效范圍內(nèi),那么它該回歸哪個(gè)人的關(guān)鍵點(diǎn)位置呢?
DEKR的做法是:選擇面積最小的人去回歸。至于每個(gè)人的面積,則是根據(jù)其中關(guān)鍵點(diǎn)之間的最遠(yuǎn)距離來計(jì)算。
可能有靚仔靚女們會(huì)問:為何這里不能像上述Heatmap部分那樣選擇最近的關(guān)鍵點(diǎn)進(jìn)行回歸呢?如果那樣的話,一個(gè)正樣本就可能回歸多個(gè)人的關(guān)鍵點(diǎn)位置,而正樣本是要被模型看作(學(xué)習(xí))虛擬中心點(diǎn)的位置,其與人是一一對(duì)應(yīng)的,也是就說,在宏觀意義上,它被視作一個(gè)人。
因此,DEKR的做法,就能保證正樣本回歸的關(guān)鍵點(diǎn)都是屬于同一個(gè)人的。
另外,由于在圖像中,遠(yuǎn)近高低各人的尺度不一,因此直接回歸絕對(duì)坐標(biāo)的差值是不理智的,易造成模型傾向于大(尺度)人物(大尺度容易有大差值,大差值產(chǎn)生大loss,大大大..)。
于是,上述提到的人物面積就該“出場(chǎng)”(寂寞了吧)了!面積大小即尺度大小,于是可以使用面積對(duì)坐標(biāo)差值進(jìn)行歸一化,這樣就消除了尺度帶來的影響。當(dāng)然,由于面積是距離的二次方,因此還需要先對(duì)它開個(gè)根號(hào)。
Preview
下一期,CW將攜手損失函數(shù)與大家見面。