반응형
4주차: 미니 프로젝트 - AI 이미지 분류기 만들기
대망의 마지막 4주차입니다! 이제 우리는 파이썬 기초와 머신러닝의 기본 원리를 이해했습니다. 이번 주에는 이미 수백만 장의 이미지를 학습한 초거대 AI 모델을 가져와, 우리가 원하는 이미지가 무엇인지 맞추게 하는 '이미지 분류기'를 직접 만들어 보겠습니다.
1. 프로젝트 목표
- 인터넷에 있는 이미지 주소(URL)를 입력하면, AI가 그 이미지를 보고 무엇에 대한 이미지인지 영어 단어로 알려주는 프로그램을 만듭니다.
2. 필요한 라이브러리 소개 및 설치
이번 프로젝트에는 3개의 새로운 라이브러리가 필요합니다.
transformers: 허깅페이스(Hugging Face)라는 회사에서 만든 라이브러리로, GPT, BERT 등 최신 AI 모델들을 아주 쉽게 사용할 수 있게 해줍니다.torch: 파이토치(PyTorch)는 페이스북(메타)에서 개발한 대표적인 딥러닝 프레임워크입니다.transformers라이브러리를 실행하는 데 필요합니다.Pillow: 파이썬에서 이미지를 다룰 때 사용하는 라이브러리입니다. (PIL)requests: 파이썬으로 웹 사이트의 정보를 쉽게 가져올 수 있게(HTTP 요청) 해주는 라이브러리입니다. 이미지 URL을 통해 실제 이미지 파일을 다운로드할 때 사용합니다.
명령 프롬프트(cmd)를 열고 아래 명령어로 모두 설치합니다.
pip install transformers torch Pillow requests
설치에 다소 시간이 걸릴 수 있습니다.
3. AI 이미지 분류기 코드 작성
아래 코드는 이미지 분류를 위해 미리 학습된 google/vit-base-patch16-224 라는 모델을 transformers 라이브러리의 pipeline 기능을 통해 사용하는 예제입니다. pipeline은 복잡한 AI 모델 사용 과정을 '데이터 입력 -> 결과 출력' 단계로 매우 단순하게 만들어주는 마법 같은 도구입니다.
image_classifier.py 라는 이름으로 파일을 만들고 아래 코드를 저장하세요.
# 1. 필요한 라이브러리들을 가져옵니다.
import requests
from PIL import Image
from transformers import pipeline
# 2. AI 모델 준비하기
# "image-classification" 작업을 수행하는 파이프라인을 생성합니다.
# 모델은 구글이 만든 Vision Transformer (ViT)를 사용합니다.
try:
print("AI 모델을 로딩하고 있습니다. 잠시만 기다려주세요...")
# 처음 실행 시 모델 파일을 다운로드하므로 시간이 걸릴 수 있습니다.
image_classifier = pipeline("image-classification", model="google/vit-base-patch16-224")
print("AI 모델 로딩 완료!")
except Exception as e:
print(f"모델 로딩 중 오류가 발생했습니다: {e}")
print("인터넷 연결을 확인하거나, 라이브러리가 올바르게 설치되었는지 확인해주세요.")
exit() # 프로그램 종료
# 3. 사용자로부터 이미지 주소(URL) 입력받기
image_url = input("분석하고 싶은 이미지의 URL을 입력하세요: ")
# 4. 이미지 열기
# 웹 상의 이미지를 바로 열기 위해 requests로 데이터를 가져온 후, Pillow로 이미지를 엽니다.
try:
# stream=True 옵션으로 이미지 데이터를 바로 메모리에 올리지 않고 스트림 형태로 받습니다.
response = requests.get(image_url, stream=True)
# response.raw 에서 이미지 데이터를 읽어와 Pillow 이미지 객체로 변환합니다.
image = Image.open(response.raw)
print("이미지를 성공적으로 가져왔습니다.")
except Exception as e:
print(f"이미지를 가져오는 데 실패했습니다: {e}")
print("올바른 이미지 주소인지 확인해주세요.")
exit()
# 5. AI 모델로 이미지 분류하기
print("이미지 분석을 시작합니다...")
predictions = image_classifier(image)
# 6. 결과 출력하기
print("\n--- AI 분석 결과 ---")
if predictions:
# AI는 여러 개의 예측 결과를 확률(score)과 함께 보여줍니다.
# 가장 확률이 높은 첫 번째 결과만 보여주겠습니다.
for i, pred in enumerate(predictions):
rank = i + 1
label = pred['label']
score = pred['score'] * 100 # 확률을 퍼센트로 변환
print(f"{rank}위 예측: {label} ({score:.2f}%)")
else:
print("이미지를 분석할 수 없습니다.")
4. 실행 및 테스트
image_classifier.py를 실행합니다.- 모델 로딩이 완료되면 이미지 URL을 입력하라는 메시지가 나옵니다.
- 구글 이미지 검색 등에서 원하는 이미지의 주소를 복사하여 붙여넣고 엔터를 누릅니다.
- 테스트용 URL 예시 (고양이):
https://storage.googleapis.com/pai-images/eab5a753605c4c3898533e46d2f59a35.jpeg - 테스트용 URL 예시 (자동차):
https://img.freepik.com/free-photo/blue-sport-sedan-parked-in-the-yard_114579-5078.jpg
- 테스트용 URL 예시 (고양이):
- AI가 이미지를 분석하고 몇 개의 예측 결과를 확률과 함께 보여주는지 확인합니다.
축하합니다!
여러분은 파이썬 설치부터 시작해서, 이제는 최신 AI 모델을 활용해 이미지를 분석하는 프로그램을 직접 만들 수 있게 되었습니다. 이 미니 프로젝트는 여러분의 AI 개발자로서의 첫 포트폴리오가 될 수 있습니다.
다음 단계는?
- 코드의
predictions부분을for문으로 전부 출력해서 AI가 또 어떤 것들을 예측했는지 살펴보세요. transformers라이브러리의 다른pipeline("text-generation", "summarization" 등)을 찾아보고, 텍스트 생성 AI도 만들어보세요.- 지금까지 배운 내용을 바탕으로 자신만의 새로운 아이디어를 코드로 구현해보세요!
반응형
'백엔드 > 파이썬' 카테고리의 다른 글
| [Python] 3주차: AI를 향한 첫걸음 (0) | 2025.11.21 |
|---|---|
| [Python] 2주차: 프로그래밍의 기본기 다지기 (0) | 2025.11.21 |
| [Python] 1주차: 파이썬과의 첫 만남 (0) | 2025.11.21 |