mmseg返回logits

info

主要是为了投票
mmseg/models/segmentors/base.py 里面 forward

        if return_loss:
            return self.forward_train(img, img_metas, **kwargs)
        else:
            return self.forward_test(img, img_metas, **kwargs)

forward_test 里面

        if num_augs == 1:
            return self.simple_test(imgs[0], img_metas[0], **kwargs)
        else:
            #  print('Using aug_test')
            return self.aug_test(imgs, img_metas, **kwargs)

最后是在 mmseg/models/segmentors/encoder_decoder.py 里面实现了 simple_testaug_test ,同时 EncoderDecoder 里面是有test_cfg的 那么可以简单传个参数

    def simple_test(self, img, img_meta, rescale=True):
        """Simple test with single image."""
        seg_logit = self.inference(img, img_meta, rescale)

        if self.test_cfg.get("return_logits", False):
            seg_pred = seg_logit
        else:
            seg_pred = seg_logit.argmax(dim=1)

        #  seg_pred = seg_logit.argmax(dim=1)
        if torch.onnx.is_in_onnx_export():
            # our inference backend only support 4D output
            seg_pred = seg_pred.unsqueeze(0)
            return seg_pred
        seg_pred = seg_pred.cpu().numpy()
        # unravel batch dim
        seg_pred = list(seg_pred)
        return seg_pred

效果

from mmseg.apis import init_segmentor, inference_segmentor
config_file = '/home/user/workplace/python/202201kesai_seg/configs/upernet.py'
checkpoint_file = '/home/user/workplace/python/mmsegmentation-0.19.0/work_dirs/2022kesai_seg/upernet/latest.pth'
model = init_segmentor(config_file, checkpoint_file, device='cuda:0')
result = inference_segmentor(model, '/home/user/data/202201_kesai_seg/images/000893_GF.tif')
print(result[0].shape)

(7, 256, 256)

或者 用 --out probs.pkl 也可以得到probs

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值