데이터제작 강의 요약
1강, 2강 - 데이터 제작의 중요성
- software 1.0의 개발과정 - 어떤 연산을 할 지 사람이 고민해 정함
- 문제정의
- 큰 문제를 작은 문제들의 집합으로 분해
- 개별 문제 별로 알고리즘 설계
- 솔루션들을 합쳐 하나의 시스템으로
- 문제점:객체 검출에서 대응하기 어려운 케이스 많았음
- software 2.0의 개발과정 - ai모델의 구조로 프로그램의 검색 범위를 한정하고 데이터와 최적화 방법을 통해 최적의 프로그램을 찾는다.
- 뉴럴넷의 구조에 의해 검색 영역이 정해짐
- 최적화를 통해 사람이 정한 목적에 제일 부합하는 연산의 집합을 찾는다.
- 경로와 목적지는 데이터와 최적화 방법에 의해 정해짐
즉 모델의 성능은 코드 + 데이터이므로 데이터 제작이 중요하다.
AI 모델 개발 과정
- project setup
- Data Preparation
- Model Training
- Deploying
하지만! 데이터 구하기 너무 어렵고 데이터를 얻기 어렵다..
이유: 작업기간 오래 걸리고 좋은 데이터를 많이 모으기 어렵고 라벨링 비용이 큼
좋은데이터: 골고루 일정하게 라벨링된 데이터
하지만 모든 작업자의 일관성 있는 데이터를 얻기가 쉽지 않다..
3강 - OCR Technology and Services
OCR service text detector, text recognizer, serializer, text parser등을 필요로 한다.
OCR을 통해 여러 서비스를 제공할 수 있다.
4강 - Text Detection 소개
- Object detection이 class와 위치를 예측하는 반면 text detection은 위치만 검출하면 된다.
- 글자영역은
- 직사각형
- 직사각형 + 각도
- 사각형(네점)
- 다각형(여러점)
- Regresssion based
- 이미지를 입력받아 글자 영역 표현값들을 바로 출력으로
- Segementatoin based
- 이미지를 입력받아 글자 영역 표현값들에 사용되는 화소단위 정보를 뽑고 후처리를 통해 최종 글자 영역 표현 값들을 확보
- EAST
- 2 staged system
- fast inference & end to end train
- output
- geometry map-어떤 화소가 글자영역이라면 bounding box의 위치는 어디인지
- RBOX형식(회전각도 1 channel, Bounding box 4개 경계선 까지의 거리를 예측 4 channel → 5channel)
- QUAD(8channel, x1, y1, x2, y2 .. x4, y4)
- inference
- training
- loss terms
- 직사각형 iou loss + 각도 cosine loss
5강 - 데이터 소개
데이터를 어디서 구할까? - 기간 예산 목적에 따라 public dataset, created dataset을 사용할 수 있음
kaggle, RRC, Arixv, cvpr, icdar
하지만 각각 데이터셋마다 annotation format이 다름!!!
6강 - Annotation Guide
작업자가 일관되게 할 수 있도록 적절한 가이드라인이 필요하다..
7강 - 성능 평가 개요
성능평가는 학습에 사용되지 않은 데이터가 들어왔을 때 얼마나 잘 동작하는가와 같다.
해당 모델이 서비스로 출시 되었을 때 사람들이 체감하는 품질의 정도가 성능이 되야하며 그를 위해 정량평가도 이와 비슷하게 느껴야 한다.
- DetEval
- IoU
- TioU
- CLEVal
8강 - Annotation 도구 소개
- Labelme
- CVAT
- Hasty Labeling Tools
- UFO
9강 - Advanced Text Detection Models
- DBNet
- MOST
- TextFuseNet
10강 - Bag of Tricks
-
합성데이터
사용법: 합성데이터로 1차학습, train data로 finetuning
-
data augmentation
geometric transformation + style transformation
문제와 데이터에 따라 적합하게 사용할 것!
-
Multi Scale Training & Inference
이미지에서 글자의 크기는 다양하기 때문에 다양한 크기로 이미지를 바꿔가주면서 입력한다.
대회 회고
- 1등 솔루션
- 다른 데이터를 많이 사용함
- pretrained 모델 사용한 후 그 후에 finetuning
- augmentation을 많이 사용하지 않음..
→ 우리는 데이터 검수하는데 시간을 많이 사용했고 결국 검수하는 것 보다 데이터를 많이 모으고 학습시키는 것이 더 좋은 결과를 낳았다. 하지만 우리가 잘못했다고 생각할 순 없다. 우리는 단지 이번 프로젝트에서 양보다 질이 중요하다 생각한 것일 뿐이다.
- 마스터님 피드백
- text detection은 검출만 하는 것임을 알았어야 한다.(프로젝트를 진행할 때 본질이 무엇인지 알아야한다.)
- 대부분의 augmentation은 현업에서 필요없다.
- 재현성은 중요하다. 코드 뿐만 아니라 데이터에서도 버전관리를 해줘야한다.
- 새로운 task에 대해서는 앞선 사람들이 고민한 부분부터 시작해보자. 멘땅에 헤딩은 별로 좋지 않다.
- 대회에서 모델의 크기가 작았기 때문에 무작정 데이터가 많은 것은 좋지 않았다. 사용하고자 하는 모델의 역량이 어떤지 확인해볼 필요가 있다.