-
TIL 2023.06.29내일배움캠프 2023. 6. 29. 20:40
오늘도 조리로 AI의 버그를 잡았다.
원인은 조리로앱 테스트 코드 작성 중에 발견했다.
def get_temporary_image(temp_file): size = (200, 200) color = (255, 0, 0, 0) image = Image.new("RGBA", size, color) image.save(temp_file, "png") return temp_file
템프 이미지를 생성하기 위해 이런 함수를 작성했는데,
보면 RGBA 형식으로 4 채널의 이미지를 생성한다.
저 이미지를 조리로 AI에 넣으니
RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0
이런 에러가 발생했다.
이는 조리로 AI가 받는 이미지 형식이 3채널 이미진데 4채널 이미지를 넣어줘서 발생한 문제로 보인다.
def get_temporary_image(temp_file): size = (200, 200) color = (255, 0, 0) image = Image.new("RGB", size, color) image.save(temp_file, "png") return temp_file
그래서 이렇게 RGB 3 채널 형식의 이미지로 만들어 주었더니 에러는 발생하지 않았다.
여기서 번뜩하여 사용자들이 조리로 AI 이용에 실패했던 사진들로 테스트를 해봤더니
역시 4 채널이거나 단일채널인 이미지들이었다.
그리하야
# 이미지, 배경, 모델 로드 img = Image.open(instance.image) # 3 채널로 변환 img = img.convert("RGB")
밑에 한 줄을 추가함으로써 이미지를 3 채널로 변환해 주는 작업을 하였고,
실패했던 이미지들 모두 통과가 되었다.
'내일배움캠프' 카테고리의 다른 글
WIL 내일배움캠프 16주차 (0) 2023.06.30 TIL 2023.06.30 (0) 2023.06.30 TIL 2023.06.28 (0) 2023.06.28 TIL 2023.06.27 (0) 2023.06.27 TIL 2023.06.26 (0) 2023.06.26