프로젝트 방향 설정 및 데이터셋 선정

조훈·2025년 6월 6일

프로젝트 방향 설정


1. 목표 구체화

  • 프로젝트의 큰 주제는 주차 공간탐색 프로그램을 개발하는 것
  • 우리 팀의 결과물은 주차공간 탐색 및 분류 + 객체 인식 하는 프로그램
    • 영상으로부터 주차공간(영역)과 여러 장애물(객체)을 인식하고 분류
    • 주차공간 : 상태에 따라 4가지로 분류 (Empty, Caution, Reserved, Blocked) 및 갯수 표시
    • 장애물 : 학습된 Class에 따라 이름을 붙이고 갯수 표시

2. 데이터셋 선정

  • 마트 30.4% / 병원 22.9% / 사무실 23.2% / 기타 23.6% 로 구성된 실내외 주차장의 이미지 데이터
  • 29개 Class의 Segmentation Labeled Data

AIHUB 실내 자율주차용 데이터셋


3. 학습 프레임

  • 실시간성 + 정확도를 고려하여 가장 범용성이 높은 YOLOv8-seg 모델 선정

a ) YOLOv8-seg란?

  • YOLOv8-seg는 Ultralytics에서 공개한 YOLOv8 모델의 instance segmentation 버전
  • 기존 YOLO 시리즈가 bounding box 중심의 객체 검출에 초점을 맞췄다면,
    YOLOv8-seg는 객체의 정확한 외곽(mask)까지 예측할 수 있는 기능이 추가됨.

YOLO + segmentation 기능이 결합된 버전


b ) YOLOv8-seg의 구조

  • Backbone

    • 이미지에서 특징을 추출하는 CNN 기반 네트워크
    • YOLOv8에서는 CSP 구조가 아닌, 더 경량화되고 효율적인 설계를 도입
  • Neck (Feature Aggregation)

    • 다양한 크기의 feature map을 병합하여 객체 크기 다양성에 대응
    • PAN 구조나 FPN 구조와 유사한 feature fusion 방식을 사용
  • Head

    • 객체 검출을 위한 bounding box와 class를 예측
    • segmentation을 위한 mask feature map도 함께 출력

c ) 출력 형식

  • class: 예측된 객체의 클래스
  • box: 객체의 bounding box 좌표
  • mask: 객체의 pixel-level mask (binary 형태)

즉, YOLOv8-seg는 이미지 속 각 객체의 정확한 영역까지 예측할 수 있어서
보다 정밀한 분석이 필요한 분야(예: 의료 영상, 자율주행, 주차공간 탐색 등)에도 적용 가능


< YOLOv8-seg_Dataset >

├── images/
│   ├── train/
│   │   ├── xxx.jpg
│   └── val/
│       └── yyy.jpg
├── labels/
│   ├── train/
│   │   ├── xxx.txt
│   └── val/
│       └── yyy.txt
└── data.yaml

< Label.txt >

<class_id> <x_center> <y_center> <width> <height> <x1> <y1> <x2> <y2> ... <xn> <yn>

< data.yaml >

path: YOLOv8-seg_Dataset/
train: images/train/
val: images/val/                                     
nc: 29  # 클래스 수
names:
  0: Undefined Stuff
  1: Wall
  2: Driving Area
  3: Non Driving Area
  4: Parking Line
  5: Parking Area
  6: No Parking Area
  7: Big Notice
  8: Pillar
  9: Parking Area Number
 10: Disabled Icon
 11: Women Icon
 12: Compact Car Icon
 13: Speed Bump
 14: Parking Block
 15: Billboard
 16: Toll Bar
 17: Sign
 18: No Parking Sign
 19: Traffic Cone
 20: Fire Extinguisher
 21: Undefined Object
 22: Two-wheeled Vehicle
 23: Vehicle
 24: Wheelchair
 25: Stroller
 26: Shopping Cart
 27: Animal
 28: Human

4. 데이터 전처리 계획

  • Camera / Lidar 중 Camera만 Image Data로 사용
  • Image는 있지만 Label은 없는 (혹은 반대인) 데이터 제거
  • 팀원 4명이서 각 카테고리( 병원, 마트, 사무실, 기타 ) 데이터의 Annotation.json 파일로부터
    YOLOv8-seg 학습 포맷의 Label.txt 변환 후 병합
  • 학습 Class : 29개 -> 13개 로 축소 ( 중요도에 따라 선별 )
  • 용량 이슈로 인해 validation 제외, train 데이터만 다운받아 9:1로 분할하여 train/val 데이터로 사용
  • 이미지 데이터를 4프레임 당 1개로 선별 : 0.5초 간격으로 촬영한 이미지이기 때문에 프레임간 큰 차이가 없어 프레임 제한을 두기로 함 -> 2초에 한번 촬영한 이미지

0개의 댓글