使用torchvision加载图像时is_valid_file参数类型错误的解决方法
修复ImageFolder中is_valid_file参数的类型错误
is_valid_file参数要求传入函数(而非布尔值),该函数需接收单个字符串参数(文件路径),返回布尔值判断文件是否有效。你直接传True导致类型不匹配,触发报错。
解决方案1:自定义图像完整性验证函数
针对图像损坏的场景,编写函数尝试加载并验证图像,捕获异常跳过损坏文件:
from PIL import Image def is_valid_image(file_path): try: with Image.open(file_path) as img: img.verify() # 校验图像完整性 return True except (IOError, SyntaxError): print(f"跳过损坏图像: {file_path}") return False # 调用时传入该函数 train_dataset = torchvision.datasets.ImageFolder(root="SmallSet/Train", is_valid_file=is_valid_image)
解决方案2:简单过滤文件后缀(可选)
若只需过滤特定格式文件,可使用后缀判断函数:
def is_valid_file(file_path): valid_extensions = ('.jpg', '.jpeg', '.png', '.bmp') return file_path.lower().endswith(valid_extensions) train_dataset = torchvision.datasets.ImageFolder(root="SmallSet/Train", is_valid_file=is_valid_file)
内容的提问来源于stack exchange,提问作者Josef Sigron
相关产品推荐
相关产品推荐

