T/SCHOOL Day ① Session 1 - 이바도 개발자 (네이버)
3시간이 어떻게 지나갔는지 모를 정도로 예상보다 더 재밌고 유익한 시간이었다. 함께 시청한 사람들 모두 느꼈겠지만 강연자 당 30분은 정말 너무 짧다! 귀로 들었던 내용을 손으로 다시 곱씹는 느낌으로 요약 및 후기를 남겨보려 한다.
첫 번째 강연자는 네이버 클로바 OCR팀의 이바도님이셨다.(OCR은 간단히 말하면 Text Recognition, 글자 인식 과정이라고 한다.) 재작년에 진행되었던 네이버 손글씨 공모전이 어떻게 진행되게 되었는지와 과정을 빠르게 설명해주셨다. 개발에 관련한 설명이 많아 100% 이해하지는 못했지만 오히려 잘 모르는 분야라 더 유익했던 것 같다.
OCR 엔진을 학습시키려면 많은 양의 리얼 데이터와 신테틱(synthetic) 데이터가 필요하기 때문에 다량의 다양한 손글씨가 필요하다. 이런 데이터를 통해 엔진을 사전 학습시킨다. 개개인의 손글씨를 인식하는 OCR을 개발하려면 신테틱 데이터가 필요하여 결국 손글씨와 비슷한 데이터가 굉장히 많이 필요하다는 결론이 나왔고 그래서 손글씨 폰트 공모전을 진행하기로 결정했다.
그러나 한글 폰트를 만드는 것은 굉장히 어렵다. 영어 폰트의 경우 총 94자만 있으면 만들 수 있지만 한글은 조합형 언어 시스템이다 보니 초성 19개, 중성 21개, 종성 28개, 총 만개 이상의 글자가 필요하다. 이바도님은 여기서 한글 폰트를 만드는 것은 장인의 수고와 노력이 필요한 것이라고 했다.
개인적으로 굉장히 이해가 되었던 것이, 대학생 때 들었던 편집디자인 수업에서 교수님이 영어 폰트의 완성도가 한글 폰트에 비해 월등하다고 누누이 말씀하셨었다. 실제로 제작물의 텍스트 내용을 한글에서 영어로 바꾸면 전체적인 완성도가 진짜 높아지기도 했었다.. 확실히 완성도 높은 한글 폰트를 만드는 건 영어보다 훨씬 어려운 것 같다. 특히 요즘 나는 웹툰에 어울리는 폰트를 설정하는 일을 하면서 수많은 폰트를 사용해보고 있는데, 특정 텍스트가 다르게 나와 고생하는 경우가 있다. (예를 들면 "?!"가 같이 나올 때 공간이 많아진다던가 혹은 따옴표의 모양이 이상하다거나) 퀄리티 좋은 무료 상업 폰트들이 많아졌으면 하는 바람이다.
하여튼 그래서 OCR팀은 대안으로 여러 사람들의 손글씨를 가지고 손글씨 생성 모델을 제작하셨다고 한다. 여기서 생성 모델이 어떻게 생겼는지 설명해주셨는데 (Real, Fake 어쩌고..) 완벽히 이해하지 못했다.. 그러나 이 방법 역시 쉽지 않았다. 사람들의 손글씨인 Pretrain Data를 가지고 적용해보았으나 많은 오류가 발생했다. 사람이 직접 쓰는 것이다 보니 한 사람이 같은 내용을 써도 스타일이 다 다른 것이었다. 대표적인 페인 포인트는 사람이 같은 글자를 쓸 때 언제나 동일하게 쓰지 않는다는 것이었다. 또 다른 페인 포인트는 생성 모델 자체가 굉장히 불안정하다는 것이었다. 이것은 과학이 아니라 거의 예술에 가깝다고 하셨다. 또한 레이블링 된 손글씨 데이터가 잘 없다고 하셨다. 문제를 해결하기 위해 정말 다양한 시도를 해보았고 이런 과정을 통해 성능을 훨씬 업그레이드할 수 있었다.
그러나 결과가 좋으니 회사에서 요구하는 일이 더 늘어났다고 하셨다. (역시 회사란..) 그래서 3-4개월을 남기고 한글날 공모전을 진행하게 되었다. 원래 사람들에게 400자 정도의 손글씨를 요청해야 했었는데 글자 수가 너무 많아 불만이 있었다. 그렇지만 한글 자체가 굉장히 과학적인 언어라 (세종대왕님 만만세) 대표적인 8가지의 레이아웃이 존재했고 덕분에 필요한 샘플 글자를 약 150자로 줄일 수 있었다. Fine Tuning, Vector Tracing (ttf 파일로 변환하는 단계) 등의 과정이 필요했고 FontForge라는 프로그램을 통해 여러 명의 손글씨 파일을 만들 수 있었다고 한다. 그리고 글자들이 타이핑되었을 때 옆 글자들과의 균형, 빈 공간 등의 후처리(Normalization) 과정도 진행하셨다. 25000명 이상이 지원했던 한글날 공모전은 성공적으로 마무리되었고 이것은 손글씨 폰트에 대한 사용자들의 니즈가 굉장히 높다는 것을 보여줬다.
공모전 이후, OCR팀은 256자에서 확 준 28자로 폰트를 제작할 수 있는 DM 폰트라는 모델의 개발에 성공했다. 그리고 한국어 폰트뿐만 아니라 일본에서 많이 사용하는 라인(LINE)의 일본 폰트도 개발 중에 있다고 한다. 또한 개발자, 엔지니어가 주도했던 기존의 생성 과정에서 개인 사용자나 디자이너가 폰트를 제작할 수 있는 서비스를 만들어 사용성을 개선했고 이 서비스는 빠르면 올해 공개가 가능할 것 같다고 하셨다. 아래의 말을 끝으로 강의를 마무리하시면서, 결국 팀이 있었기에 이 모든 일을 할 수 있었다고 말씀하셨다.
'고수마을 독목불림(高樹靡陰 獨木不林)'
위로만 크는 나무는 그늘을 만들지 못하고
홀로 서있는 나무는 숲을 이루지 못한다.
크.. 너무 멋지고 공감되는 말이다! 나 역시 회사 생활을 하면서 개인이 이뤄낼 수 있는 것은 거의 없다는 생각이 자주 든다. 동료들이 있기에 내가 있고 내가 있기에 팀이 있..는거겠지? 각자 다른 삶을 살아온 사람들이 같은 목표를 가지고 셀 수 없이 많은 시간과 노력을 투자하는 것은 정말 대단한 일이다. 서로를 이해하고 존중하는 팀에 속해있는 것은 누구에게나 찾아오지 않는 큰 행운인 것 같다. 저 멋있는 말을 내가 작년에 알았었다면 면접 때 야무지게 써먹었을 텐데.. 아쉬운 마음을 뒤로 하고, 나도 앞으로 조직의 일원으로서 팀의 목표를 이루는데 기여하고 동료들에게 동기부여가 되는 단단한 나무 같은 팀원으로 성장하고 싶다.