mmseg返回logits

本文详细介绍了MMSeg中模型的推理过程,包括如何通过不同的配置实现单张图片的预测及多张图片的增强预测,并展示了如何使用API进行实例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

### MMSEG 分词工具与算法介绍 #### 什么是 MMSEGMMSEG 是一种基于字符串匹配的中文分词算法,主要用于将连续的汉字序列切分成具有意义的词语[^1]。该算法通过扫描输入文本并利用预定义的词典完成分词操作。 #### MMSEG 的核心思想 MMSEG 算法的核心在于采用多种匹配策略组合的方式进行分词。常见的匹配方法包括正向最大匹配(FMM)、逆向最大匹配(BMM),以及最小切分等技术[^3]。这些策略能够有效减少歧义,并提高分词准确性。 #### 实现细节 为了实现高效的分词功能,开发者通常会参考现有的开源项目作为基础框架。例如,在 GitHub 上可以找到多个关于 MMSEG 的实现版本,其中包括由 `ustcdane` 和 `jdeng` 提供的代码库[^2]。以下是其实现的关键点: - **词典加载**:程序启动时读取预先构建好的词典文件。 - **动态规划优化**:对于较长的句子,使用动态规划降低计算开销。 - **多线程支持**:部分高级实现允许并发处理大规模文档集合。 下面展示了一个简化版 Python 风格伪代码用于演示如何实现 FMM 方法: ```python def forward_maximum_matching(text, dictionary): result = [] start = 0 while start < len(text): matched_word = None # 尝试从当前位置寻找最长可能词条 for end in range(len(text), start, -1): word_candidate = text[start:end] if word_candidate in dictionary: matched_word = word_candidate break if not matched_word: # 如果找不到,则单字作为一个词条 matched_word = text[start:start+1] result.append(matched_word) start += len(matched_word) return result ``` 此函数接受两个参数——待分词的文本串和一个包含合法词汇列表形式表示的词典对象;返回值则是一个按顺序排列的分好词的结果数组[^4]。 #### 应用场景 由于其高效性和相对较高的精度表现,MMSEG 广泛应用于搜索引擎索引建立、自然语言理解等领域之中。特别是在面对大量结构化较差的数据集时尤为适用。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值