Yolov8实例分割在Colab正常运行,Windows本地提示图片损坏求助
解决方案
- 检查图片文件的隐藏属性或权限:右键图片→属性,取消「隐藏」勾选,同时在「安全」选项卡确认当前运行Yolov8的用户拥有读取权限。部分从Roboflow导出的文件可能在Windows系统中被标记为隐藏,导致框架无法正常读取。
- 用PIL批量重新编码图片:Yolov8默认依赖OpenCV加载图片,Windows下OpenCV对部分非标准JPEG编码兼容性较差。运行以下脚本批量重新保存图片:
from PIL import Image import os input_dir = "你的数据集图片目录" output_dir = "新图片保存目录" os.makedirs(output_dir, exist_ok=True) for filename in os.listdir(input_dir): if filename.lower().endswith((".jpg", ".jpeg")): try: img = Image.open(os.path.join(input_dir, filename)) img.save(os.path.join(output_dir, filename), "JPEG", quality=95) except Exception as e: print(f"处理 {filename} 失败: {str(e)}")
用新生成的图片替换原数据集后重新测试。
- 修改Yolov8图片加载逻辑:在
ultralytics/data/datasets.py中,将默认的OpenCV加载替换为PIL加载,绕开系统解码差异:
# 替换原有cv2.imread相关代码 from PIL import Image import numpy as np img = Image.open(img_path).convert("RGB") img = np.array(img)
- 重新导出Roboflow数据集:导出时选择「无压缩」或调整JPEG压缩级别,部分Roboflow导出的压缩格式在Windows下存在兼容问题。
- 验证文件完整性:对比本地与Colab中图片的哈希值,确认下载过程未损坏文件:
Windows命令行:
Colab中:certutil -hashfile "目标图片路径" SHA256
若哈希值不一致,重新下载数据集。import hashlib with open("目标图片路径", "rb") as f: print(hashlib.sha256(f.read()).hexdigest())
内容的提问来源于stack exchange,提问作者yeong nam tan
相关产品推荐
相关产品推荐

