当前位置:   article > 正文

Corrupt JPEG data: premature end of data segment

corrupt jpeg data: premature end of data segment

在跑 LSTR 的效果时 , 用 tusimple数据集(1280720)正常,换成自集的数据集(12801080),出现 Corrupt JPEG data: premature end of data segment

知乎回答:在所有图片进行检查后,觉得是第3 条的原因, 在传入网络前进行数据增广时 resize操作,并未去除, 不影响训练和效果。

在这里插入图片描述

https://www.zhihu.com/question/30372655
1.
遇到了同样的问题。针对jpg文件来说,一般是由于文件下载不完整导致的,可以通过判断jpg文件的完整性来避开这个问题。最简单的办法是判断文件最后两个字节是否是’\xff\xd9’,如果不是则表明文件不完整。def is_valid_jpg(jpg_file):
“”“判断JPG文件下载是否完整 “””
if jpg_file.split(’.’)[-1].lower() == ‘jpg’:
with open(jpg_file, ‘rb’) as f:
f.seek(-2, 2)
return f.read() == b’\xff\xd9’
else:
return True

使用skimage可以捕获这个异常

from skimage import io

try:

io.imread(‘1.jpg’)

except Exception as e:

print(e)

本人在实验中也遇到这个问题,后来找到原因了。由于网络接受的图片大小和你的数据传入的大小不同,因此在你传入网络之后,tf内部会resize,但是注意,这个resize并不是resize函数,这个resize会让数据丢失,测过19801080的图片内部resize不会数据丢失,但是22801880的图片传入后resize会数据丢失。个人建议:既然最后都是要resize,为什么不先resize呢?训练时间也减少了将近4倍,亲测函数resize不会造成数据丢失。ps:如果你们情况和我不是很雷同,可以参考一下是不是tf内部处理你的数据是出了问题。

这只是opencv的一个stderr的输出罢了。。不是异常,不能catch的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/219447
推荐阅读
相关标签
  

闽ICP备14008679号