def forward(self, is_train, req, in_data, out_data, aux): assert self._batch_rois % self._batch_images == 0, \ 'BATCHIMAGES {} must devide BATCH_ROIS {}'.format(self._batch_images, self._batch_rois) rois_per_image = self._batch_rois / self._batch_images fg_rois_per_image = np.round(self._fg_fraction * rois_per_image).astype(int) all_rois = in_data[0].asnumpy() gt_boxes = in_data[1].asnumpy() # Include ground-truth boxes in the set of candidate rois zeros = np.zeros((gt_boxes.shape[0], 1), dtype=gt_boxes.dtype) all_rois = np.vstack((all_rois, np.hstack((zeros, gt_boxes[:, :-1])))) # Sanity check: single batch only assert np.all(all_rois[:, 0] == 0), 'Only single item batches are supported' rois, labels, bbox_targets, bbox_weights = \ sample_rois(all_rois, fg_rois_per_image, rois_per_image, self._num_classes, gt_boxes=gt_boxes) if logger.level == logging.DEBUG: logger.debug("labels: %s" % labels) logger.debug('num fg: {}'.format((labels > 0).sum())) logger.debug('num bg: {}'.format((labels == 0).sum())) self._count += 1 self._fg_num += (labels > 0).sum() self._bg_num += (labels == 0).sum() logger.debug("self._count: %d" % self._count) logger.debug('num fg avg: %d' % (self._fg_num / self._count)) logger.debug('num bg avg: %d' % (self._bg_num / self._count)) logger.debug('ratio: %.3f' % (float(self._fg_num) / float(self._bg_num))) for ind, val in enumerate([rois, labels, bbox_targets, bbox_weights]): self.assign(out_data[ind], req[ind], val)
def forward(self, is_train, req, in_data, out_data, aux): # from ipdb import set_trace;set_trace() assert self._batch_rois % self._batch_images == 0, \ 'BATCHIMAGES {} must devide BATCH_ROIS {}'.format(self._batch_images, self._batch_rois) rois_per_image = self._batch_rois / self._batch_images fg_rois_per_image = np.round(self._fg_fraction * rois_per_image).astype(np.int) all_rois = in_data[0].asnumpy() gt_boxes = in_data[1].asnumpy() # Include ground-truth boxes in the set of candidate rois zeros = np.zeros((gt_boxes.shape[0], 1), dtype=gt_boxes.dtype) all_rois = np.vstack((all_rois, np.hstack((zeros, gt_boxes[:, :-1])))) # Sanity check: single batch only assert np.all(all_rois[:, 0] == 0), 'Only single item batches are supported' rois, labels, bbox_targets, bbox_weights = \ sample_rois(all_rois, fg_rois_per_image, rois_per_image, self._num_classes, gt_boxes=gt_boxes) if logger.level == logging.DEBUG: logger.debug("labels: %s" % labels) logger.debug('num fg: {}'.format((labels > 0).sum())) logger.debug('num bg: {}'.format((labels == 0).sum())) self._count += 1 self._fg_num += (labels > 0).sum() self._bg_num += (labels == 0).sum() logger.debug("self._count: %d" % self._count) logger.debug('num fg avg: %d' % (self._fg_num / self._count)) logger.debug('num bg avg: %d' % (self._bg_num / self._count)) logger.debug('ratio: %.3f' % (float(self._fg_num) / float(self._bg_num))) for ind, val in enumerate([rois, labels, bbox_targets, bbox_weights]): self.assign(out_data[ind], req[ind], val)
def forward(self, is_train, req, in_data, out_data, aux): assert self._batch_rois % self._batch_images == 0, \ 'BATCHIMAGES {} must devide BATCH_ROIS {}'.format(self._batch_images, self._batch_rois) rois_per_image = old_div(self._batch_rois, self._batch_images) fg_rois_per_image = np.round(self._fg_fraction * rois_per_image).astype(int) all_rois = in_data[0].asnumpy() gt_boxes = in_data[1].asnumpy() # Include ground-truth boxes in the set of candidate rois zeros = np.zeros((gt_boxes.shape[0], 1), dtype=gt_boxes.dtype) all_rois = np.vstack((all_rois, np.hstack((zeros, gt_boxes[:, :-1])))) # Sanity check: single batch only assert np.all( all_rois[:, 0] == 0), 'Only single item batches are supported' rois, labels, bbox_targets, bbox_weights = \ sample_rois(all_rois, fg_rois_per_image, rois_per_image, self._num_classes, gt_boxes=gt_boxes) if DEBUG: print("labels=", labels) print('num fg: {}'.format((labels > 0).sum())) print('num bg: {}'.format((labels == 0).sum())) self._count += 1 self._fg_num += (labels > 0).sum() self._bg_num += (labels == 0).sum() print("self._count=", self._count) print('num fg avg: {}'.format(old_div(self._fg_num, self._count))) print('num bg avg: {}'.format(old_div(self._bg_num, self._count))) print('ratio: {:.3f}'.format( old_div(float(self._fg_num), float(self._bg_num)))) for ind, val in enumerate([rois, labels, bbox_targets, bbox_weights]): self.assign(out_data[ind], req[ind], val)
def forward(self, is_train, req, in_data, out_data, aux): assert self._batch_rois % self._batch_images == 0, \ 'BATCHIMAGES {} must devide BATCH_ROIS {}'.format(self._batch_images, self._batch_rois) # 每张图片多少个 rois,论文中是64 rois_per_image = self._batch_rois / self._batch_images # 每张图片的前景(正样本)数量 128*0.25 = 36 fg_rois_per_image = np.round(self._fg_fraction * rois_per_image).astype(int) # 所有 rois all_rois = in_data[0].asnumpy() # GT boxes (x1, y1, x2, y2, label) gt_boxes = in_data[1].asnumpy() # Include ground-truth boxes in the set of candidate rois zeros = np.zeros((gt_boxes.shape[0], 1), dtype=gt_boxes.dtype) all_rois = np.vstack((all_rois, np.hstack((zeros, gt_boxes[:, :-1])))) # Sanity check: single batch only assert np.all( all_rois[:, 0] == 0), 'Only single item batches are supported' # generate random sample of ROIs comprising foreground and background examples rois, labels, bbox_targets, bbox_weights = \ sample_rois(all_rois, fg_rois_per_image, rois_per_image, self._num_classes, gt_boxes=gt_boxes) if logger.level == logging.DEBUG: logger.debug("labels: %s" % labels) logger.debug('num fg: {}'.format((labels > 0).sum())) logger.debug('num bg: {}'.format((labels == 0).sum())) self._count += 1 self._fg_num += (labels > 0).sum() self._bg_num += (labels == 0).sum() logger.debug("self._count: %d" % self._count) logger.debug('num fg avg: %d' % (self._fg_num / self._count)) logger.debug('num bg avg: %d' % (self._bg_num / self._count)) logger.debug('ratio: %.3f' % (float(self._fg_num) / float(self._bg_num))) for ind, val in enumerate([rois, labels, bbox_targets, bbox_weights]): self.assign(out_data[ind], req[ind], val)