From 0e4fd5c573031b875bb10aaef6157b2db5671fbf Mon Sep 17 00:00:00 2001 From: Francis Lata Date: Mon, 23 Dec 2024 05:16:13 +0000 Subject: [PATCH] revert helper changes --- extra/models/helpers.py | 23 ----------------------- extra/models/retinanet.py | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 24 deletions(-) delete mode 100644 extra/models/helpers.py diff --git a/extra/models/helpers.py b/extra/models/helpers.py deleted file mode 100644 index a3b0c565fb..0000000000 --- a/extra/models/helpers.py +++ /dev/null @@ -1,23 +0,0 @@ -import numpy as np -from tinygrad import Tensor - -def nms(boxes, scores, thresh=0.5): - x1, y1, x2, y2 = np.rollaxis(boxes, 1) - areas = (x2 - x1 + 1) * (y2 - y1 + 1) - to_process, keep = scores.argsort()[::-1], [] - while to_process.size > 0: - cur, to_process = to_process[0], to_process[1:] - keep.append(cur) - inter_x1 = np.maximum(x1[cur], x1[to_process]) - inter_y1 = np.maximum(y1[cur], y1[to_process]) - inter_x2 = np.minimum(x2[cur], x2[to_process]) - inter_y2 = np.minimum(y2[cur], y2[to_process]) - inter_area = np.maximum(0, inter_x2 - inter_x1 + 1) * np.maximum(0, inter_y2 - inter_y1 + 1) - iou = inter_area / (areas[cur] + areas[to_process] - inter_area) - to_process = to_process[np.where(iou <= thresh)[0]] - return keep - -def meshgrid(x, y): - grid_x = Tensor.cat(*[x[idx:idx+1].expand(y.shape).unsqueeze(0) for idx in range(x.shape[0])]) - grid_y = Tensor.cat(*[y.unsqueeze(0)]*x.shape[0]) - return grid_x.reshape(-1, 1), grid_y.reshape(-1, 1) diff --git a/extra/models/retinanet.py b/extra/models/retinanet.py index 4cac85a297..68bfd39f02 100644 --- a/extra/models/retinanet.py +++ b/extra/models/retinanet.py @@ -7,11 +7,26 @@ import tinygrad.nn as nn from examples.mlperf.helpers import generate_anchors from examples.mlperf.initializers import Conv2dNormal, Conv2dKaimingUniform from examples.mlperf.losses import sigmoid_focal_loss, l1_loss -from extra.models.helpers import nms from extra.models.resnet import ResNet from extra.models.mask_rcnn import BoxCoder import numpy as np +def nms(boxes, scores, thresh=0.5): + x1, y1, x2, y2 = np.rollaxis(boxes, 1) + areas = (x2 - x1 + 1) * (y2 - y1 + 1) + to_process, keep = scores.argsort()[::-1], [] + while to_process.size > 0: + cur, to_process = to_process[0], to_process[1:] + keep.append(cur) + inter_x1 = np.maximum(x1[cur], x1[to_process]) + inter_y1 = np.maximum(y1[cur], y1[to_process]) + inter_x2 = np.minimum(x2[cur], x2[to_process]) + inter_y2 = np.minimum(y2[cur], y2[to_process]) + inter_area = np.maximum(0, inter_x2 - inter_x1 + 1) * np.maximum(0, inter_y2 - inter_y1 + 1) + iou = inter_area / (areas[cur] + areas[to_process] - inter_area) + to_process = to_process[np.where(iou <= thresh)[0]] + return keep + def decode_bbox(offsets, anchors): dx, dy, dw, dh = np.rollaxis(offsets, 1) widths, heights = anchors[:, 2] - anchors[:, 0], anchors[:, 3] - anchors[:, 1]