본문 바로가기

Data Science/ML & DL

데이터 수집과 라벨링 | Open Dataset + 데이터 수집 방법

데이터수집과 라벨링

Custom dataset : 해결하려는 문제를 위해 학습시킬 데이터

1) Open Dataset(공개 데이터셋) 이용

2) 인터넷 상의 데이터를 크롤링을 이용해 수집

3) 다양한 기기(CCTV, 다양한 IoT기기 등) 으로부터 수집

 

Labling 작업 : 수집한 이미지에 Label(정답)을 붙이는 작업

문제 영역에 따라 Labeling 대상이 달라지며 데이터셋에 따라 다양한 format을 사용한다.

  - object detection, segmentation,


주요 Image Open dataset

▪️ Open Dataset
- 많은 국가기관, 기업, 연구소, 개인들이 머신러닝 학습을 위해 수집후 공개한 데이터셋
    - 이미지, 자연어 등 다양한 분야에 다양한 데이터셋이 공개되어 있다.
    - 공개데이터셋은 데이터와 labeling 파일을 같이 제공한다.
- Image dataset의 경우 2009년 ImageNet 데이터셋 이후 다양한 단체들(연구소, 기업)에서 classification, Object Detection, segmentation, pose estimation 등 다양한 컴퓨터 비전 문제에 활용할 수 있는 Image Dataset을 제공하고 있다.

 

  PASCAL VOC dataset과 MS-COCO Dataset은 모델 성능 증명 dataset으로 자주 사용된다.

1. PASCAL VOC(Visual Object Classes)

- 2005년에서 2012년까지 열렸던 VOC challenges 대회에서 사용한 데이터셋으로 각 대회별 데이터셋을 Open Dataset으로 제공한다.
    - 이 중 2007년도와 2012년도 이미지가 많이 쓰인다.
 
- VOC 2007: Train/Validation/Test를 위한 총 9,963개 이미지를 제공하고 이미지 내의 22,640 물체에 대한 annotate 를 제공한다.
- VOC 2012: Train/Validation/Test를 위한 총 11,530개 이미지를 제공하고 이미지 내의 27,450 물체에대한 annotate와 6,929개의 segmentation 을 제공한다.
- Annotation 파일은 xml 포멧으로 제공
▪️PASCAL VOC의 Category들 - 4개 그룹의 20개 Category로 구성
1. Person: person
2. Animal: bird, cat, cow, dog, horse, sheep
3. Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train
4. Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor
 
 

2 .MS-COCO Dataset

- COCO (Common Objects in Context) Dataset은 object detection, segmentation, keypoint detection 등을 위한 데이터셋으로 고해상도의 33만장의 이미지와 20만개 이상의 Label을 제공한다.
- 연도별로 데이터 셋을 제공한다.
- 데이터셋을 불러오고 사용하는 것을 도와주는 pycocotools 라이브러리를 제공한다.
▪️총 80개의 category의 class 제공.

cat + cake class

 

3. 그 외 Datasets

▪️Open Image Dataset
    - 구글에서 공개하는 Image Data로 현존 최대 규모 범용 이미지 데이터이다.
      V5 기준 600개 category에 약 9천만장의 데이터셋을 제공.

▪️KITTI
    - 차 주행관련 데이터셋을 제공
    - http://www.cvlibs.net/datasets/kitti/

▪️
AIHub
    - 과학기술정보통신부와 한국정보화진흥원(NIA)에 주관
    - 이미지, 텍스트, 법률, 농업, 영상, 음성 등 다양한 분야의 딥러닝 학습에 필요한 데이터를 수집 구축하고 이를 AI-Hub 를 통해 공개
    - 딥러닝 학습용 이미지이므로 수십 기가에 달하는 큰 데이터셋 제공

- 이외에도 다양한 단체(기업, 연구소)들에서 데이터셋을 제공한다.

 

 

 

이미지 수집  방법

1. google 이미지 수집 라이브러리

▪️Simple Image Douwnload 라이브러리
- https://github.com/RiddlerQ/simple_image_download
- 다운받고 싶은 이미지 keyword들을 받아서 google images 에서 검색해서 다운로드해 주는 라이브러리.
 
▪️ pip 설치
    - `pip install simple-image-download==0.4`

 

예제

- simp.simple_image_download().download("키워드", 개수) 
- simple_images/keyword 디렉토리에 저장

from simple_image_download import simple_image_download as simp

simp.simple_image_download().download("cat", 10) #keyword, 개수

## 아이콘 3장 + 고양이 사진 7장 다운로드됨.

 

여러 키워드 

keyword_list = ['bear', 'tiger', 'apple']
for k in keyword_list :
    simp.simple_image_download().download(k, 20)

 

2. 크롬브라우저 확장

▪️Image Downloader

 

 

영상 제공 사이트 (무료)

▪️다음 사이트들은 영상에 저작권 없이 무료로 다운 받아 사용할 수 있는 사이트들

 

 

Labeling 과 Annotation 파일 생성

 

Annotation파일

- 입력데이터에 대한 정답과 정보를 제공하는 파일
- Image Dataset의 경우 각 

  이미지파일의 위치(path), 크기, bounding box의 좌표, segmentation 좌표, class name 등 들을 제공한다.

 

- Annotation 파일에는 여러개의 정보들을 묶어서 제공하기 위해 다양한 format을 사용
- Open Dataset마다 작성 format이 다른데 JSON, XML, CSV 등의 형식을 사용

 

 

Annotation tool

1) labelme
    - object detection을 위한 사각형 형태, segementation을 위한 다각형 형태등 다양한 형태의 bounding box
    - 설치
        `pip install labelme`
    - 실행
         `labelme`

 

 

Labelme2Yolo 라이브러리를 이용한 annotation 형식 

     - json 형식으로 변환하기때문에 yolo 형식으로 변환해주는 api
        - 설치
            - `pip install labelme2yolo`
        - 실행
            - `python labelme2yolo.py --json_dir Labelme_json파일_경로`
        - 선택 파라미터
                1) val_size: validation 데이터셋 크기. ex) --val_size 0.2
                2) test_size: test 데이터셋 크기. ex)--test_size 0.2
            - 처리결과 저장:  json_dir아래 > YOLODataset 디렉토리 아래
               ex) labelme2yolo --json_dir c:\dataset --val_size 0.1 --test_size 0.1

2) Labelimg
: object detection 사각형 형태의 bouding box을 지원

Annotation 형식 :Pascal VOC, YOLO, CreateML 세가지 종류
        - 설치
            -`pip install labelimg`
        - 실행
            - `labelimg`

 

3) Roboflow
    - 온라인 기반 annotation tool 제공
    - 공동 작업을 지원
    - 다양한 format의 annotation방식을 지원한다.
    - 무료 계정은 작업한 내용을 공개해야 한다.

      roboflow universe를 통해 많은 사람들이 작업한 프로젝트를 다운받을 수 있다.