本文整理汇总了Python中utils.cython_bbox.bbox_overlaps方法的典型用法代码示例。如果您正苦于以下问题:Python cython_bbox.bbox_overlaps方法的具体用法?Python cython_bbox.bbox_overlaps怎么用?Python cython_bbox.bbox_overlaps使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类utils.cython_bbox
的用法示例。
在下文中一共展示了cython_bbox.bbox_overlaps方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _compute_targets
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def _compute_targets(rois, overlaps, labels):
"""Compute bounding-box regression targets for an image."""
# Indices of ground-truth ROIs
gt_inds = np.where(overlaps == 1)[0]
if len(gt_inds) == 0:
# Bail if the image has no ground-truth ROIs
return np.zeros((rois.shape[0], 5), dtype=np.float32)
# Indices of examples for which we try to make predictions
ex_inds = np.where(overlaps >= cfg.TRAIN.BBOX_THRESH)[0]
# Get IoU overlap between each ex ROI and gt ROI
ex_gt_overlaps = bbox_overlaps(
np.ascontiguousarray(rois[ex_inds, :], dtype=np.float),
np.ascontiguousarray(rois[gt_inds, :], dtype=np.float))
# Find which gt ROI each ex ROI has max overlap with:
# this will be the ex ROI's gt target
gt_assignment = ex_gt_overlaps.argmax(axis=1)
gt_rois = rois[gt_inds[gt_assignment], :]
ex_rois = rois[ex_inds, :]
targets = np.zeros((rois.shape[0], 5), dtype=np.float32)
targets[ex_inds, 0] = labels[ex_inds]
targets[ex_inds, 1:] = bbox_transform(ex_rois, gt_rois)
return targets
示例2: _propagate_boxes
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def _propagate_boxes(boxes, annot_proto, frame_id):
pred_boxes = []
annots = []
for annot in annot_proto['annotations']:
for idx, box in enumerate(annot['track']):
if box['frame'] == frame_id and len(annot['track']) > idx + 1:
gt1 = box['bbox']
gt2 = annot['track'][idx+1]['bbox']
delta = bbox_transform(np.asarray([gt1]), np.asarray([gt2]))
annots.append((gt1, delta))
gt1 = [annot[0] for annot in annots]
overlaps = bbox_overlaps(np.require(boxes, dtype=np.float),
np.require(gt1, dtype=np.float))
assert len(overlaps) == len(boxes)
for gt_overlaps, box in zip(overlaps, boxes):
max_overlap = np.max(gt_overlaps)
max_gt = np.argmax(gt_overlaps)
if max_overlap < 0.5:
pred_boxes.append(box)
else:
delta = annots[max_gt][1]
pred_boxes.append(bbox_transform_inv(np.asarray([box]), delta)[0].tolist())
return pred_boxes
示例3: create_roidb_from_box_list
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def create_roidb_from_box_list(self, box_list, gt_roidb):
assert len(box_list) == self.num_images, \
'Number of boxes must match number of ground-truth images'
roidb = []
for i in range(self.num_images):
boxes = box_list[i]
num_boxes = boxes.shape[0]
overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32)
if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0:
gt_boxes = gt_roidb[i]['boxes']
gt_classes = gt_roidb[i]['gt_classes']
gt_overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
argmaxes = gt_overlaps.argmax(axis=1)
maxes = gt_overlaps.max(axis=1)
I = np.where(maxes > 0)[0]
overlaps[I, gt_classes[argmaxes[I]]] = maxes[I]
overlaps = scipy.sparse.csr_matrix(overlaps)
roidb.append({
'boxes': boxes,
'gt_classes': np.zeros((num_boxes,), dtype=np.int32),
'gt_overlaps': overlaps,
'flipped': False,
'seg_areas': np.zeros((num_boxes,), dtype=np.float32),
})
return roidb
示例4: create_roidb_from_box_list
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def create_roidb_from_box_list(self, box_list, gt_roidb):
assert len(box_list) == self.num_images, \
'Number of boxes must match number of ground-truth images'
roidb = []
for i in range(self.num_images):
boxes = box_list[i]
num_boxes = boxes.shape[0]
overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32)
if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0:
gt_boxes = gt_roidb[i]['boxes']
gt_classes = gt_roidb[i]['gt_classes']
gt_overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
argmaxes = gt_overlaps.argmax(axis=1)
maxes = gt_overlaps.max(axis=1)
I = np.where(maxes > 0)[0]
overlaps[I, gt_classes[argmaxes[I]]] = maxes[I]
overlaps = scipy.sparse.csr_matrix(overlaps)
roidb.append({
'boxes': boxes,
'gt_classes': np.zeros((num_boxes,), dtype=np.int32),
'gt_overlaps': overlaps,
'flipped': False,
'seg_areas': np.zeros((num_boxes,), dtype=np.float32),
})
return roidb
示例5: create_roidb_from_box_list
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def create_roidb_from_box_list(self, box_list, gt_roidb):
assert len(box_list) == self.num_images, \
'Number of boxes must match number of ground-truth images'
roidb = []
for i in range(self.num_images):
boxes = box_list[i]
num_boxes = boxes.shape[0]
overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32)
if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0:
gt_boxes = gt_roidb[i]['boxes']
gt_classes = gt_roidb[i]['gt_classes']
gt_overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
argmaxes = gt_overlaps.argmax(axis=1)
maxes = gt_overlaps.max(axis=1)
I = np.where(maxes > 0)[0]
overlaps[I, gt_classes[argmaxes[I]]] = maxes[I]
overlaps = scipy.sparse.csr_matrix(overlaps)
roidb.append({
'boxes': boxes,
'gt_classes': np.zeros((num_boxes,), dtype=np.int32),
'gt_overlaps': overlaps,
'flipped': False,
'JPGed':False,
'noised':False
#'seg_areas': np.zeros((num_boxes,), dtype=np.float32),
})
return roidb
示例6: create_roidb_from_box_list
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def create_roidb_from_box_list(self, box_list, gt_roidb):
assert len(box_list) == self.num_images, \
'Number of boxes must match number of ground-truth images'
roidb = []
for i in xrange(self.num_images):
boxes = box_list[i]
num_boxes = boxes.shape[0]
overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32)
if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0:
gt_boxes = gt_roidb[i]['boxes']
gt_classes = gt_roidb[i]['gt_classes']
gt_overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
argmaxes = gt_overlaps.argmax(axis=1)
maxes = gt_overlaps.max(axis=1)
I = np.where(maxes > 0)[0]
overlaps[I, gt_classes[argmaxes[I]]] = maxes[I]
overlaps = scipy.sparse.csr_matrix(overlaps)
roidb.append({
'boxes' : boxes,
'gt_classes' : np.zeros((num_boxes,), dtype=np.int32),
'gt_overlaps' : overlaps,
'flipped' : False,
'seg_areas' : np.zeros((num_boxes,), dtype=np.float32),
})
return roidb
示例7: create_roidb_from_box_list
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def create_roidb_from_box_list(self, box_list, gt_roidb):
assert len(box_list) == len(gt_roidb), \
'Number of boxes must match number of ground-truth roidb'
roidb = []
for i, boxes in enumerate(box_list):
num_boxes = boxes.shape[0]
overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32)
if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0:
gt_boxes = gt_roidb[i]['boxes']
gt_classes = gt_roidb[i]['gt_classes']
gt_overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
argmaxes = gt_overlaps.argmax(axis=1)
maxes = gt_overlaps.max(axis=1)
I = np.where(maxes > 0)[0]
overlaps[I, gt_classes[argmaxes[I]]] = maxes[I]
overlaps = scipy.sparse.csr_matrix(overlaps)
roidb.append({
'boxes' : boxes,
'gt_overlaps' : overlaps,
'gt_classes': np.zeros((num_boxes,), dtype=np.int32),
'flipped' : False,
'seg_areas' : np.zeros((num_boxes,), dtype=np.float32)
})
return roidb
示例8: evaluate_recall
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def evaluate_recall(self, candidate_boxes, ar_thresh=0.5):
# Record max overlap value for each gt box
# Return vector of overlap values
gt_overlaps = np.zeros(0)
for i in xrange(self.num_images):
gt_inds = np.where(self.roidb[i]['gt_classes'] > 0)[0]
gt_boxes = self.roidb[i]['boxes'][gt_inds, :]
boxes = candidate_boxes[i]
if boxes.shape[0] == 0:
continue
overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
# gt_overlaps = np.hstack((gt_overlaps, overlaps.max(axis=0)))
_gt_overlaps = np.zeros((gt_boxes.shape[0]))
for j in xrange(gt_boxes.shape[0]):
argmax_overlaps = overlaps.argmax(axis=0)
max_overlaps = overlaps.max(axis=0)
gt_ind = max_overlaps.argmax()
gt_ovr = max_overlaps.max()
assert(gt_ovr >= 0)
box_ind = argmax_overlaps[gt_ind]
_gt_overlaps[j] = overlaps[box_ind, gt_ind]
assert(_gt_overlaps[j] == gt_ovr)
overlaps[box_ind, :] = -1
overlaps[:, gt_ind] = -1
gt_overlaps = np.hstack((gt_overlaps, _gt_overlaps))
num_pos = gt_overlaps.size
gt_overlaps = np.sort(gt_overlaps)
step = 0.001
thresholds = np.minimum(np.arange(0.5, 1.0 + step, step), 1.0)
recalls = np.zeros_like(thresholds)
for i, t in enumerate(thresholds):
recalls[i] = (gt_overlaps >= t).sum() / float(num_pos)
ar = 2 * np.trapz(recalls, thresholds)
return ar, gt_overlaps, recalls, thresholds
示例9: _gt_propagate_boxes
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def _gt_propagate_boxes(boxes, annot_proto, frame_id, window, overlap_thres):
pred_boxes = []
annots = []
for annot in annot_proto['annotations']:
for idx, box in enumerate(annot['track']):
if box['frame'] == frame_id:
gt1 = box['bbox']
deltas = []
deltas.append(gt1)
for offset in xrange(1, window):
try:
gt2 = annot['track'][idx+offset]['bbox']
except IndexError:
gt2 = gt1
delta = bbox_transform(np.asarray([gt1]), np.asarray([gt2]))
deltas.append(delta)
annots.append(deltas)
gt1s = [annot[0] for annot in annots]
if not gt1s:
# no grount-truth, boxes remain still
return np.tile(np.asarray(boxes)[:,np.newaxis,:], [1,window-1,1])
overlaps = bbox_overlaps(np.require(boxes, dtype=np.float),
np.require(gt1s, dtype=np.float))
assert len(overlaps) == len(boxes)
for gt_overlaps, box in zip(overlaps, boxes):
max_overlap = np.max(gt_overlaps)
max_gt = np.argmax(gt_overlaps)
sequence_box = []
if max_overlap < overlap_thres:
for offset in xrange(1, window):
sequence_box.append(box)
else:
for offset in xrange(1, window):
delta = annots[max_gt][offset]
sequence_box.append(
bbox_transform_inv(np.asarray([box]), delta)[0].tolist())
pred_boxes.append((sequence_box))
return np.asarray(pred_boxes)
示例10: _sample_boxes
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def _sample_boxes(box_proto, frame_id, num, annot_proto=None):
boxes = boxes_at_frame(box_proto, frame_id)
boxes = [box['bbox'] for box in boxes]
if annot_proto is None:
boxes = random.sample(boxes, num)
else:
gt_boxes = annot_boxes_at_frame(annot_proto, frame_id)
overlaps = bbox_overlaps(np.asarray(boxes, dtype=np.float),
np.asarray(gt_boxes, dtype=np.float))
max_overlaps = np.max(overlaps, axis=1)
idx = np.argsort(max_overlaps)[::-1][:num]
boxes = [boxes[i] for i in idx]
return boxes
示例11: create_roidb_from_box_list
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def create_roidb_from_box_list(self, box_list, gt_roidb):
assert len(box_list) == self.num_images, \
'Number of boxes must match number of ground-truth images'
roidb = []
for i in xrange(self.num_images):
boxes = box_list[i]
num_boxes = boxes.shape[0]
overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32)
if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0:
gt_boxes = gt_roidb[i]['boxes']
gt_classes = gt_roidb[i]['gt_classes']
gt_overlaps = bbox_overlaps(boxes.astype(np.float),
gt_boxes.astype(np.float))
argmaxes = gt_overlaps.argmax(axis=1)
maxes = gt_overlaps.max(axis=1)
I = np.where(maxes > 0)[0]
overlaps[I, gt_classes[argmaxes[I]]] = maxes[I]
overlaps = scipy.sparse.csr_matrix(overlaps)
roidb.append({
'boxes': boxes,
'gt_classes': np.zeros((num_boxes,), dtype=np.int32),
'gt_overlaps': overlaps,
'flipped': False,
'seg_areas': np.zeros((num_boxes,), dtype=np.float32),
})
return roidb
示例12: _sample_rois
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def _sample_rois(all_rois, proposals, num_classes):
"""Generate a random sample of RoIs comprising foreground and background
examples.
"""
# overlaps: (rois x gt_boxes)
gt_boxes = proposals['gt_boxes']
gt_labels = proposals['gt_classes']
gt_scores = proposals['gt_scores']
overlaps = bbox_overlaps(
np.ascontiguousarray(all_rois, dtype=np.float),
np.ascontiguousarray(gt_boxes, dtype=np.float))
gt_assignment = overlaps.argmax(axis=1)
max_overlaps = overlaps.max(axis=1)
labels = gt_labels[gt_assignment, 0]
cls_loss_weights = gt_scores[gt_assignment, 0]
# Select foreground RoIs as those with >= FG_THRESH overlap
fg_inds = np.where(max_overlaps >= cfg.TRAIN.FG_THRESH)[0]
# Select background RoIs as those within [BG_THRESH_LO, BG_THRESH_HI)
bg_inds = np.where(max_overlaps < cfg.TRAIN.FG_THRESH)[0]
if DEBUG:
print "number of fg:", len(fg_inds), 'number of bg:', len(bg_inds)
labels[bg_inds] = 0
rois = all_rois
return labels, rois, cls_loss_weights
示例13: bbox_overlaps
# 需要导入模块: from utils import cython_bbox [as 别名]
# 或者: from utils.cython_bbox import bbox_overlaps [as 别名]
def bbox_overlaps(boxes, query_boxes):
import utils.cython_bbox as cython_bbox
return cython_bbox.bbox_overlaps(boxes, query_boxes)