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