ddd

本文详细介绍了在模型构建过程中,Blob的生成与加载机制。包括如何通过不同模块创建Blob,涉及RPN部分的Blob生成,以及Proposal生成阶段Blob的处理方式。深入探讨了Blob在工作空间中的作用与意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/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)
  • 1
  • 2
  • 3

接着调用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]
  • 1
  • 2

这两句话就将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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

得到最终的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个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值