본문 바로가기
Python/Computer Vision

[파이썬, Python] 컴퓨터 비전(Computer Vision)의 데이터셋

by coding-choonsik 2023. 9. 4.
728x90
반응형
SMALL

1. 데이터셋(Dataset)

  • 기계 학습 모델을 학습하는데 사용되는 데이터의 모음
  • 데이터셋은 이미지, 오디오, 텍스트, 수치 데이터 등 다양한 데이터형으로 구성
  • 특정 데이터 유형과 데이터셋 크기는 해결되는 문제와 사용 중인 모델 유형에 따라 달라짐

 

1-1. 데이터셋의 크기

  • 모델이 학습 중에 본 예제의 수
  • 작은 데이터셋: 다양한 예제가 포함되지 않아 과적합 발생 가능성이 높음
  • 대규모 데이터셋: 모델이 충분한 수의 예제를 보고 일반화할 수 있음

 

1-2. 데이터의 품질

  • 주석(어노테이션)이 잘못 지정되거나 레이블이 지정된 데이터셋은 모델 성능에 부정적인 영향을 줄 수 있음
  • 다양한 개체 변형의 존재, 조명 조건, 배경 등을 포함한 데이터셋의 다양성도 모델의 견고성을 보장하는데 중요

 

데이터셋은 모든 컴퓨터 비전 프로젝트의 중요한 구성 요소이며 충분한 크기와 품질을 갖춘 올바른 데이터셋을 선택하면 모델 성능에 큰 영향을 미칠 수 있음

 

 


2. 어노테이션(Annotation)

  • 어노테이션(주석)은 데이터 집합의 데이터에 정보 또는 레이블을 추가하는 프로세스
  • 컴퓨터 비전에서 예를들어 이미지에서 특정 개체의 존재, 개체의 속성(색상, 크기, 모양)을 나타내는 레이블이 포함
  • 수동으로 추가하거나 컴퓨터 알고리즘을 사용하여 자동으로 생성

 

 

2-1. 어노테이션의 종류

  • Bounding Box
    • 이미지 내에서 개체의 위치 및 크기를 정의하는 작업
    • 객체 주위에 box를 그리고 클래스(사람 또는 자동차)로 label을 지정
    • Object Detection에 일반적으로 사용
    • 이미지 내에서 객체의 위치를 정의하는 간단하고 효과적인 방법
  • Keypoint
    • landmark와 같은 개체 내의 특정 관심 지점(ROI)을 표시하는 작업
    • 사람 또는 이미지 내 관절의 위치를 예측하는 것이 목표인 task에 주로 사용
  • Segmentation
    • 이미지 내에서 객체의 경계를 정의
    • 객체의 경계를 표시하고 인식하고 이미지 내의 객체를 분류하도록 훈련
    • 복잡한 형태의 어노테이션이지만 이미지 내의 개체에 대한 더 자세한 정보를 모델에 제공하므로 성능이 향상

 

2-2. 어노테이션의 방법

  • 수동 주석
    • 마우스 또는 스타일러스와 같은 도구를 사용하여 이미지 내의 각 개체에 수동으로 레이블을 지정하는 작업
    • 가장 시간이 많이 걸리지만 최고 수준의 제어와 정확성을 제공
  • 반자동 주석
    • 컴퓨터 지원 도구를 사용하여 주석 프로세스의 속도를 높이는 작업
    • 어노테이터는 도구를 사용하여 개체 주위에 경계 상자를 그릴 수 있으며, 컴퓨터는 자동으로 개체에 해당 클래스로 레이블을 지정
    • 수동 주석보다 빠르지만 정확성을 보장하려면 사람의 입력이 필요
  • 자동 주석
    • 컴퓨터 알고리즘을 사용하여 이미지 내의 개체에 자동으로 레이블을 지정하는 작업
    • 가장 빠르지만 정확도가 낮음
    • 자동 주석은 수작업 비용이 엄청 나는 대규모 데이터셋에 주석을 추가하는데 사용

 

2-3. 어노테이션 툴

 

Data Annotation Tool Analysis – How to Use LabelMe | Awakening Vector

 

awkvect.com

 


3. 데이터셋 포맷

 

3-1. Pascal VOC(Visual Object Classes)

  • http://host.robots.ox.ac.uk/pascal/VOC/
  • 컴퓨터 비전에서 객체 인식 및 분류를 위한 유명한 데이터셋
  • 디지털 카메라, 웹 페이지 및 스캔 이미지를 포함한 다양한 소스에서 가져온 이미지로 구성
  • 사람, 동물, 차량, 일상적인 개체를 비롯한 20개의 다양한 개체를 포함
  • 각 이미지의 개체는 연도별로 어노테이션 종류가 다양하게 존재
  • Pascal VOC 구조
    • Annotations: JPEGImages 폴더 속 원본 이미지와 같은 이름들의 xml파일들이 존재. Object Detection을 위한 정답 데이터
    • ImageSets: 어떤 이미지 그룹을 train, val, test로 사용할 것인지, 특정 클래스가 어떤 이미지에 있는지 등에 대한 정보들을 포함
    • JPEGImages: *.jpg 확장자를 가진 이미지 파일들이 모여있는 폴더
    • SegmentationClass: Sementic Segmentation을 학습하기 위한 label 이미지
      • 하나의 영상에서 어떤 개체의 종류를 파악해주는 task
    • SegmentationObject: Instance Segmentation을 학습하기 위한 label 이미지
      • 하나의 영상에 사람이 50명이 있을 때 각각의 사람을 다 잡아준 다음에 각각 id를 부여하여 구별

 

 

3-2. COCO(Common Object in Context)

  • https://cocodataset.org/#home
  • 컴퓨터 비전을 위한 Microsoft Research에서 만든 대규모 이미지 인식 데이터셋
  • 이미지 및 비디오의 개체를 인식하기 위한 알고리즘을 개발하고 평가할 수 있도록 설계
  • 디지털 카메라, 웹 페이지 및 스캔 이미지를 포함한 다양한 소스에서 수집된 330,000개 이상의 이미지
  • 이미지에서는 사람, 동물, 차량, 일상적인 개체를 비롯한 80개의 다양한 개체 포함
  • 각 개체에는 연도별로 어노테이션 종류가 다양함
  • 어노테이션에는 이미지에 있는 개체간의 특정 및 관계에 대한 정보 포함
  • COCO 구조
    • 학습용 파일, 검증용 파일, 테스트용 파일
    • 설명은 JSON 포맷인 각각(학습용, 검증용, 테스트용) 한 개의 파일로 구성

 

 

3-3. ImageNet

  • https://www.image-net.org/
  • 스탠포드 비전 랩과 프린스턴 대학에서 만듦
  • 디지털 카메라, 웹 페이지 및 스캔 이미지를 비롯한 다양한 소스에서 수집된 1,4000만개 이상의 이미지로 구성
  • 이미지에는 사람, 동물, 차량, 일상적인 개체를 비롯한 다양한 개체 포함
  • 각 이미지에는 1,000개의 개체 범주 집합에서 하나 이상의 클래스 레이블이 주석으로 지정
  • 다른 데이터셋과 다르게 annotation format이 없음
  • Train/val/test 폴더로 클래스를 구분

 

 

 

 

3-4. KITTI(Karlsruhe Institute of Technology and ToyotaTechnological Institute at Chicago)

  • https://www.cvlibs.net/datasets/kitti/
  • 컴퓨터 비전 및 로봇 공학을 위한 데이터셋
  • 움직이는 차량에서 캡처한 이미지 및 비디오에서 객체 인식 및 감지를 위한 알고리즘의 개발 및 평가를 위한 실제 데이터를 제공하기 위해 만들어짐
  • 움직이는 차량에서 캡처한 7,000개 이상의 이미지와 비디오로 구성
  • 도시 및 농촌 환경, 도로, 건물, 차량, 보행자를 포함한 다양한 개체와 장면을 포함
  • 각 이미지 또는 비디오의 개체에는 경계 상자와 클래스 레이블이 주석으로 추가
  • 각 주석에는 3D 공간에서 개체의 위치와 방향에 대한 정보도 포함

4. 다양한 데이터셋

 

Papers with Code - Machine Learning Datasets

2422 datasets • 104832 papers with code.

paperswithcode.com

 

 

728x90
반응형
LIST