如何处理不同的图像维度进行分类
How to tackle different Image dimensions for classification
我正在解决一个问题,我必须将图像分类到不同的组中。我是初学者,使用简单的序列模型使用 Keras。我应该如何解决下面代码中不同尺寸图像的问题,例如有些图片尺寸为 2101583,有些尺寸为 210603 等。请建议。
model.add(Dense(100,input_dim = ?,activation= "sigmoid"))
model.add(Dense(100,input_dim = ?,activation= "sigmoid"))
对于 Keras 中的简单分类算法,输入的大小应始终相同。由于前馈神经网络由一个输入层、一个到多个隐藏层和一个输出层组成,所有节点都连接在一起,因此您应该始终在每个 Input-Node 处都有一个输入。此外,神经网络的形状和其他超参数是静态的,因此您无法更改输入的数量,因此无法更改一个神经网络中每个图像的大小。
针对您的情况,最佳做法是将所有图片缩小到最小图片的大小,或者将所有图片放大到最大图片的大小。
裁员
通过缩小尺寸,您会主动删除图像中的像素,包括像素中包含的信息。这会导致过度拟合,但也会减少计算时间。
升迁
通过放大,您可以在不添加信息的情况下向图像添加像素。这会增加计算时间,但您会保留每个图像的信息。
为了一个好的开始,我建议您尝试将图片缩小到最小的尺寸。这也是科学上的常见做法[1]. One library to do so is OpenCV,实现问题请参考Whosebug上的多个问题:
Opencv-Python-Resizing image
我正在解决一个问题,我必须将图像分类到不同的组中。我是初学者,使用简单的序列模型使用 Keras。我应该如何解决下面代码中不同尺寸图像的问题,例如有些图片尺寸为 2101583,有些尺寸为 210603 等。请建议。
model.add(Dense(100,input_dim = ?,activation= "sigmoid"))
model.add(Dense(100,input_dim = ?,activation= "sigmoid"))
对于 Keras 中的简单分类算法,输入的大小应始终相同。由于前馈神经网络由一个输入层、一个到多个隐藏层和一个输出层组成,所有节点都连接在一起,因此您应该始终在每个 Input-Node 处都有一个输入。此外,神经网络的形状和其他超参数是静态的,因此您无法更改输入的数量,因此无法更改一个神经网络中每个图像的大小。
针对您的情况,最佳做法是将所有图片缩小到最小图片的大小,或者将所有图片放大到最大图片的大小。
裁员 通过缩小尺寸,您会主动删除图像中的像素,包括像素中包含的信息。这会导致过度拟合,但也会减少计算时间。
升迁 通过放大,您可以在不添加信息的情况下向图像添加像素。这会增加计算时间,但您会保留每个图像的信息。
为了一个好的开始,我建议您尝试将图片缩小到最小的尺寸。这也是科学上的常见做法[1]. One library to do so is OpenCV,实现问题请参考Whosebug上的多个问题:
Opencv-Python-Resizing image