Detectron 总结(一)

1、各级blob的产生
1) 在model_builder.py里面
model.roi_data_loader = RoIDataLoader(roidb, num_loaders=cfg.DATA_LOADER.NUM_THREADS)
这里面主要是创建线程,加载batch,这里面就存在着加入各种blob,就是下面说的23个
self._output_names = get_minibatch_blob_names()
blobs = self.get_next_minibatch()
以上在loader.py中,返回的blob是个字典的形式

2)首先是加载数据部分,从roi_data.rpn.get_rpn_blob_names(is_training=is_training)函数中获得rpn部分需要的blob,一共有23个,具体内容参考之前写的,由minibatch.py里面的get_minibatch_blob_names(is_training=True)返回
然后blob_names=roi_data.minibatch.get_minibatch_blob_names( is_training=True )在model_builder.py里面获得了所有的blob的名字,然后通过workspace.CreateBlob(core.ScopedName(blob_name))将blob加入到workspace里面去
http://blog.csdn.net/u013548568/article/details/79430512
也即产生了各类信息和标签形式

3)第二部分是generate proposal部分,这里也会产生blob,在rpn_heads.py里面
FPN.add_fpn_rpn_outputs(model, blob_in, dim_in, spatial_scale_in)
转到FPN中进入该函数找到model.GenerateProposals(),再转到detector.py里面可以找到model.GenerateProposals,再次转到

self.net.Python(
        GenerateProposalsOp(anchors, spatial_scale, self.train).forward
)(blobs_in, blobs_out, name=name, spatial_scale=spatial_scale)

接着调用generate_proposals.py的里面的forward函数,生成output保存在blobs_out里面
最后在rpn_heads.py里面model.CollectAndDistributeFpnRpnProposals()

blobs_in = [core.ScopedBlobReference(b) for b in blobs_in]
blobs_out = [core.ScopedBlobReference(b) for b in blobs_out]

这两句话就将blob加入到workspace里面,方便之后的程序进行识别,blob_in的部分是将proposal产生的blob加入空间,blob_out是将roi部分输出

json_dataset.add_proposals(roidb, rois, im_scales, crowd_thresh=0)
# Compute training labels for the RPN proposals; also handles
# distributing the proposals over FPN levels
output_blob_names = roi_data.fast_rcnn.get_fast_rcnn_blob_names()
blobs = {k: [] for k in output_blob_names}
roi_data.fast_rcnn.add_fast_rcnn_blobs(blobs, im_scales, roidb)

在这里产生blob,主要是proposal输出这一类的,再回到detector.py里面会发现

self.net.Python(
       GenerateProposalsOp(anchors, spatial_scale, self.train).forward
)(blobs_in, blobs_out, name=name, spatial_scale=spatial_scale)

得到最终的blobs_out,再回到rpn_heads.py里面的model.CollectAndDistributeFpnRpnProposals()

blob_in包含哪些呢?
rpn_rois_fpn_x,x=2,3,4,5,6
rpn_roi_probs_fpn_x, x=2,3,4,5,6
roidb,im_info
综合上述,blobs_in在这里一共是12个

blobs_out包含哪些呢?
rois
labels_int32
bbox_targets
bbox_inside_weights
bbox_outside_weights
keypoint_rois
keypoint_locations_int32
keypoint_weights
keypoint_loss_normalizer
rois_idx_restore_int32
keypoint_rois_idx_restore_int32
rois_fpn_x,x=2,3,4,5
keypoint_rois_fpn_x ,x= 2,3,4,5
一共有19个

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值