From b10e0f3fa8564e7a5402c544b8ae5a95aff1e491 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Jun 2024 11:53:42 +0200 Subject: [PATCH] YOLO Segment `sigmoid()` fix (#13939) Signed-off-by: Glenn Jocher Co-authored-by: DeepDiver Co-authored-by: Laughing <61612323+Laughing-q@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- ultralytics/utils/ops.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a7c65661..2bec2fe5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -260,7 +260,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Install requirements - run: pip install -e . + run: pip install -e . pytest-cov - name: Check environment run: | yolo checks diff --git a/ultralytics/utils/ops.py b/ultralytics/utils/ops.py index 73a1523e..0ec7e4a5 100644 --- a/ultralytics/utils/ops.py +++ b/ultralytics/utils/ops.py @@ -661,10 +661,10 @@ def process_mask_upsample(protos, masks_in, bboxes, shape): (torch.Tensor): The upsampled masks. """ c, mh, mw = protos.shape # CHW - masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw) + masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw) masks = F.interpolate(masks[None], shape, mode="bilinear", align_corners=False)[0] # CHW masks = crop_mask(masks, bboxes) # CHW - return masks.gt_(0.5) + return masks.gt_(0.0) def process_mask(protos, masks_in, bboxes, shape, upsample=False): @@ -685,7 +685,7 @@ def process_mask(protos, masks_in, bboxes, shape, upsample=False): c, mh, mw = protos.shape # CHW ih, iw = shape - masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw) # CHW + masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw) # CHW width_ratio = mw / iw height_ratio = mh / ih @@ -698,7 +698,7 @@ def process_mask(protos, masks_in, bboxes, shape, upsample=False): masks = crop_mask(masks, downsampled_bboxes) # CHW if upsample: masks = F.interpolate(masks[None], shape, mode="bilinear", align_corners=False)[0] # CHW - return masks.gt_(0.5) + return masks.gt_(0.0) def process_mask_native(protos, masks_in, bboxes, shape): @@ -715,10 +715,10 @@ def process_mask_native(protos, masks_in, bboxes, shape): masks (torch.Tensor): The returned masks with dimensions [h, w, n] """ c, mh, mw = protos.shape # CHW - masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw) + masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw) masks = scale_masks(masks[None], shape)[0] # CHW masks = crop_mask(masks, bboxes) # CHW - return masks.gt_(0.5) + return masks.gt_(0.0) def scale_masks(masks, shape, padding=True):