Public dataset
라벨링된 실제 이미지를 손쉽게 확보 가능
원하는 데이터가 없을 수 있다. (이미지 도메인, 라벨링 방식 등)
보통 수량이 작다. (많아야 몇 천장 수준)
Created dataset
Synthetic Image
라벨링 작업이 필요 없다
원하는 데이터를 빠르게 확보 가능
실제 데이터와 얼마나 다른 지 확인 필요
Real Image
Crawled Image
빠르게 이미지를 모을 수 있다
고화질 이미지가 많지 않다
다양한 샘플을 모으기 힘들다
라이센스에 신경 써야 한다
Crowd-sourced Image
비용이 크고 오래 걸린다
원하는 고품질 데이터를 모을 수 있다
서비스향 AI 모델 개발 시 한시라도 빨리 답을 가지고 있어야 하는 질문들
1. 몇 장을 학습을 시키면 어느 정도 성능이 나오는가?
2. 어떤 경우가 일반적이고 어떤 경우가 희귀 케이스인가?
3. 현재 최신 모델의 한계는 무엇인가?
공개되어 있는 데이터셋으로
공개되어 있는 최신 모델을
학습시켜 성능을 분석한다
데이터 검색 방법
OCR 데이터에 포함되는 것들
2년에 한번씩 열리는 OCR 대회
ICDAR (International Conference on Document Analysis and Recognition)
Incidental Scene Text: 풍경 이미지 속에 우연히 글자가 잡힌 경우
총 1500장의 이미지와 그에 해당하는 ground truth
(GT) text file
train 1000장, test 500장
care, don’t care로 구분하여 전사
care: 검출할 영역. 라틴문자
don’t care: 검출하지 않을 영역. 육안상 알아보기 힘든 글자, 라틴문자가 아닌 글자 (한자 등)
Multi-lingual Scene Text (MLT)
• Multilingual
• 9가지 언어: Chinese, Japanese, Korean, English, French, Arabic, Italian, German and Indian
• 6가지 문자: "Arabic", "Latin", "Chinese", "Japanese", "Korean", "Bangla" + “symbols”, “mixed”
• 총 18000장
• Train 9000 (각 언어별 1000장), test 9000
• Focused (Intentional) Scene Text
• 우연히 찍힌 글자가 아닌, 글자 영역을 위주로 촬영된 이미지
• 길거리 표지판, 광고판, 가게 간판, 지나가는 자동차 및 웹 microblog에 올라간 유저 사진 등
• gt파일 형식은 ICDAR 2015와 유사
ICDAR 2019 ArT (Arbitrary shaped Text)
• 기존에 존재하던 Total-Text,
SCUT-CTW1500, Baidu Curved
Scene Text 에 추가로 데이터를
수집 (3055장 + 7011장)
• train: 5603장 , test: 4563장
• horizontal, multi-oriented,
curved 등 다양한 형태 포함
각각의 public data마다 annotation format이 다르기때문에 일관된 방식으로 저장해야함
• 각각의 Public Dataset의 파일 형식(json, txt, xml, csv 등)을 하나로 통합함
• Detector, Recognizer, Parser 등 서로 다른 모듈에서 모두 쉽게 사용할 수 있어야 함
• 모델 개선을 위해 필요한 case에 대한 정보를 데이터에 포함 시킬 수 있음
• 예: 이미지 단위의 특징 (손글씨, blur 등), 글자 영역 단위의 특징 (가려짐, 글자 진행 방향 등)
json 파일 안에서 element 탐색이 쉽게 Graph Structure을 기반으로 만들어졌음
• 하나의 이미지 내의 정보는 모두 parallel하게 존재함
Dataset 레벨
한 데이터셋 내의 모든 이미지들에 관해 하나의 ufo 형식의 Json파일을 만든다
Image 레벨
이미지 별로 아래와 같은 정보가 담겨있다.
• paragraphs
• words
• characters
• image width
• image height
• image tag
• annotation log
• license tag
각각의 정보는 위계를 가지지 않고, parallel하게 존재한다
paragrphs, words, characters의 공통요소
• Ids: paragraph, image, character 레벨 각각에서 모두 id 넘버를 매김 (순서는 의미 없음)
• points: 각 라벨의 위치 좌표. 글자를 읽는 방향의 왼쪽 위에서부터 시계방향으로 x, y좌표를
nested list 형태로 기록함
• 4points의 bbox가 기본적이나, 6, 8 등 2n 개의 points로 이루어진 polygon도 가능하다.
• [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
• language: 사용된 언어
• “en”, “ko", “others”, [“en”, “ko”] …
• tags: 성능에 영향을 주지만 별도로 기록하기 애매한 요소를 사전에 정의한 태그로 표시
• 이미지 레벨의 image tag, 단어 레벨의 word tag
• confidence: ocr 모델이 예측한 pseudo-label의 경우 confidence score를 함께 표시
Annotation log, License Tag
Annotation log: 이슈 추적을 위한 정보 기록
License tag: 라이센스 정보
public 150장 + private 150장
데이터 source:
• 네이버 및 구글에서 크롤링된 데이터 (크롤링 키워드: 간판, 광고판, 손글씨, 화환, 버스노선도 등)
• 상업적 활용 가능한 license
데이터 annotation 방식:
• Ufo포맷 사용
• Image, word 레벨 정보만 태깅되어 있음
데이터 EDA
OCR 관점에서 유용하다고 보는 것들
Tips
• detector 학습을 위한 영어 및 한국어 public dataset이 많이 있으니 이를 잘 활용하는 것이 좋다.
• 학습 목적에 맞는 데이터를 잘 선택하여 학습시키면 좋다.
• 다양한 형태의 데이터셋을 통합하기 위해 UFO처럼 하나의 통일된 포맷을 만드는 것이 실험에
편리하다.
성능평가 == 새로운 (학습에서 사용되지 않은 ) 데이터가 들어왔을 때 얼마나 잘 동작하는가
validation set을 통해 서비스 출시 전 성능 평가
Confusion Matrix, Recall, Precision 을 통해 추가 분석
1단계: 테스트 이미지에 대해, 결과값을 뽑습니다
2단계: 예측 결과와 정답 간 매칭/스코어링 과정을 거쳐 평가합니다
IoU (Intersection of Union)
Area Recall / Area Precision
One-to-One | One-to-Many | Many-to-One Match
1. 모든 정답 영역, 예측 영역 간의 매칭 정도를
area recall/area precision 둘 다 계산한다.
즉 관계 하나마다 두 개의 수치 확보
2. 셀 중에 area recall >= 0.8 and area
precision >= 0.4 조건을 충족시키면 1
아니면 0으로 값으로 관계 행렬 값을 바꿈
3. 최종 스코어 계산
• one-to-one matching 만 허용
• one-to-one matching이 성립 and IoU value > 0.5 일 경우 correct, 그렇지 않은 경우
incorrect
IOU가 0.5보다 크더라도 one-to-many 의 관계이므로 IOU는 0이 됨
• 부족하거나 초과된 영역 크기 에 비례하여 IoU 점수에 대해 penalty를 부여.
• GT의 completeness, 예측 박스의 타이트함을 점수에 반영.
• Ground truth 가 golden answer이라는 가정이 존재
TIOU = IOU X Penalty
예측 영역이 정답보다 부족한 경우 Penalty
부족한 영역 크기 / 정답 크기
정답 영역 기준이므로 TIOU Recall
예측 영역이 정답보다 초과한 경우 Penalty
초과된 영역 크기 / 예측 영역 크기
예측 영역 기준이므로 TIOU Precision
한계점
얼마나 많은 글자(Character)를 맞추고 틀렸느냐를 가지고 평가.
Detection 뿐 아니라 end-to-end, recognition 에 대해서도 평가 가능
글자 검출 모델 평가는 글자가 아닌 평가를 기반으로 해야한다는 결론에 이름
PCC (Pseudo Character Centers)
글자 영역을 글자수만큼 나누고 영역을 만들고 각 영역별 center위치를 구함
Matching Matrix
*TIoU 에서 many-to-one, one-to-many match를 허용하기 위해선 별도로 line annotation이 필요
연구나 교육 목적으로 다루는 데이터는 굉장히 많은 노력을 거쳐서 나온 결과물
annotation tool은 데이터 정제 단계에서 수행
잘 작성된 아벨링 가이드
일관된, 효율성있는, 숙지된 사람들
프로세스
효율성 좋은 tool(자동화, 부가기능, 게시판을 통한 커뮤니케이션 기능)
MIT CSAIL (Computer Science Artificial
Intelligence Laboratory) 에서 공개한
image data annotation 도구를 참고하여
만든 오픈소스
polygon, circle, rectangle, line, point의
annotation 수행 가능
장점
설치하기가 용이하다.
python으로 작성되어있어, 추가적인 기능 추가가 가능하다.
단점
공동작업이 불가능하다. (다수의 사용자가 사용할 수 없다.)
object, image에 대한 속성을 부여할 수 없다
• 앞에서 설명드린 도구와 유사한 CV annotation 도구
• 대신, annotation 도구는 전체 솔루션의 일부이고, 데이
터제작/모델학습/서빙/모니터링까지 전체를 쉽게 할 수
있는 솔루션 제공
• 회원가입을 통해서 사용 가능
• 특정 action을 이용할 때마다 비용 발생
OCR Annotation 을 진행한다고 가정함