跳转到主要内容

Python的QPBO包装器

项目描述

QPBO的轻量级包装器

对Vladimir Kolmogorov的二次伪布尔优化(QPBO)算法修改版的Python轻量级包装器。Vladimir Kolmogorov的原始源代码可在http://pub.ist.ac.at/~vnk/software.html找到。此包装器使用支持更大图和略微降低内存使用的修改版。有关更多详细信息,请参阅子模块存储库

QPBO与Maxflow的比较

虽然QPBO算法执行类似于Maxflow的s-t图切,但它允许使用非亚模量能量项,而Maxflow则不允许。在众多其他方面中,这允许QPBO解决带有排除项的优化问题,这可能非常有用。由QPBO实现构建的图的大小是等效问题的Maxflow图的两倍。因此,QPBO比Maxflow使用更多的内存,速度略慢。

安装

使用pip install thinqpbo安装软件包或克隆此存储库(包括子模块)。构建软件包需要Cython。

图类型

目前,有三种不同的图类型:QPBOIntQPBOFloatQPBODouble。唯一的不同之处在于图中边容量使用的底层数据类型。为了稳定性,建议使用QPBOInt进行整数容量,使用QPBODouble进行浮点容量。然而,在某些情况下,使用QPBOFloat以减少内存消耗可能更有利。

高级功能(QPBO-P和QPBO-I)

QPBO实现有几个称为QPBO-P和QPBO-I的高级扩展。目前,并非所有高级功能都已封装。如果您需要使用thinqpbo未封装的QPBO C++库功能,请通过在GitHub上创建问题来告知我。

小型示例

import thinqpbo as tq

# Create graph object.
graph = tq.QPBOInt()

# Number of nodes to add.
nodes_to_add = 2

# Add two nodes.
first_node_id = graph.add_node(nodes_to_add)

# Add edges.
graph.add_unary_term(0, 0, 5) # E1(0) = 5, s     --5->   n(0)
graph.add_unary_term(0, 1, 0) # E0(0) = 1, n(0)  --1->   t
graph.add_unary_term(1, 5, 0) # E0(1) = 5, n(1)  --5->   t
graph.add_pairwise_term(0, 1, 0, 7, 0, 4)   # E01(0,1) = 7, n(0)  --7->   n(1)
                                            # E11(0,1) = 4, Not possible with standard Maxflow


# Find maxflow/cut graph.
graph.solve()
graph.compute_weak_persistencies()
twice_energy = graph.compute_twice_energy()

for n in range(nodes_to_add):
    segment = graph.get_label(n)
    print('Node %d has label %d.' % (n, segment))
# Node 0 has label 0.
# Node 1 has label 0.

print('Twice energy/flow: %s' % twice_energy)
# Twice energy/flow: 12

许可证

由于QPBO实现是在GPLv3许可证下分发的,因此本包也是如此。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

thinqpbo-0.1.4.tar.gz (112.9 kB 查看哈希值)

上传时间

构建分发

thinqpbo-0.1.4-cp39-cp39-win_amd64.whl (75.4 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

thinqpbo-0.1.4-cp39-cp39-macosx_10_14_x86_64.whl (100.1 kB 查看哈希值)

上传时间 CPython 3.9 macOS 10.14+ x86-64

thinqpbo-0.1.4-cp38-cp38-win_amd64.whl (75.4 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

thinqpbo-0.1.4-cp38-cp38-macosx_10_14_x86_64.whl (99.9 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.14+ x86-64

thinqpbo-0.1.4-cp37-cp37m-win_amd64.whl (74.9 kB 查看哈希值)

上传时间 CPython 3.7m Windows x86-64

thinqpbo-0.1.4-cp37-cp37m-macosx_10_14_x86_64.whl (102.7 kB 查看哈希值)

上传时间 CPython 3.7m macOS 10.14+ x86-64

thinqpbo-0.1.4-cp36-cp36m-win_amd64.whl (75.0 kB 查看哈希值)

上传时间 CPython 3.6m Windows x86-64

thinqpbo-0.1.4-cp36-cp36m-macosx_10_14_x86_64.whl (102.8 kB 查看哈希值)

上传于 CPython 3.6m macOS 10.14+ x86-64

thinqpbo-0.1.4-cp27-cp27m-macosx_10_14_x86_64.whl (99.1 kB 查看哈希值)

上传于 CPython 2.7m macOS 10.14+ x86-64

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面