image - 适用于小图像 (80x80) 的最佳 CNN 架构?

标签 image neural-network computer-vision conv-neural-network transfer-learning

我是计算机视觉领域的新手,希望您能帮助我解决一些有关 CNN 架构的基本问题。

我知道一些最著名的有:
VGG网
网络
密集网
初始网络
异象网

他们通常需要输入大约 224x224x3 的图像,我也看到了 32x32x3。

关于我的具体问题,我的目标是训练大小为 (80x80) 的生物医学图像以进行 4 级分类 - 最后我将有一个 4 的密集层。而且我的数据集非常小(1000 张图像),我想使用迁移学习。

你能帮我解决以下问题吗?在我看来,它们没有唯一的正确答案,但我需要了解思考它们的正确方式应该是什么。如果您也能给我一些指点,我将不胜感激。

  • 我应该缩放我的图像吗?相反并缩小到 32x32 输入怎么样?
  • 我应该将 CNN 的输入更改为 80x80 吗?我主要应该改变哪些参数?内核和参数的任何特定比率?
  • 我还有另一个问题,输入需要 3 个 channel (RGB),但我正在处理灰度图像。它会大大改变结果吗?
  • 我应该只填充周围环境(在 80x80 和 224x224 之间)作为背景而不是缩放?在这种情况下,图像应该居中吗?
  • 您对选择哪种架构有什么建议吗?
  • 我已经看到这些架构对 3D/体积输入而不是 2D/图像进行了一些调整。我有一个与我在此处描述的问题类似的问题,但使用 3D 输入。在选择 3D CNN 架构而不是 2D 架构时,有什么共同的理由吗?

  • 在进步,我留下我的感谢!

    最佳答案

    我假设你有使用 CNN 进行分类的基本知识

    回答问题 1~3

    您可以出于多种目的缩放图像。图像越小,训练和推理时间越快。但是在缩小图像的过程中会丢失重要信息。没有一个正确的答案,这完全取决于您的应用程序。实时流程重要吗?如果您的答案是否定的,请始终坚持原始尺寸。

    如果您计划重新训练它们,您还需要调整图像大小以适应预定义模型的输入大小。但是,由于您的图像是灰度的,您需要找到经过灰度训练的模型或创建一个 3 channel 图像并将相同的值复制到所有 R、G 和 B channel 。这效率不高,但可以帮助您重用其他人训练的高质量模型。

    我认为你处理这个问题的最好方法是从一开始就训练一切。 1000 似乎是一小部分数据,但由于您的领域是特定的并且只需要 4 个类,因此从头开始训练似乎并没有那么糟糕。

    问题 4

    当大小不同时,总是缩放。填充周围会导致模型学习空白空间,这不是我们想要的。
    还要确保推理期间的输入大小和格式与训练期间的输入大小和格式相同。

    问题5

    如果处理时间不是问题RESNET。如果处理时间很重要,那么 MobileNet。

    问题 6

    6) 取决于您的输入数据。如果您有 3D 数据,则可以使用它。更多的输入数据通常有助于更好的分类。但是2D足以解决某些问题。如果您可以通过查看 2D 图像对图像进行分类,那么大多数可能的 2D 图像就足以完成任务。

    我希望这将清除您的一些问题并指导您找到正确的解决方案。

    关于image - 适用于小图像 (80x80) 的最佳 CNN 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59522453/

    相关文章:

    java - 如何使用 Java 从网站获取 favicon.ico?

    artificial-intelligence - 支持向量机和神经网络

    OpenCV 理解灰度

    image-processing - 阿拉伯线图像的HOG特征提取

    image-processing - Cognex Vision Suite (ViDi) - 删除图像的一部分

    javascript - Fabric.js canvas.setHeigth 或 setWidth 推送后如何设置 div?

    python - 如何使用 Python 将 .ICO 转换为 .PNG?

    c# - 将图像导入图像框中

    machine-learning - 当输入大小不同时如何进行机器学习?

    tensorflow - 在 Keras 中 Flatten 层是如何工作的?