我正在尝试创建一个 CNN,但使用的是 SIFT 算法而不是任何池化层。问题是我似乎无法在 Tensorflow 或 PyTorch 中找到该算法的任何 Python 实现。我看到的唯一实现是使用 opencv。是否可以将 opencv SIFT 实现用作 Tensorflow CNN 模型中的一个层?如果是这样,您将如何创建它?
1 回答
烙印99
TA贡献1829条经验 获得超13个赞
虽然这是一个有趣的想法,但我认为它存在许多问题,这使得它非常不切实际甚至不可能。
网络层的输入必须是可区分的,以允许计算任何梯度,然后将其用于更新权重。虽然我认为可以编写一个完全可微分的筛选实现,但仅此一点是不切实际的。
此外,SIFT 没有恒定数量的输出并且需要很长时间来计算,这会大大减慢训练速度。
将 SIFT 与神经网络一起使用的唯一实用方法是首先运行 SIFT,然后使用前 N 个检测到的关键点作为第一层的输入。但是,我不确定这是否会成功。
添加回答
举报
0/150
提交
取消