【问题标题】:Can we use a model trained with image classification to help in object detection in tensorflow?我们可以使用经过图像分类训练的模型来帮助在 tensorflow 中进行对象检测吗?
【发布时间】:2019-10-30 23:28:01
【问题描述】:

我已经使用 Tensorflow-for-poets 来构建图像分类模型。但是,我现在想在对象检测模型中使用经过训练的模型。我可以直接导入 .pb 文件还是必须重新训练模型?

我在尝试时遇到此错误

KeyError:“名称‘image_tensor:0’指的是一个不存在的张量。操作‘image_tensor’在图中不存在。”

【问题讨论】:

    标签: image tensorflow machine-learning deep-learning object-detection


    【解决方案1】:

    不能直接使用图像分类产生的.pb模型进行物体检测。您将必须获得一个对象检测模型,对其进行训练,然后使用它进行检测。 Tensorflow 对象检测模型zoo有预训练的对象检测模型。

    详细答案如下:

    图像分类和对象检测是两个不同但密切相关的任务。事实上,Ross Girshick 在著名论文R-CNN 上也问过类似的问题

    ImageNet 上的 CNN 分类结果在多大程度上可以推广到 PASCAL VOC Challenge 上的目标检测结果?

    这个问题基本上意味着可以使用图像分类模型来帮助对象检测,但还需要一些步骤。所以你不能直接使用分类网络来做目标检测任务。 (但你给出的错误是不同的,你可以找到正确的张量名称并修复错误,但直接使用分类网络进行目标检测是没有意义的。)

    有一种简单的方法将两者结合起来,你可以使用一个不同大小的滑动窗口穿过图像并进行分类,这样就可以进行物体检测。

    集成了另一个解决方案。举个例子,Faster R-CNN 是一个使用 VGG 作为特征提取器的目标检测网络(在原始论文中)。在这里你可以看到 VGG 是一个图像分类网络,它在一些图像分类任务上进行了预训练。

    image source

    【讨论】:

    • 非常感谢!但是我怎样才能找到正确的张量名称呢?是否涉及使用 tensorboard 打开 .pb 文件?
    • 您可以打印 .pb 文件中的所有张量名称,并且可以找到输入和输出张量名称。但通常这些张量名称是由设计图的人定义的,他们可能应该记录输入和输出张量的名称,以便其他人可以使用冻结的 .pb 模型。在您的情况下,image_tensor:0 实际上是来自 tensorflow 对象检测动物园中模型的张量。看到这个[文件][1][1]:github.com/tensorflow/models/blob/master/research/…
    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2018-10-07
    • 1970-01-01
    • 2020-04-18
    • 2020-07-24
    • 2018-02-20
    • 2020-05-06
    • 2020-10-05
    相关资源
    最近更新 更多