Boostcamp AI Tech (Day 052)
강의를 10강까지 다 듣고 퀴즈도 10걍까지 풀었다!
OpenCV - Remapping, Lens Distortion
github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/05.geometric_transform
Lens Distortion
렌즈 왜곡 변환은 변환 행렬로는 구할 수 없는 변환이다. 렌즈 왜곡 변환에는 Remapping, 오목 렌즈/볼록 렌즈 왜곡, 방사 왜곡이 있다.
- 변환 행렬로는 이미지 이동(Translation), 확대/축소(Scaling), 회전(Rotation), 어핀 변환(Affine Transformation), 원근 변환(Perspective Transformation)을 구할 수 있다.
Remapping
규칙성 없이 마음대로 이미지의 모양을 변환하는 것이다. 이번 project에서 구겨진 영수증과 비슷하지 않을까? OpenCV의 cv2.remap() 함수로 remapping을 할 수 있다.
변수 = cv2.remap(src, mapx, mapy, interpolation, dst, borderMode, borderValue)
- src(입력 이미지), mapx, mapy(x축과 y축으로 이동할 좌표로 src와 동일한 크기 dtype=float32), dst(결과 이미지)
예시로 mapx[1][1]=2, mapy[1][1]=7
라면 src 좌표 (1,1)의 픽셀을 (2,7)로 옮긴다.
강의듣기
대량의 합성데이터로 학습을 먼저한 뒤, 실제 데이터로 빈틈을 메꿔주는 hybrid방식이 있다.
크롤링 할 때 license 관련된 문제가 있다.
데이터 수집방법 별 특징
Dataset 수집방법
데이터셋을 볼 때 확인해야할 부분
어떤 기준에 맞춰 정리할지 정하기
ICDAR (공개 dataset) OCR관련 학회
새로운 데이터셋을 구축하기도 하고, 재가공하기도 한다.
2019년에는 세로쓰기, 휘어진글자까지 포함한다.
icdar 2019년에는 한국어데이터도 포함되있는걸 확인할 수 있는데 개발한 OCR의 성능을 확인할 수 있다.
AI HUB
무료로 공개된 공공행정문서 등이 있음
다른 데이터셋은 4개 좌표값을 알려줬었는데 여기선 json파일 형태가 다르다.
오른쪽 아래엔 meta data도 함께 제공한다.
문서 OCR 데이터셋 아래 네가지는 영어 data다.
CORD
계층 구조로 parsing함.
UFO (Upstage Format for OCR)
통일된 포멧의 하나의 예시.
가장 큰 특징은 위계를 따라가는 것이 아니라 바로 image에서 원하는 정보를 얻을 수 있다는 점이다.
UFO format
orientation: 가로쓰기, 세로쓰기, 불규칙
tag: 음각 양각, 거울에 비침, 가려짐, 초점이 맞지 않음
EDA
종횡비가 생각보다 영향을 많이 미친다.
고득점을 위해선 종횡비가 매우 큰 경우를 어떻게 처리해야할지 고민해보아야한다.
OCR 성능평가
Text Detection
step1
step2
scoring: 매칭행렬로부터 예측과 정답 사이의 유사도를 하나의 수치로 뽑아내는 것
글자 검출 모델 평가
매칭 행렬 계산 + 유사도 계산
Glossary
- IoU: 두 영역간의 유사도를 계산
- Recall(정답 기준), Precesion(예측 기준)
기본 용어
One-to-One
One-to-Many(split case)
Many-to-One
DetEval
One-to-One과 Many-to-One는 1의 값을 사용한다.
One-to-Many(split case)는 바람직하지 않은 경우라서 약간의 페널티가 들어간 0.8로 바꾼다.
한계는 merge는 허용하고 split은 방지하는게 맞는가? 하는 의문점이다.
IoU
One-to-Many: 0점
TIoU
얼마나 정답에 가깝게 예측되었나를 중요하게 여기는 IoU
이걸 하나의 값(scoring)으로 합쳐야하기 때문에 최종 수치는
recall과 precision의 조화평균을 구하게 된다.
예제를 통한 TIoU의 한계점
CLEval
글자 수 기반
글자-level 평가다.
글자 영역 위치 정보와 sequence로 부터 추정하는게 중요하다.
글자 중심 위치를 구한 것이 PCC이다.
정답 영역 기준이므로 Recall이라고 부를 수 있다.
2개의 예측 영역이 있을 때,
이건 예측 영역 기준이므로 Precision이다.
Summary of metrics
하나의 정량평가를 이용하지 않고 여러개의 정량평가를 이용하는 게 중요하다.
정성평가도 함께 하면서 정량평가 방법이 이상한건 아닌지 의심해보아야한다.