YOLOv8 + Label Studio로 객체감지 모델만들기

곽숭아·2026년 1월 11일

기록일기장📗

목록 보기
2/10
post-thumbnail

최근 코딩 공부를 하다보니 CV(Computer Vision)에 관심이 생겼다.
그래서 오늘 해본건 !
YOLOv8을 사용해 행복한 얼굴(happy_face)객체 감지(Object Detection)방식으로 학습했다.
물론 기본개념 어떤 분류들이있는지 먼저 공부했다.


객체 분류(Object Classification)

: 이미지 전체가 어떤 클래스인지 분류하는 작업

  • 예 : 이 사진은 happy_face 인가? not_happy인가?
  • 결과 : 하나의 라벨만 출력

📌 특징

  • 위치 정보 X
  • 가장 기본적인 CV 태스크

객체 식별(Object Recognition)

: 이미지 속에 어떤 객체가 "존재하는지"를 인식하는 작업, object detection의 개념일부

  • 예 : 사진 안에 사람이 있는가? 얼굴이 있는가?
  • 결과 : 객체 종류 인식(위치는 없음)

📌 분류와 차이

  • 분류는 "전체 이미지"
  • 식별은 "이미지 안에 무엇이 있나"

객체 탐지 & 위치 추정(Object Detection & Object Localization)

: 객체의 종류 + 위치(Bounding Box)를 함께 찾는 작업

  • 예 : 웃는 얼굴이 어디에 있는지
  • 결과 : 클래스 + 박스 좌표

📌 YOLO가 바로 이 작업
📌 이번 프로젝트에서 사용한 방식


객체 분할(Object Segmentation/Instance Segmentation)

: 이미지의 모든 픽셀을 클래스 단위로 분류

  • 예 : 얼굴/배경/머리카락 영역을 픽셀 단위로 구분
  • 결과 : 같은 클래스는 하나의 영역으로 처리

📌 특징

  • 픽셀 단위
  • 같은 객체 여러 개여도 하나로 취급

인스턴스 분할(Instance Segmentation)

: 객체 하나하나를 픽셀 단위로 분리

  • 예 : 얼굴이 3개 있으면 각 얼굴을 개별 마스크로 분리

  • 결과 : 클래스 + 개별 객체 마스크

📌 Semantic Segmentation보다 한 단계 더 정밀
📌 Mask R-CNN, YOLOv8-seg 등 사용


자세 추정(Pose Estimation)

: 사람 또는 객체의 관절·키포인트를 추정하는 작업 ,졸라맨같은거

  • 예 : 눈, 코, 입, 어깨, 팔꿈치 위치 추정
  • 결과 : 스켈레톤 형태의 포인트

📌 운동 분석, 헬스케어, 모션 캡처에 활용


동영상 분석(Video Analysis)

: 연속된 프레임을 분석해 시간적 변화까지 고려

  • 예 : 영상에서 사람 추적, 행동 변화 분석
  • 결과 : 프레임 간 객체 추적/이벤트 탐지

📌 이미지 + 시간 개념 추가


행동 인식(Activity Recognition)

: 사람의 동작이나 행동을 인식하는 작업

  • 예 : 걷기,뛰기,웃기,넘어지기
  • 결과 : 행동 클래스

📌 보안, 헬스케어, 스포츠 분석에 활용


이미지 해상도 개선(Resolution Enhancing)

: 저해상도 이미지를 고해상도로 복원하는 작업

  • 예 : 흐릿한 얼굴을 선명하게 복원

  • 결과 : 픽셀 품질 향상된 이미지

    📌 ESRGAN, Real-ESRGAN 등 사용


📌프로젝트 목표

  • Task : 얼굴 이미지에서 행복한 얼굴 감지

  • Model : YOLOv8(Ultralytics)

  • Labeling Tool : Label Studio

  • 환경 : macOS + 가상환경

  • 데이터 수 : 이미지 20장 (실습/파이프라인 검증용)


✏️YOLO Object Detection 라벨 형식 이해

YOLO는 이미지마다 txt 라벨 파일 1개를 사용한다.

YOLO 라벨 형식

class_id x_center y_ceter width height
  • 좌표는 0~1 사이로 정규화
  • class_id는 0부터 시작
  • 이번 프로젝트에서는 :
0 = happy_face

✏️Label Studio로 라벨링 환경 구성

라벨스튜디오 바로가기

프로젝트 생성

  • Label Studio 실행
  • 새 프로젝트 생성

라벨링 인터페이스(XML)설정
Object Detection (Bounding Box)용 XML을 직접 설정했다.

<View>
  <Image name="image" value="$image"/>
  <RectangleLabels name="label" toName="image">
    <Label value="happy_face"/>
  </RectangleLabels>
</View>

이 설정이 없으면 박스 그리는 도구 자체가 안 뜬다


✏️이미지 Import & 라벨링

  • 이미지 20장 업로드
  • Label 버틍 클릭 -> 라벨링 화면 진입
  • 사각형(Rectangle) 도구로 얼굴 전체에 박스
  • 웃는 얼굴이 없는 이미지는 박스 없이 저장

박스가 없는 이미지도 정상적인 데이터
(negative sample 역할)


✏️라벨링 결과(JSON확인)

Label Studio 내부 annotation 결과 예시 :

"result": [
  {
    "type": "rectanglelabels",
    "value": {
      "x": 15.36,
      "y": 38.23,
      "width": 83.23,
      "height": 46.77,
      "rectanglelabels": ["happy_face"]
    }
  }
]
  • 박스 있음
  • 라벨 있음
  • YOLO 변환 가능

✏️YOLO 형식으로 Export

Label Studio Export 옵션 중에서

선택함.

  • 이미지 + 라벨(txt) 함께 다운로드
  • YOLOv8 학습에 바로 사용 가능

✏️YOLOv8 학습용 폴더 구조

yolo_dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── data.yaml

  • images/val, labels/val 폴더는 비어있어도 반드시 존재해야함.

✏️data.yaml 작성(중요)

path: /Users/admin/yolo_dataset

train: images/train
val: images/val

names:
  0: happy_face

❗ macOS에서는 경로 앞에 '/' 필수


✏️YOLOv8 학습 실행


❗❗중간에 겪은 주요 에러 & 해결❗❗

  1. data.yaml 경로 에러
Dataset 'Users/admin/...' does not exist

->원인 : 절대경로 '/'누락


  1. images/val not found 에러
images not found, missing path images/val
  • 원인 :
    • val 폴더 없음
    • data.yaml의 path와 실제 폴더 불일치
  • 해결 :
mkdir -p images/val labels/val

✏️결과 확인

학습 완료 후 :

  • loss 정상 감소
  • 예측 시 웃는 얼굴에만 박스 생성
  • runs 폴더 생성됨

profile
곽숭아_놀이터

0개의 댓글