Detectron 建立blob的過程

2021-08-16 01:36:19 字數 2306 閱讀 9060

主要是從roidb生成blobs的過程

以上便是整體的流程圖,那麼簡單說一下detectron產生anchor的過程

相對於之前faster產生一系列的anchor不同,fpn在每乙個level上面都會建立屬於該level感受野的anchor,假設stride為4,8,16,32,64,那麼在每乙個stride上面,會產生一種面積的,長寬比分別為0.5,1,2的三種anchor,相比於之前的一下子產生多種面積多種長寬比的anchor要更加合理。

def _generate_anchors(base_size, scales, aspect_ratios):

"""generate anchor (reference) windows by enumerating aspect ratios x #每乙個base_size對應乙個scales,固定為8

scales wrt a reference (0, 0, base_size - 1, base_size - 1) window.

"""anchor = np.array([1, 1, base_size, base_size], dtype=np.float) - 1

anchors = _ratio_enum(anchor, aspect_ratios)

anchors = np.vstack(

[_scale_enum(anchors[i, :], scales) for i in range(anchors.shape[0])]

)return anchors

在rpn.py裡面有

# add rpn targets

if cfg.fpn.fpn_on and cfg.fpn.multilevel_rpn:

rpn_blobs = _get_rpn_blobs(

im_height, im_width, foas, all_anchors, gt_rois #這裡的這個函式產生五個level的blob,儲存成5個字典

)for i, lvl in enumerate(range(k_min, k_max + 1)):

for k, v in rpn_blobs[i].items():

else:

rpn_blobs = _get_rpn_blobs(

im_height, im_width, [foa], all_anchors, gt_rois

)for k, v in rpn_blobs.items():

最後在rpn部分,blob裡面的鍵值一共有23個,是哪23個呢?

一共有5個level,每乙個level都會有

rpn_labels_int32_wide_fpn_x,rpn_bbox_targets_wide_fpn_x, rpn_bbox_inside_weights_wide_fpn_x,rpn_bbox_inside_weights_wide_fpn_x這四個引數,所以一共有20個

再加上roidb,data和im_info這三個引數,最後一共是23個

解析一下這幾個blob裡面儲存的是什麼

rpn_labels_int32_wide_fpn_x:儲存的是對應level的anchor的label也即是背景還是前景

rpn_bbox_targets_wide_fpn_x:儲存的是對應level的anchor的bbox的target,也即回歸的目標

rpn_bbox_inside_weights_wide_fpn_x: 儲存的是對應的回歸目標的權重,只對正樣本的權重做出設定,其他的為0,x,y,w,h四個引數的權重設定為1

rpn_bbox_inside_weights_wide_fpn_x: 對整個minibatch做平均的時候用到的,只統計參與訓練的樣本的個數,然後用1除以這個個數做歸一化

roidb:roidb裡面儲存的是最原始從資料的標註裡面加在的一些列的資訊,包括label等等,具體包含的內容如下

valid_keys = [

'has_visible_keypoints', 'boxes', 'segms', 'seg_areas', 'gt_classes',

'gt_overlaps', 'is_crowd', 'box_to_gt_ind_map', 'gt_keypoints'

blob裡面儲存的是乙個batch的資訊,假設cfg.train.ims_per_batch=2,那麼blob一次儲存的將是兩張的資訊,例如,此時blobs['data']儲存的是兩張的rgb儲存,以此類推

Docker 開源Detectron 補充

1.git clonedetectron,解壓後存放路徑 home pandamax detectron 2.在檔案 home pandamax detectron lib datasets data下建立coco資料夾,用來存放對應的資料,coco資料夾格式為 3.確定映象detectron的映象...

blob物件轉blob位址 BLOB(不是電影!)

blob物件轉blob位址 在thescripts此處提出的所有問題中,出現頻率最高的乙個問題與access中圖形影象的儲存有關。基本上有三種可用於在access中操作影象檔案的技術,它們是 將影象儲存在ole物件欄位中,並將其顯示在繫結物件框中。影象可以鏈結或嵌入。將影象的路徑儲存在文字欄位中,並...

Detectron2入門教程

目錄 1.概述 1.1.自己的原始碼閱讀流程 1.2.目錄結構 1.3.搭積木過程 1.4.官方文件閱讀 2.資料處理 2.1.概述 2.2.基本流程 2.3.build detection train loader 方法解析 2.4.其他 3.模型搭建 3.1.概述 3.2.基本流程 3.3.其他...