【问题标题】:Can CNNs be faster than classic descriptors?CNN 能比经典描述符更快吗?
【发布时间】:2017-04-02 13:13:20
【问题描述】:

免责声明:我对 CNN 几乎一无所知,也不知道在哪里可以问这个问题。

我的研究重点是计算机视觉应用的高性能。我们在最大尺寸为 500 像素的图像上生成代表图像的代码,时间不到 20 毫秒。

这是通过结合 SURF 描述符和VLAD 代码来完成的,获得一个表示图像的向量,该图像将在我们的对象识别应用程序中使用。

CNN 可以更快吗?根据this benchmark(基于小得多的图像),所需的时间更长,考虑到图像的大小是我们的一半,几乎翻了一番。

【问题讨论】:

    标签: computer-vision deep-learning surf vlad-vector


    【解决方案1】:

    是的,它们可以更快。你得到的数字是针对 ImageNet 分类训练的网络,100 万张图像,1000 个类。除非您的分类问题相似,否则使用 ImageNet 网络是多余的。

    您还应该记住,这些网络的权重约为 10-1 亿,因此评估它们的成本非常高。但是你可能不需要一个非常大的网络,你可以设计自己的网络,层数和参数更少,评估成本低得多。

    根据我的经验,我设计了一个网络来对 96x96 声纳图像块进行分类,总共有大约 4000 个权重,它可以获得超过 95% 的分类准确率,并且在 RPi2 上以每帧 40 毫秒的速度运行。

    具有 900K 权重、相同输入大小的更大网络需要 7 毫秒才能在 Core i7 上进行评估。所以这肯定是可能的,你只需要使用更小的网络架构。一个好的开始是SqueezeNet,这是一个可以在Imagenet中取得不错性能的网络,但是权重减少了50倍,当然比其他网络快很多。

    【讨论】:

    • 感谢您的回答。抱歉,如果我要说错话(正如我所说,我对 CNN 几乎一无所知),但据我了解,这是经典的精度/速度权衡,对吗?您报告的时间是所需的整个计算,从图像查询到生成的代码,对吗?或者还有其他时间需要考虑?无论如何,我们将其用于对象识别并最终用于图像检索,所以它不是分类。
    • @justHelloWorld 对象识别与图像分类几乎相同。这是速度/准确性的权衡,但更像是您损失了 0.5% 的准确性并获得了 40 倍的加速。我报告的时间是一个前传,如果你只需要这些功能,可能会更少。
    • 再次感谢您的回答。我们正在尝试为此类应用程序实现缓存,因此性能至关重要。一个重要的特点是我们提出的缓存方法是基于度量空间的,因此评估两个 CNN 代码之间相似性的距离基于度量距离应该是非常重要的。你认为这可能吗? PS:说真的,感谢所有帮助:D
    • 出于这个原因,我们使用了 VLAD 代码:它们非常紧凑(因此计算它们之间的相似性非常快),它们基于经典描述符,生成速度非常快,并且它们使用L2 距离。
    • @justHelloWorld 是的,有 CNN 可以做到这一点,学习具有有意义距离的嵌入。例如,参见 FaceNet。这只是度量学习的一部分。
    【解决方案2】:

    我会警惕基准和笼统的陈述。了解生成引用值的每个细节很重要。例如,在 GPU 硬件上运行 CNN 会提高引用值吗?

    20ms 对我来说似乎很快; 40ms也是如此。我不知道你的要求是什么。

    CNN 还能提供哪些其他好处?也许这不仅仅是原始速度。

    我不认为神经网络是解决所有问题的完美技术。回归、SVM 和其他分类技术仍然可行。

    这里存在偏见。你的问题看起来好像你只是想确认你目前的研究是最好的。你有一个你不愿意扔掉的沉没成本,但你担心那里可能会有更好的东西。如果这是真的,我认为这对 SO 来说不是一个好问题。

    “我对 CNN 几乎一无所知”——如果你是一名真正的研究人员,寻求真理,我认为你有义务自己学习和回答。 TensorFlow 和 Keras 让这一切变得容易。

    【讨论】:

    • 感谢您的有用回答。如果您点击链接,您可以看到这些测试是使用高端 GPU 执行的。
    • 我完全同意你的看法,但这是一个硕士论文研究项目,学习 CNN 需要的不仅仅是研究本身。
    • 我明白你的意思。硕士论文的原创性和范围不必达到博士论文的标准。我认为你对你所做的工作是安全的。我不同意你对 CNN 的评价。我所看到的 TensorFlow 和 Keras 将使其触手可及。最好的答案将来自您的顾问。我建议开会。
    • 非常感谢。奇怪的是,你在堆栈溢出时遇到的人的几句话会比你认识的人更让人放心。
    • 我很乐意提供帮助。祝你好运。你的工作听起来很有趣。对您来说,好消息是,一旦获得学位,学习不应也不必停止。一旦你的学位要求得到满足,没有什么可以阻止你潜入 CNN。
    【解决方案3】:

    回答您的问题:是的,他们可以。它们可以比经典描述符更慢,也可以更快。例如,只使用一个过滤器和几个最大池几乎肯定会更快。但结果肯定也很糟糕。

    您应该问一个更具体的问题。相关部分是:

    • 问题:分类/检测/语义分割/实例分割/人脸验证/...?
    • 约束:最小准确度/最大速度/最大延迟?
    • 评估细节
      • 哪些硬件可用(GPU)?
      • 您是否评估单个图像?通常,您可以在与一张图像大约相同的时间内评估多达 512 张图像。

    另外:输入图像大小不应相关。如果 CNN 在较小的输入上取得比经典描述符更好的结果,那您为什么要关心?

    论文

    请注意,CNN 通常不会针对速度进行调整,而是针对准确性进行调整。

    【讨论】:

    • 这个答案太棒了!非常感谢!我真的需要一些纸作为参考!在我链接的基准中,写到它们的图像对于每个考虑的案例都是 224x224。他们使用 GPU 来评估速度。正如我在之前的 cmets 中已经说过的,速度在我的应用程序中至关重要。
    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 2021-12-30
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    相关资源
    最近更新 更多