glob.glob()的一个坑

在学习到《Tensoflow:实战Google深度学习框架(第2版)》-第六章图像识别与卷积神经网络- 6.52.Tensorflow实现迁移学习的章节当中,遇到了一个预处理图像的一个坑。

# 获取一个子目录中所有的图片文件
extensions = ['jpg', 'jpeg','JPG','JPEG'] # 注意下这里
        file_list = []
        dir_name = os.path.basename(sub_dir)
        for extension in extensions:
            file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extension)
            print(file_glob)
            file_list.extend(glob.glob(file_glob))
        if not file_list:
            continue
        print(len(file_list))
extensions = ['jpg', 'jpeg','JPG','JPEG'] 

  这行代码在Linux下是没问题的,但是在Windows下运行是有问题的。

问题出现在下面的glob.glob()函数,里面的通配符匹配,在Windows下是不区分大小写的,而在Linux下是区分大小写的,所以在Linux下没这个问题。

但在Windows中,glob.glob()把*.jpg和*.jpeg的图片分别读取了两次(小写一次,大写一次),file_list自然的也增加了一倍的数据。

所以代码应该修改为:

extensions = ['jpg', 'jpeg']  # windows

在图片的预处理中,数据翻倍,会增加很多的时间,不仅如此,内存消耗也会增加很多,我在遇到这个坑的时候,16G内存也不够用,也白白浪费了很多时间。

 

你可能感兴趣的:(Tensorflow)