Beispiel #1
0
def onThreadTopic(post):
  check_tokenized(post)
  # Leading post is treated specially
  if post == post.thread.posts[0]:
    title_tokens = post.tokenizer(post.thread.title)
    r = overlap(post.token_index, title_tokens)
  else:
    r = overlap(post.token_index, post.thread.posts[0].token_index)
  return r
Beispiel #2
0
def overlapping(anchors, gt_boxes, inds_inside):
    """
    overlaps between the anchors and the gt boxes
    :param anchors: Generated anchors
    :param gt_boxes: Ground truth bounding boxes
    :param inds_inside:
    :return:
    """

    assert keras.backend.ndim(anchors) == 2
    assert keras.backend.ndim(gt_boxes) == 2

    reference = common.overlap(anchors, gt_boxes)

    gt_argmax_overlaps_inds = keras.backend.argmax(reference, axis=0)

    argmax_overlaps_inds = keras.backend.argmax(reference, axis=1)

    arranged = keras.backend.arange(0, keras.backend.shape(inds_inside)[0])

    indices = keras.backend.stack(
        [arranged, keras.backend.cast(argmax_overlaps_inds, "int32")], axis=0)

    indices = keras.backend.transpose(indices)

    max_overlaps = tensorflow_backend.gather_nd(reference, indices)

    return argmax_overlaps_inds, max_overlaps, gt_argmax_overlaps_inds
def bid_override(g, bidder):
	bidOverrideNum = 0
	bidOverrideNormNum = 0
	bidOverrideNumAuction = 0
	bidOverrideNormNumAuction = 0
	bidOverrideRatioDistri = dict()
	edges = g.edges(bidder)
	auctionNum = len(edges)
	if auctionNum ==0:
		return [0]*9
	# print(edges)
	for (b, a) in edges:
		bidderRecord = g.node[a]["bidders"]
		count = cm.overlap(bidder, bidderRecord)
		bidOverrideNum = bidOverrideNum+count
		bidOverrideRatioDistri[a] = count
		if count>0:
			bidOverrideNumAuction = bidOverrideNumAuction+1
	if bidOverrideNum==0:
		return [0]*9
	else:
		for auction in bidOverrideRatioDistri.keys():
			bidOverrideRatioDistri[auction] = bidOverrideRatioDistri[auction]/bidOverrideNum
		bidOverrideNormNum = bidOverrideNum/bid_total(g, bidder)
		bidOverrideNormNumAuction = bidOverrideNumAuction/auctionNum
		return [bidOverrideNum, bidOverrideNormNum, bidOverrideNumAuction, bidOverrideNormNumAuction]+cm.stats(list(bidOverrideRatioDistri.values()))
Beispiel #4
0
def overlapDistance(post):
  check_tokenized(post)
  overlaps = []
  for i,p in enumerate(post.thread.posts):
    if p == post: break
    overlaps.append(overlap(post.token_index, p.token_index))
  return (i - overlaps.index(max(overlaps))) if overlaps != [] else 0
Beispiel #5
0
def overlapPrevious(post):
  check_tokenized(post)
  overlaps = []
  for p in post.thread.posts:
    if p == post: break
    overlaps.append(overlap(post.token_index, p.token_index))
  return max(overlaps) if overlaps != [] else 0.0
Beispiel #6
0
    def sample_rois(self, all_rois, gt_boxes, gt_labels):
        """
        Generate a random sample of RoIs comprising foreground and background
        examples.
        all_rois is (N, 4)
        gt_boxes is (K, 4) with 4 coordinates
        gt_labels is in one hot form
        """
        num_classes = keras.backend.shape(gt_labels)[1]
        gt_labels = keras.backend.argmax(gt_labels, axis=1)

        # overlaps: (rois x gt_boxes)
        # finds the overlapping regions between the predicted regions of interests and ground truth bounding boxes
        overlaps = common.overlap(all_rois, gt_boxes)
        gt_assignment = keras.backend.argmax(overlaps, axis=1)
        max_overlaps = keras.backend.max(overlaps, axis=1)

        # finds the ground truth labels corresponding to the ground truth boxes with greatest overlap for each predicted regions of interest
        labels = keras.backend.gather(gt_labels, gt_assignment)

        # Select RoIs with given parameters for fg/bg objects
        keep_inds = self.get_fg_bg_rois(max_overlaps)

        # Select sampled values from various arrays:
        labels = keras.backend.gather(labels, keep_inds)
        rois = keras.backend.gather(all_rois, keep_inds)

        labels = self.set_label_background(labels)

        # Compute bounding-box regression targets for an image.
        gt_boxes = keras.backend.gather(
            gt_boxes, keras.backend.gather(gt_assignment, keep_inds))
        bbox_targets = self.get_bbox_targets(rois, gt_boxes, labels,
                                             num_classes)

        labels = keras.backend.one_hot(labels, num_classes)
        return rois, labels, bbox_targets