在张量流中找到两个边界框的交集?

2023-12-23

系统的坐标是

boundary coordinates (x_min, y_min, x_max, y_max).

我想找到两个框 set1 和 set2 的交集

set1 -> (n1,4)
set2 -> (n2,4)

example 

set_1-> tensor([[0.2400, 0.2342, 0.8500, 0.8048],
        [0.1420, 0.5075, 0.2440, 0.5856],
        [0.0000, 0.5075, 0.1420, 0.5976]], device='cuda:0')
set_2-> tensor([[-0.0368, -0.0368,  0.0632,  0.0632],
        [-0.0576, -0.0576,  0.0839,  0.0839],
        [-0.0576, -0.0222,  0.0839,  0.0485],
        ...,
        [ 0.0000,  0.0000,  1.0000,  1.0000],
        [ 0.0000,  0.1818,  1.0000,  0.8182],
        [ 0.1818,  0.0000,  0.8182,  1.0000]], device='cuda:0') torch.Size([8732, 4])

如果我想获得两组边界框的交集

:return: intersection of each of the boxes in set 1 with respect to each of the boxes in set 2, a tensor of dimensions (n1, n2)

我应该如何用python和tensorflow写这个?

def find_intersection(set_1, set_2):
    """
    Find the intersection of every box combination between two sets of boxes that are in boundary coordinates.

    :param set_1: set 1, a tensor of dimensions (n1, 4)
    :param set_2: set 2, a tensor of dimensions (n2, 4)
    :return: intersection of each of the boxes in set 1 with respect to each of the boxes in set 2, a tensor of dimensions (n1, n2)
    """
    print('set1->',set_1)
    print('set_2->',set_2)
    return tf.sets.intersection(set_1,set_2)
def find_jaccard_overlap(set_1, set_2):
    """
    Find the Jaccard Overlap (IoU) of every box combination between two sets of boxes that are in boundary coordinates.

    :param set_1: set 1, a tensor of dimensions (n1, 4)
    :param set_2: set 2, a tensor of dimensions (n2, 4)
    :return: Jaccard Overlap of each of the boxes in set 1 with respect to each of the boxes in set 2, a tensor of dimensions (n1, n2)
    """

    # Find intersections
    intersection = find_intersection(set_1, set_2)  # (n1, n2)
    print('intersection->', intersection)

    # Find areas of each box in both sets
    areas_set_1 = (set_1[:, 2] - set_1[:, 0]) * (set_1[:, 3] - set_1[:, 1])  # (n1)
    areas_set_2 = (set_2[:, 2] - set_2[:, 0]) * (set_2[:, 3] - set_2[:, 1])  # (n2)

    # Find the union
    # PyTorch auto-broadcasts singleton dimensions
    union = areas_set_1.unsqueeze(1) + areas_set_2.unsqueeze(0) - intersection  # (n1, n2)

    return intersection / union  # (n1, n2)

你可以这样做:

import tensorflow as tf

def box_intersections(set1, set2):
    set1 = tf.expand_dims(set1, axis=-1)
    x_min = tf.math.maximum(set1[:, 0], set2[:, 0])
    y_min = tf.math.maximum(set1[:, 1], set2[:, 1])
    x_max = tf.math.minimum(set1[:, 2], set2[:, 2])
    y_max = tf.math.minimum(set1[:, 3], set2[:, 3])
    dx = tf.math.maximum(x_max - x_min, 0)
    dy = tf.math.maximum(y_max - y_min, 0)
    return dx * dy

# Example
tf.random.set_seed(0)
# Make random boxes
n1 = 10
n2 = 20
set1 = tf.random.uniform((n1, 2))
set1 = tf.concat([set1, set1 + tf.random.uniform((n1, 2))], axis=1)
set2 = tf.random.uniform((n2, 2))
set2 = tf.concat([set2, set2 + tf.random.uniform((n2, 2))], axis=1)
# Compute intersections
intersect = box_intersections(set1, set2)
print(intersect.shape)
# (10, 20)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在张量流中找到两个边界框的交集? 的相关文章

  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1

随机推荐

  • 在 C# 中使用多种表单

    我正在尝试制作一个小项目 该项目针对不同的状态使用多种表单 对话框 并遇到一些问题 我的对话框是登录 设置和显示 当应用程序启动时显示登录表单 Application Run new login 用户可以从中打开 设置 表单 或者如果满足某
  • 高效退出多线程应用程序(具体)

    我已经阅读了一些有关将消息从线程冒泡到所有其他线程以优雅退出的正确方法的资料 每个线程执行其自己的退出例程 其中 我喜欢全局原子布尔值的想法 它可以从任何线程进行标记 并且所有其他线程检查此标记以执行退出例程 当所有线程都加入时 主线程可以
  • 为单选按钮组中的每个单选按钮添加图片

    我想实现一个单选按钮组 其中每个单选按钮旁边都有一张图片 在单选按钮的左侧 那可能吗 如果是这样 怎么办 html div class form group div
  • 更改监听器而不提交表单

    我有一个列表框 我想捕获选择的更改 以便根据它填充另一个列表框 我已经尝试过以下方式
  • 如何解决“CASCADE() 缺少必需的位置参数”TypeError

    我是 Django 和 Python 的新手 我已经在 Django 中创建了一些模型 现在由于以下错误而无法再运行该应用程序 TypeError CASCADE 缺少 4 个必需的位置参数 collector field sub objs
  • Mongoose 版本控制:什么时候禁用它是安全的?

    来自docs http mongoosejs com docs guide html versionKey versionKey 是每个文档首次创建时设置的属性 由猫鼬 该键值包含的内部修订 文档 该文档属性的名称是可配置的 这 默认为 v
  • 随机自定义视图选择器[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我创建了一个视图控制器 其中包含一个滚动视图 在滚动视图上我水平添加 5 个不同的自定义 UIView 我希望自定义 UIView 应根据自
  • 在执行快照的进程遍历后,如何获取所有进程的完整命令行?

    所以 我的目标是获取所有当前正在运行的进程的完整命令行 为此 我所做的就是使用CreateToolhelp32SnapshotAPI 然后执行一个流程来存储PROCESSENTRY32在名为的数组中键入进程process list BOOL
  • iOS 7.1 UITextView 在新行后仍然无法滚动到光标/插入符

    从 iOS 7 开始 UITextView当用户键入流到新行的文本时 不会自动滚动到光标 这个问题在 SO 和其他地方都有详细记录 对我来说 这个问题在 iOS 7 1 中仍然存在 我究竟做错了什么 我安装了 Xcode 5 1 目标是 i
  • HttpUtility.HtmlAttributeEncode 的缺点

    我必须对一个字段进行编码 以确保脚本注入的安全 我知道我可以使用 HttpUtility HtmlEncode 和 Decode 但是这种用于 HI ASCII 字符的方法超出了数据库中字段大小的范围 并且我不想更改数据字段列的大小 相反
  • Oracle 12c XML 从响应中获取值

    我是 PL SQL 新手 我需要使用 SOAP Web 服务 我无法从此响应中提取 p 地址值 response xml
  • 跨域限制和子域

    子域有跨域策略限制吗 如果我有一个申请paint xxxx com这是操纵图像image xxxx com 有跨域问题吗 我问这些问题是因为我正在考虑在子域上放置代理 是的 跨域限制适用于子域 解决方案是把 document domain
  • IntelliJ IDEA 可以在完成后自动格式化代码块吗?

    一些 IDE 提供在完成一行或代码块后自动格式化它的功能 例如通过写结束花或分号 我很难相信 IDEA 不提供这种功能 或者确实如此 如果您知道如何打开它 或者如果我可能需要一些插件 请让我和全世界知道 If it s a single l
  • Emacs 中的代码折叠[重复]

    这个问题在这里已经有答案了 可能的重复 emacs中如何实现代码折叠效果 https stackoverflow com questions 1085170 how to achieve code folding effects in em
  • 无法将 String 用作 Spring Data 的 @Id

    我想使用此类在数据库上创建新表 Entity Table name currency rate public class CurrencyRate Id private String id Column name source curren
  • PHPDoc 的冗长是否带来的麻烦大于它的价值? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我今天第一次尝试使用 PHPDoc 很快就遇到了问题 每 1 行变量声明 我至少有 5 行注释 例子 Holds path the remote
  • 存在无默认值的参数时 do.call() 的行为

    这个问题是一个后续问题之前的回答 https stackoverflow com a 18108234 636656这就提出了一个难题 之前答案中的可重现示例 Models lt list lm runif 10 rnorm 10 lm r
  • `atob` 抛出“要解码的字符串未正确编码”

    我遇到了问题atob抛出异常 要解码的字符串未正确编码 堆栈溢出上已经存在一些类似的问题 但它们涉及 复杂 问题 文件和 或 URL 编码 我的代码要简单得多 atob MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA
  • 如何在 Optuna 中优化多个指标

    如何同时优化多个指标objectiveOptuna 的功能 例如 我正在训练 LGBM 分类器 希望为所有常见分类指标 如 F1 精度 召回率 准确度 AUC 等 找到最佳超参数集 def objective trial Train gbm
  • 在张量流中找到两个边界框的交集?

    系统的坐标是 boundary coordinates x min y min x max y max 我想找到两个框 set1 和 set2 的交集 set1 gt n1 4 set2 gt n2 4 example set 1 gt t