Tensorflow InvalidArgumentError Invalid JPEG data, size xxxx

非常多次遇到这个问题,今天把来龙去脉搞清楚了,在这里做个记录。

一般遇到这个错误的都是在生成TFRecords文件的时候,这个错误转换过来的意思就是你生成tfrecords文件的过程中,一个size为xxxx的文件不是一个规范的jpeg文件,所以在生成tfrecords过程中出错。假设这个文件名字叫A.jpg


原因如下:

首先,A.jpg一定不是一个规范的jpg文件。JPEG格式是有自己的一套编码格式的,之前并不了解这一点,直到遇见了StackOverflow上面这个人提出的问题。

https://stackoverflow.com/questions/42154766/tensorflow-invalidargumenterror-invalid-jpeg-data-size-4096-not-jpeg-file-0x00

虽然我报的错并没有提示starts with 00,05一类的信息,但是这表明JPEG是有自己的文件起始位置编码的。通过UltraEdit查看随便一个标准的JPEG文件,结合资料,都发现起始几位一定是FF D8。而你找到你报错的那个文件,一定不是这个开头。这说明的问题就是你强制把png后缀改成jpg,不代表着图片就跟着变过来了,而是需要另存为jpeg才能真正的成为jpeg文件。


解决方案很简单了,如果嫌麻烦直接删掉,如果本身训练集图片不多不好删,就把报错的文件逐个另存为jpeg即可。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值