Tensorflow InvalidArgumentError Invalid JPEG data, size xxxx Tensorflow InvalidArgumentError Invalid JPEG data, size xxxx

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即可。

猜你喜欢

转载自blog.csdn.net/wc996789331/article/details/89409972