Python中mask使用

  1. Mask tensor can take 0 and 1 values only,mask中的内容只能是0或者是1
  2. mask是一个 ByteTensor mask,作用是对原tensor中的内容进行遮罩,即要求出最后一层外其他的维度必须一样,例如:
 a=torch.tensor([[[5,5,5,5], [6,6,6,6], [7,7,7,7]], [[1,1,1,1],[2,2,2,2],[3,3,3,3]]])
 mask = torch.ByteTensor([[[1],[1],[0]],[[0],[1],[1]]])
 print('a.size()\n',a.size())
 print('mask.size()\n',mask.size())

输出:

a.size()
 torch.Size([2, 3, 4])
mask.size()
 torch.Size([2, 3, 1])

使用:

  1. 指定为0的位置进行mask

代码

import torch
a=torch.tensor([[[5,5,5,5], [6,6,6,6], [7,7,7,7]], [[1,1,1,1],[2,2,2,2],[3,3,3,3]]])
print(a)
print(a.size())
print("#############################################3")
mask = torch.ByteTensor([[[1],[1],[0]],[[0],[1],[1]]])
print(mask.size())
b = a.masked_fill(mask==0, value=torch.tensor(-1e9))
print(b)
print(b.size())

输出:

tensor([[[5, 5, 5, 5],
         [6, 6, 6, 6],
         [7, 7, 7, 7]],

        [[1, 1, 1, 1],
         [2, 2, 2, 2],
         [3, 3, 3, 3]]])
torch.Size([2, 3, 4])
#############################################3
torch.Size([2, 3, 1])
tensor([[[          5,           5,           5,           5],
         [          6,           6,           6,           6],
         [-1000000000, -1000000000, -1000000000, -1000000000]],

        [[-1000000000, -1000000000, -1000000000, -1000000000],
         [          2,           2,           2,           2],
         [          3,           3,           3,           3]]])
torch.Size([2, 3, 4])
  1. 默认为1的位置进行mask

代码:

import torch
a=torch.tensor([[[5,5,5,5], [6,6,6,6], [7,7,7,7]], [[1,1,1,1],[2,2,2,2],[3,3,3,3]]])
print(a)
print(a.size())
print("#############################################3")
mask = torch.ByteTensor([[[1],[1],[0]],[[0],[1],[1]]])
print(mask.size())
b = a.masked_fill(mask, value=torch.tensor(-1e9))
print(b)
print(b.size())

输出:

tensor([[[5, 5, 5, 5],
         [6, 6, 6, 6],
         [7, 7, 7, 7]],

        [[1, 1, 1, 1],
         [2, 2, 2, 2],
         [3, 3, 3, 3]]])
torch.Size([2, 3, 4])
#############################################3
torch.Size([2, 3, 1])
tensor([[[-1000000000, -1000000000, -1000000000, -1000000000],
         [-1000000000, -1000000000, -1000000000, -1000000000],
         [          7,           7,           7,           7]],

        [[          1,           1,           1,           1],
         [-1000000000, -1000000000, -1000000000, -1000000000],
         [-1000000000, -1000000000, -1000000000, -1000000000]]])
torch.Size([2, 3, 4])

参考连接:
https://zhuanlan.zhihu.com/p/151783950

### PythonMask R-CNN使用指南 #### 一、简介 Mask R-CNN是一个用于目标检测与实例分割的模型,在Python环境中,通常基于Keras和TensorFlow实现。该架构融合了Faster R-CNN进行对象检测(类别加边界框),并结合全卷积网络(FCN)完成像素级别的标注工作[^3]。 #### 二、环境准备 为了顺利运行Mask R-CNN项目,需先搭建合适的开发环境。建议采用Python 3版本,并确保已安装必要的库文件如Keras, TensorFlow等。对于具体依赖项及其版本号,请参照官方文档说明来设置虚拟环境或Anaconda环境。 #### 三、安装过程 按照官方给出的操作指引,可以通过pip命令直接安装所需软件包;也可以克隆GitHub上的开源仓库获取最新代码资源。如果遇到任何兼容性问题,则应仔细核对各组件之间的匹配情况并作出相应调整。 #### 四、训练流程 以PyTorch框架为例,执行`python tools/train.py mask_rcnn_r101_fpn_gufei.py --seed3407`可启动自定义配置下的训练任务。这里指定使用的骨干网为ResNet-101搭配FPN结构,同时设置了随机种子以便实验重现[^2]。 #### 五、评估与预测 当模型训练完成后,可通过加载预训练权重来进行测试集上的性能评测或是针对新图像实施推理操作。此时应当注意输入数据格式的一致性和标准化处理步骤。 ```python from mrcnn import model as modellib, utils import os # 加载最新的检查点文件 model_path = "path/to/your/model" if not os.path.exists(model_path): print("Model weights file does not exist.") else: inference_config = InferenceConfig() model = modellib.MaskRCNN(mode="inference", config=inference_config, model_dir=model_path) model.load_weights(model_path, by_name=True) # 对单张图片做预测 image = skimage.io.imread('test_image.jpg') results = model.detect([image], verbose=1)[0] # 显示结果 visualize.display_instances(image, results['rois'], results['masks'], results['class_ids'], class_names, results['scores']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值