def _filter_crowd_proposals(roidb, crowd_thresh):
 for (ix, entry) in enumerate(roidb):
  overlaps = entry['gt_overlaps'].toarray()
  crowd_inds = np.where((overlaps.max(axis=1) == (-1)))[0]
  non_gt_inds = np.where((entry['gt_classes'] == 0))[0]
  if ((len(crowd_inds) == 0) or (len(non_gt_inds) == 0)):
   continue
  iscrowd = [int(True) for _ in xrange(len(crowd_inds))]
  crowd_boxes = ds_utils.xyxy_to_xywh(entry['boxes'][crowd_inds, :])
  non_gt_boxes = ds_utils.xyxy_to_xywh(entry['boxes'][non_gt_inds, :])
  ious = COCOmask.iou(non_gt_boxes, crowd_boxes, iscrowd)
  bad_inds = np.where((ious.max(axis=1) > crowd_thresh))[0]
  overlaps[non_gt_inds[bad_inds], :] = (-1)
  roidb[ix]['gt_overlaps'] = scipy.sparse.csr_matrix(overlaps)
 return roidb

def _filter_crowd_proposals ( roidb , crowd_thresh ) : for ( ix , entry ) in enumerate ( roidb ) : overlaps = entry [ 'gt_overlaps' ] . toarray ( ) crowd_inds = np . where ( ( overlaps . max ( axis = 1 ) == ( - 1 ) ) ) [ 0 ] non_gt_inds = np . where ( ( entry [ 'gt_classes' ] == 0 ) ) [ 0 ] if ( ( len ( crowd_inds ) == 0 ) or ( len ( non_gt_inds ) == 0 ) ) : continue iscrowd = [ int ( True ) for _ in xrange ( len ( crowd_inds ) ) ] crowd_boxes = ds_utils . xyxy_to_xywh ( entry [ 'boxes' ] [ crowd_inds , : ] ) non_gt_boxes = ds_utils . xyxy_to_xywh ( entry [ 'boxes' ] [ non_gt_inds , : ] ) ious = COCOmask . iou ( non_gt_boxes , crowd_boxes , iscrowd ) bad_inds = np . where ( ( ious . max ( axis = 1 ) > crowd_thresh ) ) [ 0 ] overlaps [ non_gt_inds [ bad_inds ] , : ] = ( - 1 ) roidb [ ix ] [ 'gt_overlaps' ] = scipy . sparse . csr_matrix ( overlaps ) return roidb
finds proposals that are inside crowd regions and marks them with overlap = -1 .