天天看點

anchor box隻是先驗知識,bounding box是一種過程,ground truth才是标準答案,

  • anchor boxes是一組提前預定義的邊框,這些框的寬高和資料集中目标物體的寬高大體是一緻的,換句話說,資料集中的絕大多數物體都能找到與其大小一緻的anchor box。
    • 舉例來說,如果資料集中包含蘋果、貓,那麼這組anchor boxes中就需要有和蘋果、貓大小相仿的邊框。為了盡可能多的覆寫資料集中可能出現的目标推的寬高,這些邊框具有不同的寬高比(aspect ratio)和尺度(scale)。
    • 邊框可以反應一個物體的大緻資訊,邊框的位置反應物體的大緻位置,寬高比反應物體的身材比例,尺度反應物體的大小。
  • anchor box +/-/×/÷偏移量所得到的框是bounding box,然而bounding box會生成很多,這些bounding box經過非極大值抑制(NMS)之後就是我們傳統意義上的預測值bounding box了。Ground truth box是真實标注框,也就是人工标注,一般被看作“真值”。
  • 為什麼需要anchor boxes
    • 物體檢測方法是非常直覺的,就是在圖檔上,截一小塊,檢測這一小塊包不包含物體,如果包含物體,該物體的位置就是剛剛截取的這個小塊的位置,同時再預測一下它的類别是什麼。那這種檢測方法和anchor box又有什麼關系呢? 其實,剛剛截取的這個小塊就是一個anchor box。
    • 圖檔上的每一處位置都有可能出現目标物體,并且目标的大小是不确定的。那有什麼辦法能檢出所有的物體呢?最容易想到的辦法就是,以一個像素為中心截取小塊時,截取很多個不同寬高比和大小的小塊,每個小塊都檢測一下,這樣就可以做到不漏掉這個像素上的任何寬高比和大小的物體了;為了檢出圖像中不同位置的物體,從左到右,從上到下,把圖像掃描一遍,每個像素上都取很多小塊進行檢測,這樣就可以保證不同位置、不同大小的物體都不漏掉了。
    • 這種方法容易了解并且确實有效,但是缺點也是突出的----計算量太大了。假如一張圖檔大小為640*640,在圖像中每一個像素上取10個不同寬高比不同大小的框做檢測,則需要檢測的框就會有640 x 640 x 10 = 4096000,太多了。
    • 這種方法有兩個明顯可以改善的點,一是4096000個掃描框重疊(overlap)太多了,一是這些框裡有很多框是背景,不包含物體,沒有檢測的必要。是以,設法在保證覆寫(cover)整張圖的基礎上,略去重疊太嚴重的框,避開背景框,找高品質的、可能包含目标物體的候選框進行檢測就顯得尤為重要,可以以此來降低運算量,提高檢測速度。
    • anchor boxes就是我們在檢測之前确定的一系列候選框。我們預設,圖檔上會出現的所有物體,都會被我們設定的anchor boxes所覆寫。anchor box選擇的好壞直接關系到兩個方面:一是能不能很好的覆寫整張圖,一是能不能框住圖檔中可能出現的每個物體。是以anchor box的設定非常重要,既關系到精度的好壞,又關系到速度的快慢(速度僅就以上所說的掃描法而言)。
  • anchor boxes是怎麼生成的
    • 舉例來說明:假如要在一個資料集上做物體檢測, 該資料集的圖檔分辨率均為256 pixel * 256 pixel, 資料集裡絕大多數數目标物體的尺寸為 40 pixel * 40 pixel或80 pixel * 40 pixel。
    • 高寬比(aspect ratio)的确定
      • 這說明資料集中絕大多數物體的真值邊框的高寬比為1:1和2:1. 根據這個資訊就可以确定錨框的高寬比資訊:為這個資料集設計anchor boxes時其高寬比至少需要包括1:1和2:1. 這裡舉例為友善就隻取1:1和2:1。
    • 尺度(scale)的确定
      • 尺度是指物體的高或寬與圖檔的高或寬之間的比值。以像素為機關表示目标物體和圖檔的尺寸,如果圖檔的寬為256 pixel,物體的寬為40 pixel,則該物體的尺度為40/256=0.15625,也就是說該物體占了圖檔15.62%的寬度。
      • 為了選一組能更好的代表資料集裡目标的尺度的尺度,我們應該以資料集中目标物體的尺度最大值和最小值為上下限。如,資料集中物體的尺度的最小值和最大值分别為0.15625和0.3125,我們準備在這個範圍内設定3種scale,則可以選擇 {0.15625, 0.234375, 0.3125}。
    • anchor boxes數量的确定
      • 設定的scales為 {0.15625, 0.234375, 0.3125},aspect ratios為{1:1, 2:1}, 則每一個錨點上的一組錨框的數量為3 * 2 = 6個,如下圖所示,即有3種大小的,每一種大小都有兩種高寬比。按照以上方法所說,錨點是指256*256圖像中的每一個像素,按基于anchor的神經網絡目标檢測來講,錨點為網絡最終輸出特征圖上的每一個點。
      • anchor box隻是先驗知識,bounding box是一種過程,ground truth才是标準答案,
      • 一個錨點對應的一組錨框,同一種顔色的框為一種尺度下兩種高寬比對應的錨框​。在檢測任務中,輸入圖像經過骨幹網絡提取得到特征圖,該圖上的每個像素點,即為anchor錨點。
    • 使用絕對坐标的(xmin,ymin,xmax,ymax)。 但是這種絕對坐标的表示方式,是以原始圖像的像素值為基礎的,這就需要知道圖像的實際尺度,如果圖像進行縮放,這種表示就無法準确的進行定位了。對圖像的尺寸進行歸一化,使用歸一化後的坐标矩形框。坐标進行歸一化,這樣隻要知道圖像的

      scale

      就能夠很容易在目前尺度下使用矩形框定位。
  • 在目标檢測中,訓練資料的标簽通常是基于絕對坐标的表示方式的,而在訓練的過程中通常會有尺度的變換這就需要将邊框坐标轉換為歸一化後的形式。 在計算損失值時,為了平衡尺寸大的目标和尺寸小的目标對損失值的影響,就需要将矩形框表示為中心坐标的方式,以友善對矩形框的寬和高添權重重。 最後,要将歸一化後的中心坐标形式轉換為檢測圖像的原始尺度上。
  • Anchor boxes的用途
    • 在網絡中anchor boxes被用來編碼目标物體的位置。目标檢測一般是不會直接檢測物體邊框的絕對坐标的,取而代之的是檢測其相對某一個錨框的偏移量,如下圖中黑色真值框對藍色邊框的偏移。資料集中所有的目标均會被編碼成對anchor boxes的偏移。
    • anchor box隻是先驗知識,bounding box是一種過程,ground truth才是标準答案,
    • 對一張圖檔來說,可能包含多個物體,有非常多個anchor boxes, 那怎麼用anchor boxes對真值進行編碼呢?
  • anchor boxes對真值bounding box編碼的步驟
    • 對每一個anchor box,算出其和哪一個真值bounding box的交并比(intersection over union score)最大。
    • 如果交并比>50%,則目前anchor box負責目前真值bounding box對應物體的檢測,求真值bounding box對該anchor box的偏移。
    • 如果交并比介于40%與50%之間,不能确定該anchor是不是包含該物體,屬于含糊框。
    • 如果交并比<40%,則認為該anchor框到的都是背景,将該anchor劃分為背景類。
    • 除了被配置設定物體的錨框外,對隻含背景的錨框和含糊框,偏移賦0,分類賦背景。
  • 編碼之後,物體檢測類網絡的回歸目标變成回歸編碼好的偏移量了。網絡的輸入為圖檔,輸出為每一錨框的分類和偏移量。網絡最終輸出的特征圖上的每一個像素都有一組錨框(假如一組錨框的數量為6個,寬高比為2:1和1:1, 尺度為0.15625, 0.234375, 0.3125),設網絡最終輸出的特診圖分辨率為7*7,則該回歸網絡中的錨框數量總數為7x7x6=296個。網絡接收到的真值為這296個anchor box是否為背景的分類資訊(如果包含物體,則分離為物體類别)和每個anchor到目标物體bounding box的偏移量(含糊框和背景框的偏移量為0),網絡的輸出為296個框的偏移量和分類資訊。
  • 對一個訓練好的網絡,其輸出中,隻包含背景的錨框的分類為背景,偏移為0;包含物體的錨框,其分類為物體的類别,偏移為錨框與物體真實邊框之間的偏移。
  • 為什麼要回歸偏移量而不是絕對坐标
    • 神經網絡的特性之一是位移不變性,對一張包含樹的照片,不管樹在這張圖檔的左上角還是右下角,網絡輸出的分類都是樹,分類結果不會因為樹在照片中位置的變化而變化。是以,對于一棵樹,不管它在圖檔中的位置是什麼,回歸網絡都偏向于為它輸出相同的位置坐标,可見位移不變性和我們需要的位置坐标變化是沖突的,這顯然是不行的。轉而回歸偏移的話,不管樹在圖像中的什麼位置,其對它所在的錨框的偏移量基本是一緻的,更加适合神經網絡回歸。
  • 輸出特征圖和錨框有什麼關系呢?錨框不是應該放在輸入圖上嗎,為什麼說輸出特征圖上的每一個點一組錨框。
    • 如Fig.5所示,輸出特征圖(最右邊3 x 3的小特征圖)上的任何一個點都可以映射到輸入圖檔上(感受野的意思),也就是說按照比例和網絡的下采樣,對輸出特征圖上的任意一點,在輸入圖檔上都可以成比例找到它的對應位置。
    • 例如,在輸出特征圖上(0, 0)的點在輸入圖檔上的對應位置為(2, 2), 網絡的輸出特征次元為3 * 3 * 84 ( = 3 * 3 * 6 * 14),則輸出特征圖上點(0, 0)處的84個通道對應的值為輸入圖(2, 2)位置上6個錨框的偏移量和分類值。3 * 3 * 84 = 3 * 3 * 6 * 14中的6為6個anchor box; 14=4+10,其中的4為(x,y,w,h)的偏移量,其中的10為類别數。
    • anchor box隻是先驗知識,bounding box是一種過程,ground truth才是标準答案,
    • 通過這樣的隐式映射關系,将所有的anchor box都放在了輸入圖檔上。
  • Anchor機制的優缺點
    • 使用anchor機制,使得網絡可直接在此基礎上進行目标分類及邊界框坐标回歸,适當設定anchor box能夠提升檢測效率,降低計算量;
    • 密集的anchor box可有效提高網絡目标召回能力,對于小目标檢測來說提升非常明顯。
    • anchor機制中,需要設定的超參:尺度(scale)和長寬比( aspect ratio)是比較難設計的。這需要較強的先驗知識。
    • 備援框非常之多:一張圖像内的目标畢竟是有限的,基于每個anchor設定大量anchor box會産生大量的easy-sample,即完全不包含目标的背景框。這會造成正負樣本嚴重不平衡問題,也是one-stage算法難以趕超two-stage算法的原因之一。
  • https://zhuanlan.zhihu.com/p/484555425

繼續閱讀