ddd

xiaoxiao2021-02-28  34

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) 123

接着调用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] 12

这两句话就将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) 123456

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

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

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

转载请注明原文地址: https://www.6miu.com/read-2625166.html

最新回复(0)