【发布时间】:2020-11-28 12:03:22
【问题描述】:
我正在尝试创建一个 CNN,但使用 SIFT 算法而不是任何池化层。 问题是我似乎无法在 Tensorflow 或 PyTorch 中找到该算法的任何 Python 实现。我见过的唯一实现是 opencv。
是否可以将 opencv SIFT 实现用作 Tensorflow CNN 模型中的层? 如果是这样,您将如何创建它?
【问题讨论】:
标签: python tensorflow pytorch sift
我正在尝试创建一个 CNN,但使用 SIFT 算法而不是任何池化层。 问题是我似乎无法在 Tensorflow 或 PyTorch 中找到该算法的任何 Python 实现。我见过的唯一实现是 opencv。
是否可以将 opencv SIFT 实现用作 Tensorflow CNN 模型中的层? 如果是这样,您将如何创建它?
【问题讨论】:
标签: python tensorflow pytorch sift
虽然这是一个有趣的想法,但我相信它存在许多问题,使其非常不切实际甚至不可能。
网络的层在输入方面必须是可微的,以允许计算任何梯度,然后用于更新权重。 虽然我认为有可能编写一个完全可微分的 sift 实现,但仅此一项是不切实际的。
Further SIFT 没有固定数量的输出并且需要很长时间来计算,这会大大减慢训练速度。
将 SIFT 与神经网络结合使用的唯一实用方法是首先运行 SIFT,然后使用检测到的前 N 个关键点作为第一层的输入。但是,我不确定这是否会成功。
【讨论】: