공부/Deep Learning : 네부캠 AI Tech

부스트캠프 12,13주차 #2 - OCR 성능평가, 데이터셋 제작

도리언 옐로우 2024. 1. 24. 15:53

 

 

1. 서

Data Centric 대회에 관한 두번째 정리이다. 이번 대회는 데이터 중심 대회라는 특성상 친숙한 용어들과 실무에 가까운 내용들의 비중이 높다고 느끼고 있다. 지금 배우고 있는 것들이 이번 대회에서 바로 사용할 수 있는 하나의 큰 무기가 될 수 있도록 차곡차곡 정리해보려고 한다. 

 

2. 학습내용 리뷰 - Text Detection 성능평가, 데이터셋 제작

(1) Text Detection 성능평가

1) 개요

 

AI모델을 제작했다면 당연하게도 해당 모델이 얼마나 잘 동작하는지 평가해야 한다. 그리고 이 평가 방식을 정하거나 만드는 작업은 쉽지 않을 것으로 생각된다. 성능평가의 본질은 학습에서 사용되지 않은 새로운 데이터가 들어왔을때 모델이 얼마나 잘 동작하는 가를 나타내는 지표이다. Image Classification이나 Object Detection에서는 각각의 task에 맞는 성능평가 방식이 있었고, OCR의 Text Detection에서도 그 특성에 맞는 평가 방식이 존재할 것이다. 

 

글자 검출 모델의 경우 모델이 예측한 결과(prediction)와 정답간 매칭/스코어링 과정을 거쳐 성능을 평가한다. Test 이미지에는 이미 정답결과가 존재하는데, 이를 Ground Truth라 한다. 이 GT와 prediction사이의 각 영역간에 서로 매칭이 되었는지를 특정 기준을 통해 판단하는데, 모든 매칭관계에 대해 파악하여 이를 평가한 Matching Matrix를 만든다. 이 Matching Matrix로 부터 유사도를 하나의 수치(score)로 뽑아낸다. 요약하면, 1) Matching Matrix를 만드는 과정과 2) Matching Matrix에서 유사도 수치를 계산하는 방법의 두 단계를 거치게 된다.

 

Matching Matrix를 만드는 방법, 즉 두 영역간의 매칭 여부를 판단하는 방법으로 가장 유명한 것은 IoU (Intersection of Union)이다. Prediction과 GT의 영역이 있을때 두 영역의 교집합 영역 넓이을 합집합 영역의 넓이로 나눈 것이다.

$$ IoU=area(P\cap G)/area(P\cup G)$$

앞선 대회에서 나왔던 recall과 precision을 영역으로 확장시켜 생각하는 방법도 있다. 각각 Area Recall, Area Precision이 되는데, Area Recall은 교집합 영역의 넓이를 GT의 넓이로 나눈 값이고, Area Precision은 prediction의 넓이로 나눈 값이 다.

 

2) DetEval

 

이제 이번 대회에서 사용되는 평가방식인 DetEval을 살펴보자.

 

우선 매칭행렬을 채우는 작업을 해야 하는데, area recall과 area precision을 모두계산하고 각 셀별로 area recall이 0.8이상 & area precision이 0.4이상을 충족하는 경우 1, 그렇지 않으면 0으로 값을 이진화시켜 채우게 된다. 마지막으로 GT영역과 prediction영역이 one to one 매칭이 되는 경우 및 many to one매칭이 되는 경우는 1 그대로 사용하고, 하나의 GT영역에 여러 prediction 영역이 매칭되는 one to many의 경우 패널티를 주어 0.8로 수정한다.

 

매칭행렬값을 채웠다면 이제 유사도 수치를 계산해야 한다. 매칭 매트릭스의 GT 기준으로 평균값을 취하여 recall을 얻고, prediction 기준으로 평균값을 취하여 precision을 얻는다. 이 둘의 조화평균으로 final score 계산하면 모든 계산이 완료된다. 줄글만으로는 이해하기 어려우므로 이하에 그림을 첨부한다.

부스트캠프 강의자료에서 가져옴

 

 

DetEval 이외에도 IoU(매칭행렬값을 IoU로 채우고 threshold 0.5, One to one만 허용), TIoU(매칭행렬 계산시 부족하거나 초과된 영역 크기에 비례하여 IoU에 패널티 부과), CLEval(얼마나많은 글자를 맞추었는지를 가지고 평가) 등의 평가방식이 존재한다.

 

(2) 데이터셋 제작

1) 가이드라인

 

굉장히 친숙한 용어가 튀어나왔다. 가이드라인이란 좋은 데이터를 확보하기 위한 과정을 정리해 높은 문서이다. 여기서 좋은 데이터란 균형있고(Raw Data) 일정하게 라벨링된(Ground Truth) 데이터로 보면 된다. 지금까지 대회에서 마주친 데이터들은 불균형은 심했지만 라벨링만큼은 일정하게 되어 있었던것 같다. 라벨링이 일정하지않은 정도를 라벨링 노이즈라 하는데, 샘플이 드문 데이터의 경우 어쩔 수 없이 라벨링 노이즈가 커지게 된다.

 

가이드라인 제작 및 데이터 구축과정은 1) 가이드작성, 2) 가이드 교육, 3) 라벨링, 4) 라벨링 검수, 5) 데이터 검수의 순서로 진행된다. 

 

가이드라인 작성은 특이 케이스에 대비할 수 있어야 하고, 단순해야 하며 명확해야 한다. 이 요소들은 작업자가 가이드라인에 따라 작업을 잘할 수 있게 하기 위함이다. 다만 가이드라인 구축 전에 직접 라벨링을 해보는 것이 필수적이라고 하는데, 직접 부딪쳐봐야 와닿는 부분이 있기 때문일 것이다.

 

2) Annotation tool 

 

라벨링에 사용되는 annotation tool에는 여러 종류가 있는데, 각 툴의 장단점을 간단하게 짚고 넘어간다.

  • LabelMe : 설치용이, 파이썬으로 작성되어 추가적인 기능설치가능 / 공동작업 불가, 속성 부여 불가
  • CVAT : 다양한 annotation 지원, automatic annotation 기능, multi user / model inference가 느림, 속성부여 까다로움
  • Hasty Labeling Tool : 다양한 annotation 지원, semi-automated annotation, multi user / 부분유료, 커스터마이징 불가
  • UPstage tool - OCR 전용 : OCR 전용으로 장점들을 취합해 제작한것 같지만 유료이다.

 

3. 느낀점

이번 대회의 실험을 설계하는 과정에서 데이터셋을 직접 제작하는 과정에 labeling 작업이 필요할 것으로 예상하고 있다. 그래서 annotation tool에 대한 강의를 듣고 upstage tool을 활용하기 위해 찾아보았으나 아쉽게도 유료버전만이 존재하는 것 같았다. 가장 간단해 보이는 LabelMe를 활용해서 labeling을 진행해볼 생각이다. 자세한 후기는 대회 회고를 통해 남겨놓으려 한다.

 

3회에 걸쳐 대회 강의 내용을 리뷰하려 하였으나 지난 포스팅에 관련내용을 좀더 추가하면서 2회만에 정리를 끝내게 되었다. 이제 대회를 진행하면서 성적을 내고 그 회고를 작성하면 Data Centric에 관한 포스팅은 완료된다. 요즘 강의를 들으면서 이번 대회에서 진행하려 하는 실험 계획이 자동으로 머리속에 떠오르고 있는데, 부스트캠프에 적응되서 그런건지 몰라도 긍정적인 신호로 받아들이면 될 것 같다.