이미지 캡셔닝을 테스트해봅니다. AI가 이미지를 보고 그 내용을 설명하는 글(캡션)을 자동으로 만들어주는 기술입니다.

2025. 4. 30  최초작성

테스트 해보려면 Python 개발 환경을 생성하고 CUDA를 사용할 수 있는 Pytorch를 설치하는게 필요합니다. 자세한 내용은 아래 포스트를 참고하세요.

Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu, WSL2)

https://webnautes.com/visual-studio-codewa-minicondareul-sayonghan-python-gaebal-hwangyeong-mandeulgi-windows-ubuntu-wsl2/ 

Ubuntu에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법

https://webnautes.com/ubuntue-cuda-sayonghal-su-issdorog-pytorch-seolcihaneun-bangbeob/ 

Windows에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법

https://webnautes.com/windowse-cuda-sayonghal-su-issdorog-pytorch-seolcihaneun-bangbeob/

추가로 transformers 패키지 설치가 필요합니다.

pip install transformers

다음 이미지에 대해 실행 결과입니다. 

최초 실행시엔 Hugging Face의  BLIP 모델을 다운로드가 진행됩니다.

이미지에 대한 설명을 영어로 적어줍니다.

boy catching a soccer ball in front of a goalie net

DeepL을 사용하여 번역한 결과입니다. 실행결과가 만족스럽군요. 

골키퍼 네트 앞에서 축구 공을 잡는 소년

테스트에 사용한 코드입니다.

from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration

processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large").to("cuda")



img_path = 'test.png'
raw_image = Image.open(img_path).convert('RGB')
inputs = processor(raw_image, return_tensors="pt").to("cuda")
out = model.generate(**inputs)
caption = processor.decode(out[0], skip_special_tokens=True)

print(caption+'\n')