理解RoIAlign实际操作
我們的模型取一個大小為 512x512x3 (寬度x高度x RGB)的圖像輸入,VGG16將其映射為一個 16x16x512的feature map。比例因子是 32 。
接下來,我們將使用其中一個proposed RoIs ( 145x200box),并嘗試將其映射到feature map上。因為不是所有的對象維度都可以整除以32,所以我們沒有將RoI與網格對齊。
- (9.25,6)— top left corner
- 6.25— width
- 4.53 — height
再一次,我們選擇池化層的大小為?3x3,所以最終的形狀是?3x3x512(這只是一個任意的例子,以便更容易在圖像上顯示。你的池化層可能有不同的大小)。
?每個框的大小由映射的RoI的大小和池化層的大小決定。我們使用了一個?3x3?的池化層,所以我們必須將映射的RoI (?6.25x4.53)除以3。這樣我們就得到了一個高為?1.51?,寬為?2.08?的方框(我在這里約簡以使它更容易)。現在我們可以把我們的方框放入映射的RoI中:
?如果查看第一個框(左上角),可以注意到它覆蓋了6個不同的網格單元格。為了提取池化層的值,我們必須從池化層中采樣一些數據。為了對數據進行采樣,我們必須在盒子里創建?四個采樣點。
?你可以?通過方框的高度和寬度除以3?來計算每個點的位置。
在我們的例子中,我們計算第一個點(左上角)的坐標如下:
- X = X_box + (width/3) * 1 = 9.94
- Y = Y_box + (height/3) * 1 = 6.50
為了計算第二點(左下角),我們只需要改變Y:
- X = X_box + (width/3) * 1 = 9.94
- Y = Y_box + (height/3) * 2 = 7.01
我們可以應用雙線性插值對這個方框進行數據采樣。圖像處理中常用雙線性插值對顏色進行采樣,其方程如下:
例如 第一個點
當您從我們的方框中取出第一個點時,除非它已經被取走了,您將它與最鄰近的單元格連接(正好在中間)。在本例中,我們的點的坐標是**(9.44,6.50)**。單元格左上角最接近的中間位置是**(9.50,6.50)**(如果我們的點只比網格高0.01,那么它應該是(9.50,5.50))。然后我們必須選擇一個左下角的點,最近的是**(9.50,7.50)**遵循同樣的規則,我們選擇**(10.50,6.50)**和**(10.50,7.50)**作為右上角和右下角的點。在RoI上面,您可以看到整個計算過程,從而得到第一個點(0.14)的值。
?第二個點
這一次我們從:
- top-left: (10.50, 6.50)
- bottom-left: (10.50, 7.50)
- top-right: (11.50, 6.50)
- bottom-right: (11.50, 7.50)
第三個點:
- top-left: (9.50, 6.50)
- bottom-left: (9.50, 7.50)
- top-right: (10.50, 6.50)
- bottom-right: (10.50, 7.50)
?第四個點:
- top-left: (10.50, 6.50)
- bottom-left: (10.50, 7.50)
- top-right: (11.50, 6.50)
- bottom-right: (11.50, 7.50)
計算出每個點值后? 我們按照Max Pooling進行池化操作
?
?內容來自一文讀懂 RoIPooling、RoIAlign 和 RoIWarp_Fast
總結
以上是生活随笔為你收集整理的理解RoIAlign实际操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【萧蕊冰】ui设计和交互设计的区别是什么
- 下一篇: 【智能制造】双星集团:绿色轮胎的智能制造