【问题标题】:Finding the index of peak point ( the first True) in boolean tensor mask在布尔张量掩码中查找峰值点的索引(第一个 True)
【发布时间】:2021-05-21 13:19:18
【问题描述】:

在 pytorch 中运行一个 Detectron2 模型后,Detectron2 给我它找到的对象掩码作为(真/假)张量。在图像中发现了 33 个对象,所以我有 torch.Size([33, 683, 1024])。

tensor([[False, False, False,  ..., False, False, False],
    [False, False, False,  ..., False, False, False],
    [False, False, False,  ..., False, False, False],
    ...,
    [False, False, False,  ..., False, False, False],
    [False, False, False,  ..., False, False, False],
    [False, False, False,  ..., False, False, False]], device='cuda:0')

到目前为止,这很棒。但我需要这 33 个对象的 y 维度(高度)的峰值坐标。 (假设物体是气球,那么我需要气球的顶部作为(x,y)点)

知道如何尽快获得峰值点坐标 提前致谢

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    我已经遍历每个维度并检查是否满足 True 条件,但需要几分钟才能找到索引

    然后我使用了torch.where方法,它立即找到了所有满足条件的索引。

    for maskCounter in range(masks.shape[0]):
        print((torch.where(masks[maskCounter] == True)[0][0]).item(), (torch.where(masks[maskCounter] == True)[1][0]).item())
    

    【讨论】:

    • masks[maskCounter] == True不能写成masks[maskCounter]吗?
    • @Giuppox 我想它可以是,就像任何其他语言一样
    • 是的,我只是觉得写一个不需要的语句没用
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2021-05-21
    • 2018-12-20
    • 2016-02-19
    • 2017-05-18
    • 2018-08-05
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多