반응형
객체 탐지: Hugging Face로 이미지 속 객체를 탐지하기
객체 탐지(Object Detection)는 이미지나 비디오에서 고양이 🐱, 개 🐶, 테이블 📄 등 특정 객체를 식별하고, 해당 객체의 위치를 경계 상자로 표시하는 머신러닝 분야입니다. Hugging Face 라이브러리를 활용하면 이러한 객체 탐지를 쉽고 효율적으로 수행할 수 있습니다. 아래에서 Python으로 단계별로 구현해 보겠습니다.

1단계: 고양이 탐지하기 🐱
우선, Hugging Face의 객체 탐지 파이프라인을 사용해 제공된 이미지 속 고양이를 탐지해 보겠습니다.

from transformers import pipeline
# 객체 탐지 파이프라인 초기화
model = pipeline("object-detection")
# 이미지에서 객체 탐지
result = model("cat.jpg") # 이미지 파일 경로 입력
print(result)
[{'score': 0.6867631077766418,
'label': 'cat',
'box': {'xmin': 62, 'ymin': 33, 'xmax': 3387, 'ymax': 2670}},
{'score': 0.9861677289009094,
'label': 'cat',
'box': {'xmin': 63, 'ymin': 469, 'xmax': 3371, 'ymax': 2673}},
{'score': 0.9965155124664307,
'label': 'person',
'box': {'xmin': 1243, 'ymin': 5, 'xmax': 3993, 'ymax': 2663}}]
출력 결과 설명:
- Score(점수): 모델의 예측 신뢰도(예: 98.6%).
- Label(라벨): 탐지된 객체의 클래스(예: "cat").
- Box(박스): 탐지된 객체의 경계 상자 좌표.
2단계: 탐지 결과 시각화하기 🎨
탐지 결과를 기반으로 이미지에 경계 상자를 그려보겠습니다.
from PIL import Image, ImageDraw
from IPython.display import display # Import display
# 이미지 열기
image_path = "cat.jpg" # 이미지 파일 경로
image = Image.open(image_path)
# 경계 상자 그리기
box = result[1]["box"]
draw = ImageDraw.Draw(image)
bounding_box = (box["xmin"], box["ymin"], box["xmax"], box["ymax"])
draw.rectangle(bounding_box, outline="red", width=3)
# 이미지 표시 using display
display(image)
이 코드를 실행하면 탐지된 고양이 객체 주위에 빨간색 경계 상자가 표시된 이미지를 확인할 수 있습니다.

3단계: DETR로 고급 객체 탐지 🚀
이번에는 DETR(Detection Transformer) 모델을 사용해 보다 정밀한 객체 탐지를 수행해 보겠습니다.
from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image
# 이미지 열기
image = Image.open("cat.jpg")
# 프로세서와 모델 초기화
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
# 이미지 전처리
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
# 출력 후처리
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
# 탐지 결과 출력
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
box = [round(i, 2) for i in box.tolist()]
print(
f"{model.config.id2label[label.item()]} 탐지됨, 신뢰도: "
f"{round(score.item(), 3)}, 위치: {box}"
)
4단계: 이미지 내 여러 객체 시각화 📸
탐지된 모든 객체에 경계 상자와 라벨을 표시해 보겠습니다.
from PIL import ImageDraw
# 경계 상자와 라벨 그리기
draw = ImageDraw.Draw(image)
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
box = [round(i, 2) for i in box.tolist()]
draw.rectangle(box, outline="red", width=2)
draw.text((box[0], box[1] - 10), f"{model.config.id2label[label.item()]} {round(score.item(), 3)}", fill="red")
# 이미지 표시
display(image)
탐지된 모든 객체와 그 신뢰도를 시각적으로 확인할 수 있습니다.

결론
Hugging Face는 고양이 🐱와 같은 단순한 객체 탐지부터 PDF에서 테이블 📄을 추출하는 고급 작업까지 다양한 객체 탐지 도구를 제공합니다. 간단한 작업에서부터 복잡한 응용 프로그램에 이르기까지, 이러한 모델은 시각 데이터를 처리하는 데 있어 효율적이고 정확한 방법을 제공합니다.
코드 예제를 따라 실행해 보고 객체 탐지의 가능성을 직접 경험해 보세요! 🚀✨
반응형
'AI 공부 > LLM' 카테고리의 다른 글
딥시크 사용법 DeepSeek R-1, 로컬 설치와 활용법 🌟 당신만의 AI 비서 만들기! (8) | 2025.01.28 |
---|---|
[AI 에이전트] 👩💻 LangGraph Studio: 에이전트 개발을 위한 첫 번째 IDE 💡 (2) | 2025.01.17 |
🤗 🎉 Hugging Face로 질문 답변 시스템(QA 시스템) 만들기! 🤔💡 (1) | 2025.01.01 |
🤗 허깅페이스 시작하기: 쉽게 따라하는 가이드 (1) | 2024.12.30 |
🤗 허깅페이스의 핵심 구성 요소와 주요 기능 (1) | 2024.12.30 |