옐그's 코딩라이프

[tensor] InvalidArgumentError : Unknown image file format. One of JPEG, PNG, GIF, BMP required 본문

AI

[tensor] InvalidArgumentError : Unknown image file format. One of JPEG, PNG, GIF, BMP required

옐그멍이 2022. 11. 28. 15:47

이미지 분류를 하던 중 위와 같은 에러를 만났습니다.

 

위의 에러는 말그래도 jpeg, png, gif, bmp를 제외한 다른 unknown image file이 있어서 그런 것입니다.

이미지파일이 아닌 .xml .pdf 등은 알아서 제외하니 신경 안쓰셔도 됩니다.

 

폴더를 열어서 파일을 다 확인했는데, 전부 jpg 파일뿐이어서 다른 것이 문제인 줄 알았는데 ....

알고보니 분명 .jpg라고 저장은 되어 있는데 다른 확장자로 읽히는? 파일이 있던 것이 원인이었습니다.

 

아래의 글을 참고하여 해결하였습니다.

python - Unknown image file format. One of JPEG, PNG, GIF, BMP required - Stack Overflow

 

Unknown image file format. One of JPEG, PNG, GIF, BMP required

I built a simple CNN model and it raised below errors: Epoch 1/10 235/235 [==============================] - ETA: 0s - loss: 540.2643 - accuracy: 0.4358 --------------------------------------------...

stackoverflow.com

 

우선 아래의 코드중에서 data_dir만 본인의 경우에 맞게 고쳐주세요.

 else는 있어도 되고 없어도 됩니다. 그냥 잘되고있는지 확인용으로 넣어놨습니다.

from pathlib import Path
import imghdr

data_dir = "drive/MyDrive/archive/train/mandarine"
image_extensions = [".png", ".jpg"]  # add there all your images file extensions

img_type_accepted_by_tf = ["bmp", "gif", "jpeg", "png"]
for filepath in Path(data_dir).rglob("*"):
    if filepath.suffix.lower() in image_extensions:
        img_type = imghdr.what(filepath)
        if img_type is None:
            print(f"{filepath} is not an image")
        elif img_type not in img_type_accepted_by_tf:
            print(f"{filepath} is a {img_type}, not accepted by TensorFlow")
        else:print(f"{filepath} is a {img_type}, accepted!")

 

실행을 한 결과입니다. 분명 바나나1.jpg인데 여기서는 .webp으로 인식하나봅니다. 

 

저런 파일들을 찾아서 다 삭제해주면 끝입니다. 

728x90