docstr: Op for generating training labels for RPN proposals. This is used
  when training RPN jointly with Fast/Mask R-CNN (as in end-to-end
  Faster R-CNN training).
  
  blobs_in:
    - 'rpn_rois': 2D tensor of RPN proposals output by GenerateProposals
    - 'roidb': roidb entries that will be labeled
    - 'im_info': See GenerateProposals doc.
  
  blobs_out:
    - (variable set of blobs): returns whatever blobs are required for
      training the model. It does this by querying the data loader for
      the list of blobs that are needed.
docstr_tok: ["Op","for","generating","training","labels","for","RPN","proposals",".","This","is","used","when","training","RPN","jointly","with","Fast\/Mask","R-CNN","(","as","in","end-to-end","Faster","R-CNN","training",")",".","blobs_in",":","-","'rpn_rois","'",":","2D","tensor","of","RPN","proposals","output","by","GenerateProposals","-","'roidb","'",":","roidb","entries","that","will","be","labeled","-","'im_info","'",":","See","GenerateProposals","doc",".","blobs_out",":","-","(","variable","set","of","blobs",")",":","returns","whatever","blobs","are","required","for","training","the","model",".","It","does","this","by","querying","the","data","loader","for","the","list","of","blobs","that","are","needed","."]
code: def GenerateProposalLabels(self, blobs_in):
      """Op for generating training labels for RPN proposals. This is used
      when training RPN jointly with Fast/Mask R-CNN (as in end-to-end
      Faster R-CNN training).
  
      blobs_in:
        - 'rpn_rois': 2D tensor of RPN proposals output by GenerateProposals
        - 'roidb': roidb entries that will be labeled
        - 'im_info': See GenerateProposals doc.
  
      blobs_out:
        - (variable set of blobs): returns whatever blobs are required for
          training the model. It does this by querying the data loader for
          the list of blobs that are needed.
      """
      name = "GenerateProposalLabelsOp:" + ",".join(
          [str(b) for b in blobs_in]
      )
  
      # The list of blobs is not known before run-time because it depends on
      # the specific model being trained. Query the data loader to get the
      # list of output blob names.
      blobs_out = fast_rcnn_roi_data.get_fast_rcnn_blob_names(
          is_training=self.train
      )
      blobs_out = [core.ScopedBlobReference(b) for b in blobs_out]
  
      self.net.Python(GenerateProposalLabelsOp().forward)(
          blobs_in, blobs_out, name=name
      )
      return blobs_out
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import numpy
  import logging
  from caffe2.python import cnn
  from caffe2.python import core
  from caffe2.python import workspace
  from caffe2.python.modeling import initializers
  from caffe2.python.modeling.parameter_info import ParameterTags
  from detectron.core.config import cfg
  from detectron.ops.collect_and_distribute_fpn_rpn_proposals import CollectAndDistributeFpnRpnProposalsOp
  from detectron.ops.generate_proposal_labels import GenerateProposalLabelsOp
  from detectron.ops.generate_proposals import GenerateProposalsOp
  import detectron.roi_data.fast_rcnn
  import detectron.utils.c2
label_desc: Use image node_id 5 for calling the DetectionModelHelper obj's underlying member method code with example usage: obj.GenerateProposalLabels(blobs_in) and returns: blobs_out