바운딩 박스

PyTorch로 배우는 이미지 딥러닝

Michal Oleszak

Machine Learning Engineer

객체 인식이란?

객체 인식은 이미지에서 객체를 식별합니다:

  • 각 객체의 위치(바운딩 박스)

  • 각 객체의 클래스 레이블

활용: 감시, 의료 진단, 교통 관리, 스포츠 분석

  • 이번 영상: 바운딩 박스로 주석 달기
  • 다음 영상: 평가와 모델

 

주행 차량 탐지

PyTorch로 배우는 이미지 딥러닝

바운딩 박스 표현

  • 객체의 공간적 위치를 나타내는 직사각형 박스
  • 학습 데이터 주석 및 모델 출력
  • 정답(ground truth) 바운딩 박스: 정확한 객체 위치

바운딩 박스 좌표

PyTorch로 배우는 이미지 딥러닝

바운딩 박스 표현

  • 객체의 공간적 위치를 나타내는 직사각형 박스
  • 학습 데이터 주석 및 모델 출력
  • 정답(ground truth) 바운딩 박스: 정확한 객체 위치
  • 바운딩 박스 좌표:
    • 왼쪽 위, 오른쪽 아래
    • 바운딩 박스 = (x1, y1, x2, y2)
    • x1 = x_min, x2 = x_max, ...

바운딩 박스 좌표

PyTorch로 배우는 이미지 딥러닝

픽셀과 좌표

박스 좌표

  • 좌표: x - 열 번호, y - 행 번호
  • 원점: (0, 0) - 왼쪽 위 모서리
PyTorch로 배우는 이미지 딥러닝

픽셀을 텐서로 변환

ToTensor()로 변환

  • 텐서 타입:
    • torch.float
  • 스케일된 텐서 범위:
    • [0.0, 1.0]
import torchvision.transforms as transforms

transform = transforms.Compose([ transforms.Resize(224), transforms.ToTensor() ]) image_tensor = transform(image)

PILToTensor()로 변환

  • 텐서 타입:
    • torch.uint8 (8비트 정수)
  • 비스케일 텐서 범위:
    • [0, 255]
import torchvision.transforms as transforms
transform = transforms.Compose([
            transforms.Resize(224),
            transforms.PILToTensor()
            ])
image_tensor = transform(image)
PyTorch로 배우는 이미지 딥러닝

바운딩 박스 그리기

from torchvision.utils import draw_bounding_boxes


bbox = torch.tensor([x_min, y_min, x_max, y_max]) bbox = bbox.unsqueeze(0)
bbox_image = draw_bounding_boxes( image_tensor, bbox, width=3, colors="red" )
transform = transforms.Compose([ transforms.ToPILImage() ]) pil_image = transform(bbox_image) import matplotlib.pyplot as plt plt.imshow(pil_image)
  • draw_bounding_boxes 임포트
  • 좌표를 텐서로 모으기
  • 2차원으로 unsqueeze
  • 이미지로 변환 후 출력

박스가 있는 고양이

PyTorch로 배우는 이미지 딥러닝

연습해 봅시다!

PyTorch로 배우는 이미지 딥러닝

Preparing Video For Download...