RetinaNet源碼分析(1):anchor

代碼是RetinaNet的pytorch版本,鏈接為
GitHub - yhenon/pytorch-retinanet: Pytorch implementation of RetinaNet object detection.

class Anchors()

__init__:

self.pyramid_levels=[3,4,5,6,7]? # feature map的標號,分辨率從大到小
self.strides=[8,16,32,64,128]? # 滑窗的步長
self.sizes=[32,64,128,256,512]? # anchor面積:32*32等
self.ratios=[0.5,1,2]? # anchor的長寬比
self.scales=[2^0 ,2^\frac{1}{3}  ,2^\frac{2}{3}  ]? # 面積增比

forward(input_image):

input_image是原圖以(608,1024)為標準等比例縮放得到的,我的原始image均為1080*1920,resize之后變?yōu)?08*1056,參考代碼dataloader/Resizer()。

以下為anchor生成的兩個函數(shù):

1. anchors = generate_anchors(sizes[i], ratios, scales)
????輸出anchors.shape=(9,4),對應面積為sizes[i]的9個不同ratios,scales的anchor坐標
????每行為一個anchor:(x1,y1,x2,y2),中心坐標(x_c,y_c)=(0,0),故x1,y1為負,x2,y2為正

2. shifted_anchors = shift(shapes[i], strides[i], anchors)
? ? shapes為對應feature map的尺寸
? ? 輸出shifted_anchors.shape=(shapes[0]*shapes[1]*9, 4)
? ? anchor是在input_image上以strides為步長滑動生成的坐標(x2, y1, x2, y2)

后續(xù)還包括一些增加fake dimension,轉(zhuǎn)化tensor,加載cuda的操作

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容