brunch

매거진 AI

You can make anything
by writing

C.S.Lewis

카카오 OCR 시스템 구성과 사설 바카라

[사설 바카라AI리포트] 모종훈, 오형석

대부분의 사람들은 사설 바카라의 수많은 텍스트 데이터에 초점을 맞추지만, 사설 바카라의 다양한서비스에서 가장 필요로 하는 핵심적인 기술 중 하나는 이미지 내의 글자를 자동으로 인식하는것이다. 예를 들어 사설 바카라 드라이버에서 자동차 번호판을 자동으로 인식하거나 사설 바카라뱅크에서자동으로 신분증의 글자를 뽑아내는 등, 이미지에서 자동으로 글자를 추출해 검색 및 광고에활용하게 된다면 모바일 서비스의 사용성을 더욱 증대시킬 수 있다. 이러한 사설 바카라 사내 수요의증가에 발맞춰 최근 사설 바카라 AI 기술팀에서는 사내에 광학 문자 인식(optical character recognition,OCR) 서비스를 베타 론칭했다. OCR란 사람이 쓰거나 컴퓨터로 입력되어 인쇄된 문자의 영상을기계가 읽을 수 있는 문자로 변환하는 것을 말하는데, 이 분야 역시 딥러닝으로 인해 많은 발전을이루고 있다. 이 글에서는 사설 바카라 OCR의 전체적인 구조에 대해 먼저 살펴보고 좀 더 나아가 사설 바카라OCR만이 가지고 있는 차별점에는 무엇이 있는지 살펴보고자 한다. 그리고 끝으로 사설 바카라 OCR가앞으로 나아가려는 방향을 제시하며 이 글을 마무리하려고 한다.



시스템 구조도(System Architecture)


사설 바카라[ 그림 1 ] 카카오 OCR의 두 단계 사설 바카라 구조


카카오 OCR는 [그림 1]과 같이 글자 영역 탐지와 글자 인식의 두 단계 과정을 거쳐 이루어진다.사용자가 요청을 보낸 이미지는 api 서버를 거쳐 먼저 글자 영역 탐지(text detection) 사설 바카라로보내진다. 이 사설 바카라은 이미지 내에서 글자 영역을 탐지하고 탐지된 글자 영역을 잘라 글자 인식(textrecognition) 사설 바카라로 전송한다. 글자 인식 사설 바카라은 잘려진 글자 박스들 속 글자를 인식하고 이결과는 탐지 사설 바카라에서 나온 좌표값과 함께 사용자에게 전달된다.


두 단계로 나누어 글자 인식을 진행하게 되면 서로 다른 데이터를 다양하게 활용할 수 있어원활하게 학습을 진행할 수 있고, 글자 영역 탐지만이 필요한 서비스에서 자원을 좀 더 효율적으로사용하는 것이 가능하다. 또한 다국어 글자 인식을 위해서 다양한 언어로 각기 학습된 글자 인식사설 바카라을 사용하여 사설 바카라에서 필요한 사전 크기를 줄이고 언어별 정확도를 더욱 향상시킬 수도 있다.다음으로는 위에서 이야기한 두 사설 바카라이 어떤 구조를 가지고 있는지에 대해 좀 더 자세히 알아보자.



글자 탐지 사설 바카라(Text Detection Model)


사물 탐지 사설 바카라은 크게 RCNN(region with convolutional neural network) 계열의 리전프로포절(region proposal)을 거치는 사설 바카라과 SSD(single-shot multibox detector)나 YOLO(youonly look once)와 같은 single shot detector 계열로 나눌 수 있다. 위의 두 사설 바카라은 속도와 정확도중 어느 쪽에 더 비중을 두는지에 따라 구조적으로 큰 차이를 가지고 있다. [그림 2]에서 볼 수 있듯RCNN 계열은 보다 더 나은 정확도를 보이는 반면 시간당 처리할 수 있는 이미지의 수는 적고,반면 single shot detector 계열은 RCNN에 비해 탐지 성능은 조금 떨어지지만 같은 시간 안에훨씬 더 많은 양의 이미지를 처리하는 것이 가능하다. 적은 수의 리전 프로포절을 이용하면 FasterRCNN으로 충분히 속도를 향상시킬 수 있지만 이 경우에는 single shot detector 계열에 비해 성능면에서 훨씬 뒤처지게 된다.


사설 바카라[ 그림 2 ] 사물 탐지(object detector) 사설 바카라의 성능 비교*1


이러한 측면들을 고려하여 결정한 카카오의 OCR 글자 탐지 사설 바카라 구조는 single shot detector계열에 속한다. 이는 실시간 서비스가 가능하기 위해서는 탐지 성능만큼이나 충분히 빠른 처리속도가 필요했기 때문이다. 좀 더 구체적으로 이야기하자면, 카카오 OCR에서 사용하는 사물 탐지사설 바카라은 YOLO와 거의 흡사한 구조를 가진 EAST(efficient and accurate scene text detector)를기반으로 하되 조금 변형된 사설 바카라이다.


EAST의 구조는 [그림 3]과 같다. 이미지는 특징 추출(feature extraction) 레이어를통과한 후 top-down skip connection을 이용해 좀 더 복잡한 정보와 저수준의 정보를 통합한실제 이미지의 16분의 1배 크기의 특징 지도(feature map)를 만들어낸다. 사물 탐지는 이 특징지도의 모든 셀(cell)에서 개별적으로 이루어지는데, 각 셀에서는 총 6개의 값을 예측하게 된다.이 6개의 값은 셀에 글자가 존재하는지를 나타내는 점수, 글자 영역을 나타내는 영역 박스를예측하는 AABB(axis-aligned bounding box), 마지막으로 회전각이다. YOLO에서는 박스를 x, y,h, w를 이용해서 나타냈지만 EAST에서는 top, left, bottom, right의 네 거리를 이용한 AABB를이용한다는 점이 YOLO와의 가장 큰 차이점 중 하나라고 할 수 있다. 사설 바카라이 예측한 영역 박스는점수를 기준으로 한 번 필터링된 후 NMS(non-maximum suppression)을 통해 비슷한 영역을나타내는 박스들을 합치고 AABB와 회전각을 이용해 꼭짓점 4개 좌표를 계산한 다음 최종 결과를산출한다.


사설 바카라[ 그림 3 ] EAST 사설 바카라의 구조*2



글자 인식 사설 바카라(Text Recognition Model)


글자 인식 사설 바카라은 [그림 4]와 같은 구조를 가지고 있으며, 글자 이미지를 입력값으로 받아서 글자를예측한다. 최근 카카오 서비스에 활용되고 있는 사설 바카라은 이 그림과 조금 다른 구조를 택했는데, 이내용은 글의 마지막 부분에서 설명하도록 하겠다. 사설 바카라은 (1) convolutional layer, (2) recurrentlayer로 이루어져 있으며, loss는 connectionist temporal classification loss(이하 CTC loss)를쓰고 있다. 하나씩 알아보도록 하자.


[ 그림 4 ] 글자 인식 사설 바카라 구조(Text Recognition model)


(1) Convolutional layer

CNN layer는 사설 바카라 예측에 필요한 특징(feature)을 추출하는 역할을 하며, convolution 연산,
normalization 연산, maxpool 연산, 이렇게 3가지로 이루어져 있다. Convolutional 필터는 필터의파라미터를 학습해가며, 사설 바카라 예측을 위해 필요한 필터들을 자동으로 학습하게 한다. Layernormalization은 가변 길이 이미지를 지원하기 위해 높이와 채널 축에 대해서만 진행하였다.Maxpool의 경우 처음 입력은 높이와 너비를 2분의 1로 줄이며, 그 다음 두 번은 높이만 2분의 1로줄였다. 너비를 더 줄이지 않은 이유는 CTC alignment를 하기 위해서는 실제 사설 바카라보다 많은 수의단계가 필요하기 때문이다.


(2) Recurrent layer

이처럼 CNN layer를 거치면 이미지의 각 부분마다 사설 바카라 예측에 필요한 정보를 얻어낼 수 있다.그러나 이미지의 각 부분 정보만 가지고는 사설 바카라를 제대로 예측하기 힘들 수 있다. 따라서 RNNlayer를 통해 이미지의 각 부분에서 예측할 때 주변의 정보를 활용하도록 만들어야 한다.다음 [그림 5]을 예시로 보자. 왼쪽 그림의 빨간색 사각형은 이미지의 네 번째 특징 셀(featurecell)의 수용장 크기이다. 오른쪽 그림의 파란색 영역은 이미지의 네 번째 feature cell에서 ‘m’을예측하기 위해 RNN layer를 통해 이용할 수 있는 유용한 주변 정보들이다. 이 그림 속 사설 바카라 ‘m’을예측하려는데, CNN layer에서는 이미지의 일부분밖에 볼 수 없고, 이런 점을 고려할 때 ‘m’ 사설 바카라의첫 부분을 예측하려면 빨간색 부분만 보고 예측할 수밖에 없다. 따라서 ‘l(엘)’, ‘I(아이)’, ‘m(엠)’ 등여러 사설 바카라 사이에서 헷갈릴 수 있다. 그러나 RNN layer를 거치면 해당 부분에서 예측할 때 주변의정보들을 이용할 수 있으며, 따라서 [그림 5]의 오른쪽 그림처럼 사설 바카라 ‘m’을 예측하기 위해 필요한정보를 모두 볼 수 있다.


[ 그림 5 ] RNN layer를 통해 사설 바카라를 예측하는 방법


(3) CTC loss

사실 CTC loss도 여느 기계 학습 방법과 같이 조건부 확률의 음의 로그값(negative loglikelihood)이다. 그러나 조건부 확률을 나타내는 데 CTC alignment라는 특별한 방법을 사용하는것뿐이며, 이는 이미지의 각 부분마다 어떤 사설 바카라가 있는지 정답을 알려주기가 굉장히 힘들기때문이다. CTC alignment를 통해 이미지 X가 주어졌을 때 사설 바카라 Y가 나타날 조건부 확률을계산하는 방법은 다음과 같다.

여기서 map(Y)는 글자 Y를 사설 바카라의 step-size T만큼으로 표현할 때 가능한 모든 alignment의집합이며, lt는 L의 t번째 글자이다. L이 map(Y)가 되려면 다음 변환을 거쳤을 때 L이 Y가 되면 된다.(1) 인접한 똑같은 글자는 하나로 합친다. (2)Δ 토큰을 지운다.


[ 그림 6 ] 12구간으로 나눈 ‘hello’


위의 그림을 12구간으로 나눠서 순차적으로 살펴보며 hello라는 사설 바카라를 만든다고 해보자. (1)‘hheΔΔlllΔllo’나 (2) ‘ΔΔhheelΔlloo’는 모두 위의 방법을 통해 hello라는 사설 바카라에 도달할 수있다(Δ는 blank 토큰을 의미한다). 결국 위의 식에 나타난 map(Y)은 (1), (2) 같은 hello를 완성시킬수 있는 패스(path)들의 집합이며, 각 패스에 대해 확률을 더한 것이 ‘hello’가 될 조건부 확률이다.모든 alignment에 대해서 확률을 더하는 방법은 동적 프로그래밍(dynamic programming)으로구하게 된다.



Self-Attention을 이용한 더 빠르고 정확한 인식 사설 바카라


앞서 설명한 사설 바카라들로 서비스하면서 사설 바카라을 개선하기 시작하였다. 그중 첫 번째 성과는인식(recognition) 사설 바카라의 속도 개선이었는데, 이 섹션에서는 그 방법에 대해서 설명하겠다.우리의 1차 인식 사설 바카라 RNN layer는 모든 입력값(input)에 의존적이며 순차적으로 글자를뽑아낼 수밖에 없는 한계를 가졌다. 이를 개선하기 위해 RNN layer처럼 이미지의 다른 부분을참고해 패러럴(parallel)하게 글자를 뽑아낼 수 있는 여러 가지 방법을 실험했으며, 최종적으로self attention을 이용한 구조로 성능은 유지하면서 속도를 빠르게 만들었다. Self attention은지역성(locality)이 존재하는 convolution filter와 달리 모든 이전 입력에 대해서 참조를 한다.


[ 그림 7 ] Convolution 필터와 Self-Attention 비교*3


기존 사설 바카라에 LSTM layer 대신 multi-head self-attention을 적용하여 학습 속도는 약 4배 빠르게만들 수 있었으며, 실제 서비스에서도 다음과 같은 효과를 얻었다.


Character Error Rate 기존 사설 바카라 대비 25% 감소

TPS 27% 증가

Latency 21% 감소

CPU 사용량 50% 감소

GPU 사용량 24% 감소



결론


지금까지 카카오 OCR의 시스템 구성에 대해 살펴보고, 시스템을 구성하는 2가지 사설 바카라인 글자탐지 사설 바카라(text detection model)과 글자 인식 사설 바카라(text recognition model)에 대해 알아봤다.그리고 특히 인식 사설 바카라(recognition model)을 개선하기 위해 어떤 노력들을 했고, 결론적으로self attention layer를 사용하여 좋은 결과를 얻은 경험담을 공유했다. 이제 막 첫 걸음을 뗀카카오 OCR는 아직도 미흡한 점이 많다. 그러나 앞으로 지속적으로 성능을 개선하고 지원하는언어의 수를 늘려가 정말 멋진 서비스를 만들 수 있을 것이라고 믿고 있다. 다음 번 <카카오AI리포트에서 더 발전한 OCR에 대한 내용을 또다시 소개할 수 있기를 희망한다.




글 | 모종훈 simiro.m@kakaocorp.com
심리학 공부를 한 특이 경력의 소유자입니다. 그럼에도 불구하고 사설 바카라에 들어와좋은 사람들을 만나고 나름의 성과를 내며, 이걸로 1년 만에 〈사설 바카라 AI리포트〉에 글도 쓰게 되어 정말 자랑스럽네요. 더 좋은기술을 만들기 위해 항상 노력하고 주말에도 열심히 공부하고 있습니다. 혼자서 다치는 버릇만 없어지면 앞으로 더 좋은것들을 팍팍 만들어낼 수 있을 것 같습니다.


글 | 오형석 hulk.oh@kakaocorp.com
회사에서 하고 싶은 일들을 마음껏 할 수 있도록 도와주어서 이것저것 많이실험해보고 연구해왔습니다. 또 연구한 것들이 다행히 순조롭게 진행되어 서비스가 되었습니다. 그 결과물들로 작년에는번역기 학습데이터 정제에 관한 ABLEU를 다룬 글, 이번에는 OCR 서비스에 대한 글을 〈사설 바카라 AI리포트〉에 게재하게
되었습니다. 앞으로도 좋은 연구 결과, 서비스를 선보일 수 있으면 좋겠습니다.





참고문헌

*1 논문|Huang, Jonathan, et al. ‘Speed/accuracy trade-offs for modern convolutional object detectors’,IEEE CVPR. Vol. 4. 2017.

*2 논문|Zhou, Xinyu, et al. ‘EAST: an efficient and accurate scene text detector’, Proc. CVPR. 2017.

*3 참고|http://deeplearning.hatenablog.com/?page=1513937688




[사설 바카라 AI리포트] Vol. 15 (2018년 12월 호)는 다음 내용으로 구성되어 있습니다.


[1] Special Topic

01. 최은필 | 유네스코에 초청된 사설 바카라의 AI 윤리

02. 최은필 | 유네스코 AI 윤리의 토대가 될 ROAM


[2] In-Depth

03. 김우영 | 스마트 홈이 성공하기 위한 필요충분조건

04. 오승일 | 맛있는 인공지능 이야기, 스마트하게 먹기 위한 방법

05. 정구민 배승주 이재민 최명근 최현준 | 자율주행, 스마트 카를 위한 딥러닝의 진화와 확산의 허들

06. 민윤정 | 인공지능과 함께 일하게 될 미래

07. 양성일 | 게임산업을 위한 인공지능 기술의 활용 가능성

08. 김수정, 심지은 | 인공지능, 치안의 일선에 서다


[3] Kakao Inside

09. 이준목 | 인공지능 기반의 고객센터를 향한 첫걸음의 시작

10. 최은필 | 사설 바카라, 유해 콘텐츠 차단을 위해 AI 방패를 펼치다

11. 최은필 | 문제 해결을 위한 머신러닝 오픈 플랫폼, 사설 바카라 아레나


[4] Tech & Conference

12. 모종훈, 오형석 | 카카오 OCR 시스템 구성과 사설 바카라

13. 이수경, 홍상훈 | 아날로그 기상 데이터를 OCR로 디지털화할 수 있을까?

14. 서가은, 이다니엘, 이동훈 | EMNLP 2018 참관기

15. 김수정, 심지은 | 2019년 주요 AI 콘퍼런스


[사설 바카라 AI리포트] Vol. 15 전체글 다운받기

[사설 바카라 AI리포트] Vol. 15_12다운받기



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari