|
|
@@ -57,9 +57,10 @@ def check_anchors(dataset, model, thr=4.0, imgsz=640): |
|
|
|
anchors = torch.tensor(anchors, device=m.anchors.device).type_as(m.anchors) |
|
|
|
m.anchors[:] = anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss |
|
|
|
check_anchor_order(m) |
|
|
|
LOGGER.info(f'{PREFIX}New anchors saved to model. Update model *.yaml to use these anchors in the future.') |
|
|
|
s = f'{PREFIX}Done ✅ (optional: update model *.yaml to use these anchors in the future)' |
|
|
|
else: |
|
|
|
LOGGER.info(f'{PREFIX}Original anchors better than new anchors. Proceeding with original anchors.') |
|
|
|
s = f'{PREFIX}Done ⚠️ (original anchors better than new anchors, proceeding with original anchors)' |
|
|
|
LOGGER.info(emojis(s)) |
|
|
|
|
|
|
|
|
|
|
|
def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True): |
|
|
@@ -120,7 +121,7 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen |
|
|
|
# Filter |
|
|
|
i = (wh0 < 3.0).any(1).sum() |
|
|
|
if i: |
|
|
|
LOGGER.info(f'{PREFIX}WARNING: Extremely small objects found. {i} of {len(wh0)} labels are < 3 pixels in size.') |
|
|
|
LOGGER.info(f'{PREFIX}WARNING: Extremely small objects found: {i} of {len(wh0)} labels are < 3 pixels in size') |
|
|
|
wh = wh0[(wh0 >= 2.0).any(1)] # filter > 2 pixels |
|
|
|
# wh = wh * (npr.rand(wh.shape[0], 1) * 0.9 + 0.1) # multiply by random scale 0-1 |
|
|
|
|