是否有一种简单的方法可以对与现有图像分类器的输入大小不同的图像进行分类?

人工智能 卷积神经网络 图像识别 张量流 楷模
2021-10-19 16:11:49

大多数图像分类器(如 Inception-v3)接受大小约​​为 299 x 299 x 3 的图像作为输入。在这种特殊情况下,我无法调整图像大小并失去分辨率。是否有一个简单的解决方案来处理这个问题而不是重新训练模型?(特别是在张量流中)

2个回答

我猜:

如果您在给定模型的输入之前添加一些 CNN 层并仅训练这些层同时保持给定模型的参数冻结,您可能会得到更好的结果。

本质上,这几个额外的层会将您的输入图像“转换”为适当的形状,但由于经过训练而不是硬编码,因此具有更高的准确性。

我的建议是将所有图像的分辨率等比例转换。你可以使用这个 python 代码:

from PIL import Image
import os
import argparse


def rescale_images(directory, size):
    for img in os.listdir(directory):
        im = Image.open(directory + img)
        im_resized = im.resize(size, Image.ANTIALIAS)
        im_resized.save(directory + img)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description="Rescale images")
    parser.add_argument('-d', '--directory', type=str, required=True, help='Directory containing the images')
    parser.add_argument('-s', '--size', type=int, nargs=2, required=True, metavar=('width', 'height'),
                        help='Image size')
    args = parser.parse_args()
    rescale_images(args.directory, args.size)



# save this python code as transform_image_resoluthion.py 
# run this with cmd with the below command 
# python transform_image_resolution.py -d images/ -s 800 600