OSError: image file is truncated (1 bytes not processed)解决方案

今天用paddle的框架做训练时遇到的一个问题:

W0914 13:56:32.486941 21077 device_context.cc:404] Please NOTE: device: 3, GPU Compute Capability: 7.5, Driver API Version: 10.2, Runtime API Version: 10.1
W0914 13:56:32.492003 21077 device_context.cc:422] device: 3, cuDNN Version: 7.6.
game start----________---#
  0%|                                                                                                                                                                                                                                                                                                              | 0/1056 [00:00<?, ?it/s]/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/tensor/creation.py:125: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe.                                      | 0/110 [00:00<?, ?it/s]
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  if data.dtype == np.object:

fail to perform transform [<paddle.vision.transforms.transforms.Resize object at 0x7fa9f4034820>] with error: image file is truncated (1 bytes not processed) and stack:                                                                                                                                   | 54/110 [00:33<00:31,  1.76it/s]
Traceback (most recent call last):
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/vision/transforms/transforms.py", line 113, in __call__
    data = f(data)
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/vision/transforms/transforms.py", line 269, in __call__
    outputs.append(apply_func(inputs[i]))
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/vision/transforms/transforms.py", line 395, in _apply_image
    return F.resize(img, self.size, self.interpolation)
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/vision/transforms/functional.py", line 138, in resize
    return F_pil.resize(img, size, interpolation)
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/vision/transforms/functional_pil.py", line 136, in resize
    return img.resize(size[::-1], _pil_interp_from_str[interpolation])
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/PIL/Image.py", line 1982, in resize    self.load()
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/PIL/ImageFile.py", line 249, in load
    raise OSError(
OSError: image file is truncated (1 bytes not processed)

WARNING:root:DataLoader reader thread raised an exception.
Exception in thread Thread-13:
Traceback (most recent call last):
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/threading.py", line 973, in _bootstrap_inner
 49%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎                                                                                                                                                     | 54/110 [00:33<00:34,  1.60it/s]    self.run()

  File "/miniconda/miniconda3/envs/tt/lib/python3.9/threading.py", line 910, in run
  0%|                                                                                                                                                                                                                                                                                                              | 0/1056 [00:34<?, ?it/s]
Traceback (most recent call last):
  File "/d/images_updata_to_elastic/py/batchTranVector.py", line 289, in <module>
    self._target(*self._args, **self._kwargs)
    mains.buildBase(data=result, batch_size=100)
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 192, in _thread_loop
  File "/d/images_updata_to_elastic/py/batchTranVector.py", line 209, in buildBase
    for img, regs in tqdm(loader()):
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/tqdm/std.py", line 1185, in __iter__
    six.reraise(*sys.exc_info())
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/six.py", line 719, in reraise
    for obj in iterable:
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 197, in __next__
    raise value  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 160, in _thread_loop
    data = self._reader.read_next_var_list()
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.
  [Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:166)

    batch = self._dataset_fetcher.fetch(indices)
  File "/miniconda/miniconda3/envs/tt/lib/python3.9/site-packages/paddle/fluid/dataloader/fetcher.py", line 106, in fetch

我用的是PIL的image读取的图片,具体问题没有分析出来,但是通过以下方法可以解决实际问题:

from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

如果上面的方法无效,还有下面一种方法:

# that is ineffective to me, so I change the code:
img = transforms.ToTensor()(Image.open(img_path).convert('RGB'))
# to this:
img = transforms.ToTensor()(cv2.cvtColor(cv2.imread(img_path), cv2.COLOR_BGR2RGB))
# and it works.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值