【问题标题】:Can you integrate opencv SIFT with a tensorflow model?您可以将 opencv SIFT 与 tensorflow 模型集成吗?
【发布时间】:2020-11-28 12:03:22
【问题描述】:

我正在尝试创建一个 CNN,但使用 SIFT 算法而不是任何池化层。 问题是我似乎无法在 Tensorflow 或 PyTorch 中找到该算法的任何 Python 实现。我见过的唯一实现是 opencv。

是否可以将 opencv SIFT 实现用作 Tensorflow CNN 模型中的层? 如果是这样,您将如何创建它?

【问题讨论】:

    标签: python tensorflow pytorch sift


    【解决方案1】:

    虽然这是一个有趣的想法,但我相信它存在许多问题,使其非常不切实际甚至不可能。

    网络的层在输入方面必须是可微的,以允许计算任何梯度,然后用于更新权重。 虽然我认为有可能编写一个完全可微分的 sift 实现,但仅此一项是不切实际的。

    Further SIFT 没有固定数量的输出并且需要很长时间来计算,这会大大减慢训练速度。

    将 SIFT 与神经网络结合使用的唯一实用方法是首先运行 SIFT,然后使用检测到的前 N ​​个关键点作为第一层的输入。但是,我不确定这是否会成功。

    【讨论】:

    • 是的,这就是我所担心的,这会使其不是一个可行的解决方案。我想研究这种方法,因为它已经在一些学术论文上完成了。尽管如此,这些论文都没有链接到 github 页面或任何代码,因此我仍然无法使用 TF 或 Torch 实现 SIFT
    • @gilbertocunha 您能否链接其中一篇论文?我现在找不到类似的东西。
    • 当然,我一直在看这两个:1 - arxiv.org/pdf/1904.00197.pdf 2 - arxiv.org/pdf/1608.02833.pdf
    • 哦,有趣。然后我认为你应该能够按照正常的方式为 tensorflow/keras 编写自定义层,你可以在这里找到 tensorflow.org/guide/keras/custom_layers_and_models 。也许这个 github 代码可以帮助你,它在 Keras 中实现了 sift,但不是作为一个层。 github.com/ducha-aiki/keras-sift/blob/master/keras_sift.py
    • 谢谢!它可能被证明是有用的!同时,经过一番搜索,我还找到了这个 github 代码,用于 SIFT 的 pytorch 实现。如果您有兴趣:github.com/ducha-aiki/pytorch-sift。不过,我还没有测试过。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2022-06-27
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2018-12-08
    相关资源
    最近更新 更多