以上在loader.py中,返回的blob是个字典的形式
http://blog.csdn.net/u013548568/article/details/79430512
也即产生了各类信息和标签形式
转到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
最后在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()
综合上述,blobs_in在这里一共是12个
一共有19个
文章来源: ddd