최근 코딩 공부를 하다보니 CV(Computer Vision)에 관심이 생겼다.
그래서 오늘 해본건 !
YOLOv8을 사용해 행복한 얼굴(happy_face)을 객체 감지(Object Detection)방식으로 학습했다.
물론 기본개념 어떤 분류들이있는지 먼저 공부했다.
: 이미지 전체가 어떤 클래스인지 분류하는 작업
📌 특징
: 이미지 속에 어떤 객체가 "존재하는지"를 인식하는 작업, object detection의 개념일부
📌 분류와 차이
: 객체의 종류 + 위치(Bounding Box)를 함께 찾는 작업

📌 YOLO가 바로 이 작업
📌 이번 프로젝트에서 사용한 방식
: 이미지의 모든 픽셀을 클래스 단위로 분류
📌 특징
: 객체 하나하나를 픽셀 단위로 분리
예 : 얼굴이 3개 있으면 각 얼굴을 개별 마스크로 분리
결과 : 클래스 + 개별 객체 마스크

📌 Semantic Segmentation보다 한 단계 더 정밀
📌 Mask R-CNN, YOLOv8-seg 등 사용
: 사람 또는 객체의 관절·키포인트를 추정하는 작업 ,졸라맨같은거

📌 운동 분석, 헬스케어, 모션 캡처에 활용
: 연속된 프레임을 분석해 시간적 변화까지 고려

📌 이미지 + 시간 개념 추가
: 사람의 동작이나 행동을 인식하는 작업
📌 보안, 헬스케어, 스포츠 분석에 활용
: 저해상도 이미지를 고해상도로 복원하는 작업
예 : 흐릿한 얼굴을 선명하게 복원
결과 : 픽셀 품질 향상된 이미지
📌 ESRGAN, Real-ESRGAN 등 사용
Task : 얼굴 이미지에서 행복한 얼굴 감지
Model : YOLOv8(Ultralytics)
Labeling Tool : Label Studio
환경 : macOS + 가상환경
데이터 수 : 이미지 20장 (실습/파이프라인 검증용)
YOLO는 이미지마다 txt 라벨 파일 1개를 사용한다.
YOLO 라벨 형식
class_id x_center y_ceter width height
0 = happy_face
프로젝트 생성
라벨링 인터페이스(XML)설정
Object Detection (Bounding Box)용 XML을 직접 설정했다.
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="happy_face"/>
</RectangleLabels>
</View>
이 설정이 없으면 박스 그리는 도구 자체가 안 뜬다
박스가 없는 이미지도 정상적인 데이터
(negative sample 역할)

Label Studio 내부 annotation 결과 예시 :
"result": [
{
"type": "rectanglelabels",
"value": {
"x": 15.36,
"y": 38.23,
"width": 83.23,
"height": 46.77,
"rectanglelabels": ["happy_face"]
}
}
]
Label Studio Export 옵션 중에서
선택함.
yolo_dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── data.yaml
path: /Users/admin/yolo_dataset
train: images/train
val: images/val
names:
0: happy_face
❗ macOS에서는 경로 앞에 '/' 필수

Dataset 'Users/admin/...' does not exist
->원인 : 절대경로 '/'누락
images not found, missing path images/val
mkdir -p images/val labels/val
학습 완료 후 :

