neural-network - 裁剪/缩放 ImageNet 图像

标签 neural-network crop imagenet

ImageNet 图像大小不一,但神经网络需要固定大小的输入。

一种解决方案是采用尽可能大的裁剪尺寸,以图像的中心点为中心。这有效,但有一些缺点。通常,图像中感兴趣对象的重要部分被剪掉,甚至在某些情况下,正确的对象完全丢失,而属于不同类别的另一个对象可见,这意味着您的模型将针对该图像进行错误的训练.

另一种解决方案是使用整个图像并将其零填充到每个图像具有相同尺寸的位置。但这似乎会干扰训练过程,并且模型将学习寻找图像边缘附近的垂直/水平黑色斑块。

通常做什么?

最佳答案

有几种方法:

  • 多种裁剪。例如,AlexNet 最初在 5 种不同的裁剪上进行训练:中心、左上角、右上角、左下角、右下角。
  • 随机裁剪。只需从图像中随机取一些裁剪,希望神经网络不会有偏差。
  • 调整大小和变形。在不考虑纵横比的情况下将图像调整为固定大小。这将使图像内容变形但保留,但现在您确定没有内容被剪切。
  • 可变大小的输入。不要在可变大小的图像上裁剪和训练网络,使用诸如空间金字塔池之类的东西来提取可与全连接层一起使用的固定大小的特征向量。

  • 你可以看看最新的 ImageNet 网络是如何训练的,比如 VGG 和 ResNet。他们通常会详细描述这一步。

    关于neural-network - 裁剪/缩放 ImageNet 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37016276/

    相关文章:

    matlab - 在 Matlab/Octave 中实现神经网络

    python - 将图层添加到 keras 预训练模型中

    android - 在camera2上裁剪矩形分段,传给opencv处理

    python - 如何使用 Pygame 裁剪图像?

    python - 当存在 GPU 时,如何在 TensorFlow 的单个脚本中训练多个模型?

    neural-network - 在 PyTorch 中计算每个 epoch 的准确率

    android - 在 android 上使用 com.android.camera.action.CROP 裁剪保存的图像

    machine-learning - 在 ILSVRC12 上学习 ZFNet 时测试精度无法提高

    conv-neural-network - 在灰度图像网络上训练的 VGG16