자율주행 자동차 데이터셋 관리 툴 소개

반응형
728x90
반응형
 
 
Introduction

자율주행관련하여 많은 연구들이 진행되고 있죠? 저 또한 자율주행관련하여 연구&개발을 진행하고 있습니다. (과거형이어야 할지는 모르겠지만^^;)
연구 과제를 통해서, 영상 데이터를 수집하고, 연구 목적에 맞춰 논문 읽고 개발을 하다보면, 그동안 수집한 데이터들이 섞여 중복된 데이터도 있고, 데이터에 대한 메타데이터 정보들 또한 사라지거나 잃어버리는 경우가 종종 있었습니다. 그리고 컴퓨터 업을 하시는 분들이라면, 하드디스크에 민감하실텐데, 디스크 날려보신적 있으시나요? 그동안 모아둔 데이터셋을 날려먹어서, 일부 누락 혹은 전체가 날아가게 되었습니다. 소스코드만큼 중요한 문제인데 말이죠. 그렇게 데이터를 복구하는데 몇개월이 걸렸는지 모르겠네요. 데이터도 현 시점으로부터 최대 7년 전 영상도 있어서 이제 지워야하는 데이터가 아닐까 싶기도 하구요. 하지만, 그냥 버리기는 아깝기도 하고 어떻게 할까 고민중에 있습니다. 
 
조금 필요 없는 이야기에 잠시 빠졌는데, 이런저런 고민들과 함께 데이터 셋관리하는 방법에 대해 이야기를 해보고자 합니다. 현재 데이터셋은 구글 스프레드 시트 형태로 정리를 하고 있습니다. 정리 할 때 컬럼들을 적절히 나눠놓아야 이후 데이터를 찾기 쉽고, 분류하기에 좋겠죠? 
 
데이터 컬럼(Column)

  온라인 자료를 찾아봐도 없고, 맘에 드는 자료도 없고 그래서 스스로(?) 필요하다 생각되는 컬럼들을 하나씩 만들어서 추가하기 시작하였습니다. 
그럼 하나씩 이야기 드리도록 하겠습니다. 비밀도 아니니, 이후 연구 하시는 분들께 도움되시길 바라며. 
 
자율주행 자동차 데이터셋 관리를 위한 Column 데이터 
  • 그룹 이름
  • 그룹 번호
  • 데이터 정보
  • 촬영일자
  • 촬영 목적
    • (객체(전체) 검출
    • 자동차 검출
    • 사람 검출
    • Calibration데이터
    • Sampling 데이터
    • Lane 검출
    • 표지판 검출
    • 기타
  • 도로 타입
    • 일반도로
    • 고속도로
    • 시내
    • 주차장
    • 횡단보도
    • 기타
  • Resolution
    • 640 x 480
    • 1280 x 960
    • 1600 x 1200
    • 기타
  • 날씨(Weather)
    • 구름낀(Cloudy)
    • 눈오는(Snowy)
    • 맑은(Sunny)
    • 바람부는(Windy)
    • 밝은(Bright)
    • 비오는(Rainy)
    • 안개가 짙은(foggy)
    • 어두운(dark)
    • 폭풍의(stormy)
  • 지역(region) 1
    • ex) 서울, 대전, 대구, 부산, 찍고(!!)
  • 지역(region) 2
    • 지역 1 내부 교차로 명 혹은 랜드마크 명 (출발, 도착을 알 수 있는 자료)
  • 촬영자
    • 그룹명 혹은 촬영한 사람
  • 파일 확장자(Extension)
    • bmp
    • jpg
    • zip / (보관용 데이터)
  • 카메라 식별번호
    • 참고: 카메라는 1대~N대 정도까지 사용할텐데, 이에 따라 폴더명 지정 / or serial Key로 지정
    • Center
    • Left
    • Right
  • 프레임 수(Frame Count)
    • 촬영한 프레임 수 (Center, left, Right) 가 일부 누락되어 각각 메모
  • 점수(Score)
    • 촬영한 데이터셋에 대해, 사용빈도가 높을 수록 높은 점수 측정 
  • 경로(Path)
    • 데이터셋 (상단에 작성된 이름을 추출하여 최종 폴더명 생성) / 아래 참조
  • 용량(GB/MB/KB)
    • 참고: 데이터 용량 작성
  • 폴더명 형식
    • 각 데이터 촬영자/촬영방식에 따라 내부 폴더 구성이 어떻게 되어있는지 표기(아래참조)
  • 파일명 형식
    • 각 데이터 촬영자/촬영방식에 따라 내부 파일 구성이 어떻게 되어있는지 표기(아래참조)
 
 
이렇게 데이터셋을 구성해두었습니다. 물론 몇몇개는 필요에 따라, 추가 혹은 삭제도 가능하겠죠? 마지막에 파란색으로 표기한 부분은 최근 자료 정리하면서 추가한 부분입니다. 데이터셋을 손수 작업하여 정리하다보니.... 쉽지 않더군요^^;;
 
 

 

 

 
 
폴더 & 파일 정리 예시

 
 
일부 모자이크 처리해두었지만, 상단에 작성 해둔 내용에 따라 폴더 네이밍 구성 후, 정리해두었습니다. 그리고 폴더 구성할 때, 단일 폴더로 구성해두었습니다. 단일 폴더로 구성한 이유는 Windows OS에서 path명 제한이 있기때문인데, 폴더에 폴더를 타고 들어가다보면 한눈에 보기도 힘들뿐더러, path명이 조금씩 길어지게 됩니다. (특수문자 : \\, // 등 ) 그 결과 단일 폴더로 하니 찾기도 더 쉬워졌지요. 그리고 엑셀에서 컬럼(Column)으로 데이터셋 시트에 필터링을 걸어두고 정렬을 수행하게되면, 원하는 데이터셋을 찾아 [그룹명/그룹 내부번호명]만을 이용하여 찾을 수 있습니다. 
 
 
내부 폴더명 & 내부 파일명

  각각의 데이터셋에서 폴더명과 파일명은 각 촬영자/촬영장비 등에 따라 다르게 구성되어있습니다. 현재 보유하고 있는 데이터셋에서 다음과 같이 구성되어있습니다. 
 
내부 폴더명 예시
  • 구성 1
    • [Direct] : 폴더 구성 없이 파일로만 구성
  • 구성 2 (참고: 대소문자다름, 특수문자 포함된 데이터셋이 많음)
    • Center, Left, Right
    • [Center], [Left], [Right]
    • Center_xxx, Left_xxx, Right_xxx
  • 구성 3 (기타 폴더명)
    • rgb
    • input
    • CAM0, CAM1
    • 기타
 
내부 파일명 예시
  • 숫자로만 이루어진 경우
    • 0.jpg~1000.jpg
    • 100001.jpg~100561.jpg
  • 파일명에 Center, Left, Right 구분을 짓기위한 char 추가된 경우
    • L000.jpg ~L190.jpg   (앞에 붙음)
    • 000L.jpg ~190L.jpg   (뒤에 붙음)
  • 파일명에 (Center, Left, Right) 및 시간이 포함된 경우
    • L000_2020_11_24_19_30.jpg ~L190_2020_11_24_19_30.jpg   (앞/뒤에 붙음)
  • 기타 파일명이 앞/뒤로 붙은 경우
    • CAML-0.jpg ~ CAML-1000.jpg
 
그동안 수집한 데이터가 많기도 많고, 하드디스크 뻑(?) 으로 인해 많이 날리기도 하였지만, 정리 후, 파일을 일일이 확인 해보니 상단처럼 구성되어있었습니다. 그리고 파일들을 하나씩 정리를 하다보니, 이제서야 눈에 보이기 시작하였습니다. (물론 연구에 집중하다보니^^;)
 
그래서 이러한 자율주행 자동차 데이터셋을 관리하기위해 툴을 만들기 시작하였습니다. (조금 더 효율적으로 관리하기 위해서...)
 
 

 

 

 
자율주행 자동차 데이터셋 관리 툴 

MFC 기반으로 상단에 설명한 데이터를 정리하여 툴을 만드는데 얼마 안걸렸습니다.  (2일~3일(?) 정도 걸렸는데, 너무 긴가요? ㅠㅠ)
단지, 데이터셋을 하나의 폴더로 정리하고, 3중 백업을 하는데 약 2주 정도 걸렸네요. .
 
일단 스크린샷을 먼저 보도록 할까요? 
 
 
아직은 3대이상 사용한 적이 없다보니툴은 최대 3대 카메라의 데이터셋을 볼 수있도록 구성하였습니다. 
(영상의 크기를 조금 조절한다면, N대까지 수정은 가능합니다. UI모듈만 수정하는 거니까!!)
 
 
그리고 앞서 영상과 같이, 영상 데이터가 없는 경우, 기본이미지를 가시화 하도록 구성해두었습니다. 그렇지 않는 경우 이전 데이터가 계속 가시화되어있기때문에 보기 좋지 않더라구요. 
 
 
자율주행 자동차 데이터셋 관리 툴 기능

먼저 화면에 보이는 것들이 다이긴 한데, 전체 폴더/파일을 상단에 구성한 것을 자동으로 분석하여 불러옵니다. 그리고, 숫자로 된 경우, 보통 C/C++ 등 기반으로 구성된 SW에서는 정렬 문제가 있는데 이부분은 내부 처리 후 불러오기때문에 해결완료하였습니다. 
 
그 외 데이터셋이 이미지로 구성되어있기 때문에 자동으로 Play/Stop 할 수 있는 기능들을 만들어두었습니다.  그리고 필요에 따라 슬라이더를 이용하여 영상을 Skip 할 수 있도록 수정해두었죠. 크게 현재 완료된 부분은 여기 까지 입니다. 향후, 작업부분들은 이미 만들어 놓은 모듈들을 가져다가 붙여넣기만 하면되는 문제라 큰 문제는 안되지만, 성격상 모듈로 깔끔하게 만들지 않으면 일 진행을 안하는 버릇이 있어^^;; 정리 후 작업을 할예정입니다. 
 
 
 
 
 

 

 

 
 
문제점 보완 중인 것들(2020.11.24)

  • 초기화 / 메모리 릭 해제
  • 폴더 내부 이미지 Load할 때, Picture control size를 ratio에 맞춰서 크기 조절
  • 데이터셋 관리 툴의 Size 조절 기능 (전체화면, 축소화면 변환)
  • 데이터셋 A-B 구간 추출/복사/보관
  • 데이터셋 태그(Tag) 기능
  • 툴팁(Tooltip) + 촬영 이미지(Exif) 출력 기능
  • 데이터셋 이미지 Sequence play/stop time 조절 (mlisecond)
  • 데이터셋 이미지 Sequence play할 경우, File List에 반영(현재 파일 위치로 이동)
  • 사용자 Custom 데이터 구성
    • 폴더 내부 구성
    • 파일 내부 구성
 
문제점 보완 및 향후 작업들을 미리 적어두었습니다. 그 외에 몇가지 더 있긴하지만, 공개하기전 까지 비밀(?)에 붙이기로 ^^ 
조금 더 필요한 기능들이 있으시면, 댓글 달아주세요, 기능 추가해보도록 하죠 후후.. 
 
배포와 관련된 부분은 조만간 다시 업로드 하도록 하겠습니다. 상단 내용 중 저장모듈은 꼭 추가해야만 배포가 가능하기 때문에 조금 더 기다려주세요~^^/ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728x90
반응형

댓글

Designed by JB FACTORY