이미지 번역, 파파고 텍스트 렌더링 개발기
안녕하세요. 오늘은 '네이버'의 DEVIEW 2023후기를 준비해봤습니다.
그 중에서도 오늘의 주제는 '더' 잘 읽히고 자연스러운 이미지 번역을 위한 파파고 텍스트 렌더링 개발기에대한 영상 후기입니다.
이번 주제에서는
1. 이미지 바로 번역
2. Text Inpainting
3. 글자 색상 추출
4. 글자 정렬 추출
5. 글자 영역 추출
6. 서비스 적용 결과
이렇게 6개의 주제를 배울 수 있었습니다.
이미지 처리와 텍스트렌더링은 어떤 과정으로 이뤄지는지 전체적 흐름을 알 수 있었습니다.
또한 파파고가 이러한 기술을 통해 사용자에게 어떤 기술을 제공하는지를 살펴볼 수 있는 강연이었습니다.
1. NAVER DEVIEW 2023의 강연 내용
1. 이미지 바로 번역
사용자가 카메자로 이미지를 촬영하면 해당 부분 글씨가 지워지고 번역한 글씨로 바뀌게 됩니다.
또한 촬영 뿐만 아니라 실시간 번역 서비스도 제공하고 있었습니다.
여기서 텍스트 렌더링이란 텍스트를 지워내고 즉각적으로 번역하는 기술입니다.
이미지 바로 번역의 처리 과정은 OCR -> HTS -> Inpainting -> Rendering 순으로 진행됩니다.
1.OCR : 이미지 내 글자를 인식하는 과정
2.HTS : 인식 과정을 번역에 알맞는 문장, 문단으로 묶어주는 기술
3.Inpainting : 원본 이미지에서 모든 글자를 지워내는 과정
4.Rendering : 지워진 배경 이미지에 새로운 글자를 써주는 기술
1,2 번 기술을 작년에 다뤘기 때문에 3,4번에 초점을 맞춰 강연을 들을 수 있었습니다.
2.텍스트 렌더링 Overview
Text inpainting : 글자를 다시 작성할 배경 이미지 생성, 글자를 쓸 도화지의 배경 이미지가 필요한데 이런 배경 이미지를 생성하는 과정.
Color : 글자를 다시 작성할 색상도 추출한다
Alignment : 글자를 다시 작성할 기준을 추출해낸다(정렬, 배치 등)
Renderable area : 글자를 다시 작성할 영역 추출
글자를 '배경'에 '색상'으로 '기준'부터 '영역'안에 쓴다!!
2. Text inpainting
텍스트 인페인팅은 글자를 다시 쓸 배경 이미지를 만드는 것.
1.Inpainting의 필요성
2.Inpainting 기존 방법과 문제점
배경을 글자 색과 대비되는 단색으로 처리한다.
-최빈값을 이용한 글자 색과 배경색 추출하는 방법이다.
-마치 색종이를 붙여놓은 것 같은 이질감이 느껴진다.
이런 이미지가 시각적으로 자연스러운지를 봤을 때 --> 그렇지 않다.
2. GAN을 활용한 text inpainting
학습된 딥러닝 모델을 통해 원본 이미지의 글자 제거 방법입니다.
글자가 없는 자연스러운 배경 이미지 생성이 가능해집니다.
글자 획과 그 주변 영역에 대해 선택적으로 집중하며 자연스러운 배경을 생성해내는 자체적인 모델을 개발했습니다.
해당 모델을 개발할 때 '사람이라면 어떻게 텍스트를 지워낼 것인가?'에 집중하며 개발했습니다. 사람은 텍스트를 지울 때 획과 주변부분을 번갈아가며 지워나갔다.
모델은 GAN(겐)을 활용했습니다. 이는 두 가지 모델이 서로 경쟁적으로 학습을 하는 구조입니다.
Discriminator과 Generator이 서로 경쟁하는 구조입니다.
GAN기반의 text inpainting은 DNN방법을 이용하여 기존보다 훨씬 자연스러운 배경 이미지를 생성하며 사용자가 훨씬 만족하는 기술을 만들어냈다.
3.글자 색상 추출
이 글자를 '어떤 색'으로 써주어야 잘 읽히고 자연스러운지에 대한 연구입니다.
원본 이미지와 비슷한 색상과 타이포그래피여야 자연스럽다고 생각했습니다.
가장 간단한 방법은 기존에 받아온 OCR을 통해 받은 정보를 통해 글자 영역에 해당하는 최빈 색상을 추출합니다.
하지만 이 방법의 경우 글자 획이 얇으며 복잡한 배경에 있을 경우 글자에 대한 색상을 정확하게 추출할 수 없습니다.
첫 번째로 Text inpainting을 활용하여 글자 색상을 추출합니다.
이는 글자 획에 대한 영역 추출이 가능한 것을 의미한다. Stroke mask를 통해 기존보다 일관성 있고 정확한 색상을 추출할 수 있습니다.
하지만 여전히 잘 읽히지 않는 경우가 존재했습니다. 첫 번째는 원본 이미지가 흐릿한 경우 두 번째로 그림자로 인해 변화가 극심한 경우입니다. 이 부분을 개선하기 위한 연구를 진행했습니다.
최종적으로 '더' 좋은 가독성을 위해 'Contrast Ratio'를 사용했습니다.
Contrast Ratio란 배경과 글자 색상의 대비를 보는 것입니다.
Contrast Ratio를 통해 색상 가독성을 개선하며 기존보다 잘 보이는 색상 적용이 가능합니다.
4. 글자 정렬 추출의 필요성
글자를 어디를 기준으로 쓰는 것이 좋은지에 대한 내용입니다.
[가장 처음으로 사용한 방법]
기존에는 왼쪽을 기준으로 렌더링을 진행했습니다.
['Rule base' 기반의 방법]
Rule base 로직을 사용하여 가운데 정렬, 오른쪽 정렬이 되어있는 이미지의 경우는 기존의 문단구조를 헤치는 결과값이 나오게 됩니다. 이를 개선하기위해 원본의 글자 정렬 상태를 추출하며 원본의 문단 구조를 유지하려고 했습니다.
글자 box의 point를 기준으로 각도 변화량을 이용했습니다.
[딥러닝을 통한 개선 방법]
하지만 이 경우에도 Line이 한 개인 경우, 정렬은 박스 외적인 요소에 의해서 결정되는 경우도 존재합니다.
글자 이외에 다른 visual feature을 고려해야합니다.
"그렇기 때문에 최종적으로 DNN 모델을 통해 글자 정렬을 추출했습니다."
Text block 별 classification을 진행했습니다.
각각 문단 별로 데이터 라벨링을 통해 학습을 진행했습니다.
DNN 방법을 이용하여 문단 사이의 관계 뿐만이 아닌 여러 요소를 고려하여 더욱 정확한 결과값 추출이 가능하게 됩니다.
5. 글자 영역 추출
Image to image translation : 글자를 '어디까지' 다시 써주어야 잘 읽히고 자연스러운지에 대한 문제입니다.
[가장 처음으로 사용한 방법]
글자가 원래 존재했던 만큼만 써주는 방법입니다. 사실상 가장 확실하고 안전한 방법입니다.
하지만 이 역시도 결코 좋은 방법은 아닙니다. 왜냐면 글자 원본보다 늘어나는 경우가 있거나 영역으로만 해버리면 글자가 작아지거나 하는 문제가 발생합니다. 이는 사용자의 가독성에 영향을 미치게 됩니다.
[Edge map을 활용한 규칙 기반 영역 추론]
글자 영역에 대한 확보를 통해 사용자가 읽기 편한 원본 글자 크기에 가까운 렌더링이 가능해집니다.
하지만 이 역시도 noise에 취약하게 되며 경계선이 정확하게 추출되지 않는 문제가 발생합니다. 또한 배경에있는 경계선의 경우 글자의 영역에 상관이 없는 경우가 있습니다. 그렇기 때문에 단순한 경계선을 넘어 text에 특화된 경계선을 추출하는 방법이 필요했습니다.
이를 개선하기 위해 DNN 기반으로 지속적 연구를 진행하고 있습니다.
6.서비스 적용 결과
[마지막 WRAP UP]
1. Text rendering이란 이미지에 글자를 쓰는 기술입니다.
2. GAN 기반의 Text inpainting 기술을 통해서 자연스러운 배경 이미지를 생성할 수 있습니다.
3. 글자 영역 추론 고도화를 통해서 원본 색상을 보다 정확하게 추출할 수 있으며 Contrast Ratio를 사용해 가독성을 더욱 개선할 수 있습니다.
4. 원본의 정렬을 추출하여 사용하는 것을 통해 문단을 자연스럽게 렌더링 할 수 있습니다.
5. 글자 영역은 글자 크기를 결정하는데 중요한 역할을 하며 영역 추출을 통해 더 좋은 가독성을 가진 이미지를 만들어낼 수 있습니다.
2. 강연 후 느낀점
텍스트 렌더링 기술에 대해 전반적인 부분에 있어 배우는 좋은 시간이였습니다. 또한 사소한 부분에 있어서도 사용자를 고려하며 만들어지는 것이 놀라웠습니다. 앞으로 딥러닝 기술의 개발이 이뤄지며 이미지 기반 텍스트 번역에 있어 다양한 발전이 이뤄졌으면 좋겠습니다.