취미가 좋다
[DEVIEW 2020] 파파고 이미지 번역 본문
본 글은 DEVIEW 2020의 '외국어가 읽힌다 딱! (파파고 이미지 번역)'을 정리한 글입니다.
외국어가 읽힌다 딱!
파파고 이미지 바로 번역
1. 이미지 번역
1.1 이미지 번역의 필요성
파파고를 이용하면 이미지의 외국어를 한국어로 번역할 수 있다.
번역 방법 : 사진에서 텍스트 영역 추출 → 추출한 영역을 문지르면 해당 부분을 번역
이미지 번역의 사용량과 분야가 점점 늘어나고 있다.
1.2 이미지 번역 과정
OCR(문자 검출 + 문자 인식) → 기계 번역(MT)
↓ ↓ ↓
OCR → 단어 그룹화 → 기계 번역
관련 단어를 묶고, 정렬하여 기계 번역기에 넣어야 한다.
기존에는 룰 기반의 알고리즘을 사용하여, 각 단어마다 자신이 어느 줄에 속하는 지 결정하여 문장을 만들었다.
기존의 한계
- 사용자가 문지르는 형태로 관련 단어를 묶어야 했다.
- 룰 기반이기에 성능이 좀 떨어졌다.
- 문지르는 것 없이 관련 단어를 자동으로 묶고, 더 잘 정렬할 수 있을까?
1.3 이미지 바로 번역
: 이미지의 텍스트를 추출하고 번역한 후, 해당 텍스트 위치에 번역한 텍스트까지 넣는 작업
OCR → 단어 그룹화 → 기계 번역 → 텍스트 에디팅
기존 구글이 제공하는 서비스는은 문맥이 아닌 줄 단위로 묶기 때문에 번역 품질이 좋진 않았음
즉, 온전한 문장 형태로 번역이 이루어지지 않았음
2. 텍스트 계층화
좋은 번역 품질을 위해서 줄 단위보다 문단 단위로 번역이 이루어져야 한다.
2.1 텍스트 계층화
단어 → 라인 → 블록 으로 묶어서 라벨을 추가한다.
- 단어 : 띄어쓰기 기준
- 라인 : 동일 선상 단어들, ('\n' 기준)
- 블록 : 번역의 단위. 동일 문맥
이 방식으로 데이터를 직접 구축하였다.
2.2 텍스트 계층화 모델
: Anchor box, Segmentation, Graph 기반 모델 중 Segmentation 기반의 문자 검출기를 선택하였다.
U-net 아키텍처에 이미지를 넣으면 텍스트 영역인 세그먼트 마스크를 얻을 수 있다.
세그먼트 마스크를 후처리하면 텍스트 박스를 얻을 수 있는 것이다.
이 때, connected component analysis 알고리즘으로 후처리한다.
대표적인 방법론이 PixelLink 라는 text detection을 사용하였다.
모델 수정
1. 단어마스크를 라인마스크로 확장
2. 라인마스크를 블록마스크로 확장
즉, 마지막 채널이 하나의 채널이었다면, 브랜치를 하나 더 추가해서 2,3개 채널로 늘린다.
장점
1. 멀티태스킹, end-to-end learning이 가능하다.
2. 성능이 더 좋고, unet의 백본을 서로 공유할 수 있어서 네트워크 사이즈가 줄어들 수 있고 속도가 빠르다.
2.3 텍스트 계층화 결과
3. 텍스트 에디팅
3.1 텍스트 인페이팅 (inpainting)
인페인팅이란 객체를 자연스럽게 지우는 컴퓨터 비전 기술이다.
이 기술을 사용하여 이미지의 글자를 지운다.
텍스트 영역에서 배경색을 추출하여 텍스트를 지운다.
- 배경색 : mask가 0인 부분이 배경이므로 최빈값을 찾아서 설정
- 글자색 : mask가 0이 아닌 부분들을 모아서 글자색을 가져온다. 클러스터링을 통해 2개의 클러스터를 정하고, 배경과 구분력이 크도록 먼 글자 색을 결정
3.2 텍스트 렌더링 (randering)
찾은 색으로 번역 결과를 넣는 과정이다.
번역한 글자의 수가 다를 수 있기 때문에, 글자 크기, 장평, 자간, 여백을 변경한다.
4. 이미지 번역 성능 평가
단어 정렬 성능(Edit Distance)와 이미지 번역 성능(BLEU)의 결과가 rule-base보다 더 좋았다.