基于關鍵點
<<CornerNet: Detecting Objects as Paired Keypoints>>
目標框由左上角點和右下角點確定,所以要預測一個目標框的位置大小代兵,可轉(zhuǎn)換為生成兩個角點的熱力圖秽梅。對于多個目標,會有多個角點對拯辙,如何區(qū)分郭变?添加一個embedding預測項!如果一個左上角點和一個右下角點的embedding相近涯保,表示兩個點“對上眼了”诉濒,可以組成一個目標框。為了使得預測的框的坐標更為準確夕春,添加一個offset預測項未荒,對于預測的角點進行坐標修正。
角點有什么特征呢及志?人呢片排,自然知道——矩形框的一橫一豎相交處就是角點嘛,然而網(wǎng)絡不容易知道啊速侈,教教它吧率寡!引入corner pooling。
前向推理:
1倚搬、在角點熱力圖中冶共,使用3*3的池化層做了個NMS。
2潭枣、取出top-100個左上比默,右下點,通過offset調(diào)整角點位置盆犁。
3命咐、計算左上,右下角點embedding的L1距離谐岁,距離小的醋奠,類別一樣的構(gòu)成目標框榛臼。角點得分的平均作為置信度。
<<Bottom-up Object Detection by Grouping Extreme and Center Points>>
一個目標框可以用左上右下角點組成窜司,還可以用左下右上角點極左沛善、極右,極上塞祈,極下四個點組成金刁,比如一個菱形,過左右極點做豎線议薪,過上下極點做橫線尤蛮,這樣一個外接矩形框就出來了。
這么多極點的預測結(jié)果斯议,怎么組合产捞?慢慢遍歷吧。哼御。坯临。同時添加目標中心點熱力圖的預測,根據(jù)極點構(gòu)成的框框的中心點在中心點熱力圖的得分情況恋昼,對預測結(jié)果進行過濾看靠。
一般沒有數(shù)據(jù)集標注極點,所以只能自己動手焰雕,豐衣足食衷笋,使用extreme click annotations或者通過算法對已有標簽進行處理來生成真值標簽。
<<CenterNet: Keypoint Triplets for Object Detection>>
首先“diss”一下cornerNet——你固然是好矩屁,然而不夠好辟宗。為何不再加個中心點熱力圖預測呢?
前向推理:
1吝秕、由CornerNet提出的方法選擇top-k的目標框
2泊脐、選擇分數(shù)為top-k的中心關鍵點,結(jié)合offset烁峭,remap到輸入圖像大小
3容客、對于每個目標框,定義一塊中心區(qū)域约郁,檢查一下中心點是不是在中心區(qū)域內(nèi)缩挑,且類別是否一致。(中心區(qū)域選擇:根據(jù)目標尺度來鬓梅,對于小目標供置,選大點,對于大目標绽快,選小點芥丧。比如目標框大于150像素紧阔,5 * 5劃分,目標小于150像素续担,3 * 3劃分擅耽,選中間1 * 1的格子。)
4物遇、如果中心點和中心區(qū)域匹配上了乖仇,置信度值是左上角,右下角询兴,中心點三者平均这敬;沒有匹配,則刪除
既然cornerNet搞了個corner pooling蕉朵,順勢而為,center pooling水到渠成阳掐。順便幫corner pooling再改進下——cascade corner pooling始衅。
<<Objects as Points>>
大家用(x,y,w,h)訓練darknet是那么的熟練,然而現(xiàn)在缭保,角點汛闸,極點,一堆“花里胡哨”的艺骂,回歸初心吧——中心點熱力圖預測+中心點offset回歸+框的寬高回歸诸老。
密集預測
既然不用anchor,那么可以對于特征圖上的每個點都產(chǎn)生一個預測嘛钳恕。咦别伏,yolov1不就是這么做的,當然分成7 * 7的區(qū)域有點粗糙忧额。厘肮。。
<<Feature Selective Anchor-Free Module for Single-Shot Object Detection>>
在Retinanet基礎上睦番,fpn的每層輸出加兩個分支用于anchor-free預測类茂。
真值生成:原圖目標框b投影到特征圖中,大小為
托嚣,定義effective box為
(正樣本)巩检,定義 ignoring box為
(梯度不回傳),寬高分別為
的0.2和0.5倍示启。
對分類輸出兢哭,白色區(qū)域表示目標所在區(qū)域,灰色區(qū)域為忽略區(qū)域丑搔,黑色為負樣本區(qū)域厦瓢。計算focal loss提揍。
對于坐標輸出,對于里面所有的pixel(i,j)煮仇,預測四個坐標劳跃,分別是(i,j)與
的上下左右邊的偏移。effective box外面不計算loss浙垫。
在線特征選擇:FSAF module對于每個實例刨仑,根據(jù)其特征,選擇該在哪個特征層進行預測夹姥,而不是像anchor-based方法只用目標的大小杉武。
<<FCOS: Fully Convolutional One-Stage Object Detection>>
對于特征圖上的一個像素點 (x, y),反投影到輸入圖像上辙售,坐標為(xs+s/2,ys+s/2)(s為當前特征圖的stride)轻抱。如果落在gt框中,那么該點為正樣本旦部。
但是如果用所有的這些“正樣本點”進行l(wèi)oss計算祈搜,會帶來2個問題:第一個,如果這個點是兩個目標框相交區(qū)域內(nèi)的點士八,那么這個點該預測哪一個目標呢容燕?第二個,如果這個點在目標角落處婚度,其需要預測的(t,b,l,r)值相差很大蘸秘,預測的框不靠譜。
針對第一個問題蝗茁,利用多尺度預測醋虏,將不同目標分配給不同層進行預測,消除歧義性评甜。尺度m2, m3, m4, m5, m6 m7 設置為 0, 64, 128, 256, 512 和無窮灰粮;如果要回歸的真值
針對第二個問題旬薯,使用 Center-ness得分晰骑,表示目標框內(nèi)的像素點距離中心的偏移程度,真值計算如下式所示。在推理時硕舆,目標框的得分是Center-ness得分乘以類別得分秽荞,因此距離中心點較遠的點的預測結(jié)果置信度會被拉低,去除這些低質(zhì)量的預測結(jié)果抚官。