You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch下如何基于分割张量C将张量A对应区域复制到全白张量B

PyTorch分割区域复制实现方案

核心逻辑直接用布尔掩码广播赋值即可,无需使用torch.masked_select,该方法会保留原张量的维度结构,完全匹配你的需求。


实现步骤

  • 第一步:指定你需要提取的目标分割类别ID,构造对应位置的布尔掩码
  • 第二步:将掩码扩展匹配图像张量的维度,适配batch和3通道维度
  • 第三步:直接对全白张量B的掩码位置赋值为原图张量A的对应位置值

完整代码示例

import torch

# 按需修改为你要提取的分割类别ID,示例为提取类别37的区域
target_class = 37

# 1. 生成布尔掩码:对应目标类别位置为True,其余为False
mask = (C == target_class)
# 若需要同时提取多个类别,替换为下行代码即可:
# mask = torch.isin(C, torch.tensor([337, 340], device=C.device))

# 2. 扩展掩码维度,适配A/B的(1,3,256,256)维度,支持广播
mask = mask.unsqueeze(0).unsqueeze(0)

# 3. 赋值操作:将A对应区域的内容复制到B的对应位置
B[mask.expand_as(B)] = A[mask.expand_as(B)]

注意事项

请确保张量A、B、C在同一设备上(如都在cuda:0或者都在cpu),否则会触发设备不匹配报错。
该逻辑可通用适配不同batch、不同尺寸的输入,仅需根据实际维度调整掩码的扩展规则即可。

内容的提问来源于stack exchange,提问作者AlwaysNull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:24:05