[Perception] Open Dataset

happy_quokka·2024년 1월 6일
0

자율주행 Perception

목록 보기
3/19

0. Intro

  • 딥러닝 분야에서 데이터는 매우 중요하다

MLOps 파이프라인

  • 모델링
    • 데이터 탐색 (EDA)
      : 목적에 맞는 클래스, 데이터 비율, 환경을 확인해야한다
    • 데이터 가공
      : 전처리 과정 (augmentation, noise 제거)
    • 데이터 나누기
      : train, val, test로 골고루 나누어야한다
    • 학습 방법 결정
    • 모델 만들기
    • 모델 검증
  • 운영
    • 대규모 학습
      : 오래 걸리기 때문에 모델 검증을 통해 확인한 모델을 학습한
    • 대규모 배포 준비
    • 배포 / 운영
    • 로깅
    • 모니터링

1. KITTI Dataset

  • 2021년 공개
  • 구하기 힘든 센서들로 취득한 데이터이다
  • KITTI homepage

setup

  • 센서가 차량에 어디에 위치해있는지 알 수 있다
    • 현재 차량의 위치, 다른 object들간의 관게를 알 수 있다
  • 센서들의 좌표계를 확인하는 것이 중요하다
    • LiDAR : x
    • GPS : x
    • Camera : z
    • 이렇게 3가지의 축이 같은 방향을 나타내기 떄문에 이를 일치시켜 주어야한다

Object Detection

  • 2D Object Detection
    • 2D Object Detection과 orientationo을 benchmark하는 데이터 제공
    • 2D bouniing box 사용
    • precision - recall로 성능 확인
  • 3D Object Detection
    • point cloud 데이터(LiDAR가 있어서 가능)도 있다
  • Bird's Eye View

2D Object Detection

  • left, ringt 이미지
  • LiDAR 데이터
  • Calibration 정보
  • 레이블링 데이터
  • 레이블링 format
    • download training labels of object data set을 클릭하여 레이블링 데이터를 받는다
    • download object development kit을 클릭하여 2D object detection과 관련된 정보를 받는다
    • object development kit 파일에서 readme.txt 파일 확인 -> 레이블링 포맷 확인
    • training labels of object data set 파일에서 레이블링 파일 확인

YOLO v3 모델을 사용한다면

  • github 주소
  • train custom data 문서 참고
  • 학습 데이터를 정의해놓은 dataset.yml 파일을 원하는 데이터에 맞게 수정한다
  • YOLO가 읽어들이는 데이터 포맷을 알아야한다
  • bbox의 좌표를 표현할 때 0~1 사이의 값으로 표현되어야한다
  • 데이터 포맷 : class_id, center_x, center_y, width, height

데이터 불러오기 및 label 저장 방법

  • 파일 목록 가져오기()
    : python glob 또는 os 패키지 활용
  • 문자열 분할()
    : 레이블링 데이터 포맷을 함소
  • YOLO 포맷 저장하기()
    : YOLO bbox 표현에 맞게 변환하여 저장

2. BDD

  • BDD homepage
  • 자율주행을 위한 딥러닝 데이터
  • segmentation 데이터로 구성되어 있다
  • 다양한 도시, 다양한 환경(날씨, 시간)에서 보다 현실적인 상황을 담으려고 한다
  • 데이터 설명 : https://doc.bdd100k.com/download.html
  • label이 JSON 파일 형식으로 되어 있다
    • "name" : 이미지 파일명
    • "labels" : bbox 정보
      • "category" : class
      • "box2d" : x1, y1, x2x, y2 좌표

JSON

  • JavaScript Object Notation
  • JavaScript 언어의 자료형을 텍스트로 표현한 포맷

  • 괄호 {}를 기준으로 블록을 분할한다
  • "이름" : 값(숫자), "문자열" 형식으로 지정
  • 괄호 []는 배열을 의미

  • python json 패키지는
    • {} : dictionary 객체로 반환
    • [] : list 객체로 반환

3. Cityscape

  • cityscape homepage
  • 다양한 도시의 도로 semantic segmentation 데이터
  • bbox에는 4개의 point가 필요했다면 다각형은 N개의 point가 필요하다
  • 데이터 구조
    • gtFine : labels
    • leftImg8bit : 이미지
    • 폴더 이름으로 도시를 구분한다
    • 한개의 이미지에 대해 4개의 label 데이터가 있다
  • 파일이 담고 있는 내용
    • color.png
      • 객체를 고유한 color로 표현한 참고용 이미지
      • 차 앞부분의 본넷은 사용하지 않는다
    • instancelds.png
      • 각 객체를 개별적인 아이디로 구분한 이미지
      • 서로 색이 다 다르다
    • labellds.png
      • 각 객체를 동일한 클래스로 구분한 이미지
    • polygons.json : label의 원본 파일
  • JSON 파일 구조

0개의 댓글