【问题标题】:High-resolution image classification高分辨率图像分类
【发布时间】:2017-11-26 03:40:55
【问题描述】:

VGG16 / Inception 等预训练网络通常在

是否可以在 预训练 VGG16 / Inception 的第一层之前添加一个(或两个)高分辨率卷积层,以使网络能够消费高分辨率图片?

据我所知 - 第一层最难训练,需要大量数据和资源来训练它。

我想知道是否可以冻结预训练网络并仅在平均 GPU 卡和大约 3000 个示例上训练新附加的高分辨率层?能在几个小时内完成吗?

另外,如果您知道如何使用高分辨率图像进行图像分类的任何示例,请分享链接。

附:

通常的缩小方法的问题在于,在我们的案例中,微小的裂缝或微小的污垢点等微小的细节非常重要,它们在分辨率较低的图像上会丢失。

【问题讨论】:

  • 输入图像的尺寸是多少?
  • 约1024x1024

标签: machine-learning tensorflow pre-trained-model


【解决方案1】:

要将经过训练的 ImageNet 模型应用于您的问题,您可以考虑在后端而不是前端放置新层。 ImageNet CNN 模型中的第一层经过训练以检测“通用”低级特征(水平/垂直/对角边缘、颜色斑点等)。这些卷积层不需要固定的图像大小(图像通常被调整为常见的尺寸,因为图像中对象的预期比例和/或适应全连接层的尺寸)。

因此,您可以尝试保持第一个 N 卷积层原样,然后添加自定义层以针对您的数据集进行训练。训练自定义层后,您可以决定解冻现有 ImageNet 层并更新它们是否有意义。

【讨论】:

    【解决方案2】:

    不幸的是,您不太可能冻结预训练的网络,然后只是在开始时添加额外的层,因为初始层需要三个通道输入,并且旨在发现图像中的特征。

    相反,您可以尝试修改网络架构,以便初始层确实接收 1024x1024 图像,然后使用池化或跨步进行缩减。

    例如,您可以尝试将 Inception V3 的 Slim 模型定义中第一个 conv 层的步幅调整为 8 而不是 2: https://github.com/tensorflow/models/blob/master/slim/nets/inception_v3.py

    这将允许您读取 4 倍大的图像,同时保持网络的其余部分相同。不幸的是,我希望您需要进行全面的再培训。

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 2011-04-07
      • 2017-08-23
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2018-11-28
      相关资源
      最近更新 更多