AttributeError: 'FreeTypeFont' object has no attribute 'getsize'

MOON·2025년 2월 6일

트러블 슈팅

목록 보기
2/3

배경 및 문제점

Object Detection API를 이용한 모델 생성 과정 중 평가 과정에서 제목과 같은 에러가 발생했다. 러닝 중인 파일명은 model_main_tf2.py이다.
(dir> ~\Tensorflow\models\research\object_detection\model_main_tf2.py )

AttributeError: 'FreeTypeFont' object has no attribute 'getsize'
FreeTypeFont라는 객체는 getsize라는 함수를 갖지 않는다고 한다.

에러 발생 위치를 살펴 봤을 때, visualization_utils.py에서 문제가 발생된 것으로 보였다.
(dir> ~\파이썬__가상환경\sitepackages\object_detection\utils\visualization_utils.py)


트러블 슈팅

visualization_utils.py는 TensorFlow Object Detection API의 일부로 제공되는 파일이다. 기존에 해당 API를 설치 및 세팅했기 때문에 존재하는 파일이다.

파일의 코드 내용을 보면 getsize라는 함수는 PIL의 ImageFont 모듈을 통해 사용된다. PIL은 visualization_utils.py 파일을 활용하여 이미지 위에 바운딩 박스를 그리거나 텍스트를 표시하는 등의 작업을 처리하는 데 사용된다.
다만 PIL은 Python 3에서는 지원이 되지 않으므로 PIL을 포크하여 업그레이드 시킨 버전인 Pillow를 설치해야 하는데, 링크에 따르면 Pillow의 버전에 따라서도 getsize 함수의 지원 여부가 다르다고 하다.

나는 가장 최신 버전인 Pillow v11.1을 사용하고 있었는데, v9.5.0 이하에서만 getsize를 지원한다고 한다.
결국 또 버전 호환성 문제다.


해결

pip install Pillow==9.5.0

버전을 다운그레이드 해주니 정상적으로 model_main_tf2.py 파일이 실행되고 평가 과정이 진행되었다.

*참고로 파이썬 버전과 Pillow 버전 호환성도 고려해야 한다.


참조

https://github.com/tensorflow/models/issues/11040

profile
현직 AI 개발자 | 게임을 좋아합니다.

0개의 댓글