|
|
@@ -77,13 +77,15 @@ class Detect(nn.Module): |
|
|
|
|
|
|
|
def _make_grid(self, nx=20, ny=20, i=0): |
|
|
|
d = self.anchors[i].device |
|
|
|
t = self.anchors[i].dtype |
|
|
|
shape = 1, self.na, ny, nx, 2 # grid shape |
|
|
|
y, x = torch.arange(ny, device=d, dtype=t), torch.arange(nx, device=d, dtype=t) |
|
|
|
if check_version(torch.__version__, '1.10.0'): # torch>=1.10.0 meshgrid workaround for torch>=0.7 compatibility |
|
|
|
yv, xv = torch.meshgrid(torch.arange(ny, device=d), torch.arange(nx, device=d), indexing='ij') |
|
|
|
yv, xv = torch.meshgrid(y, x, indexing='ij') |
|
|
|
else: |
|
|
|
yv, xv = torch.meshgrid(torch.arange(ny, device=d), torch.arange(nx, device=d)) |
|
|
|
grid = torch.stack((xv, yv), 2).expand(shape).float() - 0.5 # add grid offset, i.e. y = 2.0 * x - 0.5 |
|
|
|
anchor_grid = (self.anchors[i] * self.stride[i]).view((1, self.na, 1, 1, 2)).expand(shape).float() |
|
|
|
yv, xv = torch.meshgrid(y, x) |
|
|
|
grid = torch.stack((xv, yv), 2).expand(shape) - 0.5 # add grid offset, i.e. y = 2.0 * x - 0.5 |
|
|
|
anchor_grid = (self.anchors[i] * self.stride[i]).view((1, self.na, 1, 1, 2)).expand(shape) |
|
|
|
return grid, anchor_grid |
|
|
|
|
|
|
|
|