안녕하세요! SW서포터즈 기술 블로그 팀입니다.
오늘은 조금 특별한 팀을 소개하려고 합니다.
얼마 전 10월의 기나긴 황금연휴 속 마지막 공휴일이 한글날이었는데요. 세계 기록문화유산에 등재돼 문자학적 가치를 인정받고 있는 한글이 매일 신기술을 만나 새로워지고 있습니다.
바로 “폰트 Font” 때문인데요, 워드프로세서와 같이 컴퓨터에서 한글을 사용하려면 꼭 지정해 줘야 하는 것이 바로 폰트입니다.
현재 시중에 나와있는 한글 폰트는 약 6000종 정도로, 그 수가 굉장히 많습니다.
그러나 주로 사용되는 한글 폰트는 그렇게 많지 않으며 많은 경우 저작권 문제가 얽혀 있어서 잘못 사용했다가 문제가 생기는 경우도 종종 발생하고 있습니다(https://goo.gl/tnk3Uu).
또 자신만의 폰트를 사용하고 싶어 하는 사람들이 있지만, 전문 디자이너가 제작해도 꼬박 4개월이나 걸리는 전문 작업이기 때문에 쉽지 않습니다.
그러나 이제 이런 질문들에 답을 해줄 서비스가 등장합니다. 바로 “Fontto“입니다.
[Fontto]
Fontto는 SW마에스트로 8기 Twiiiks(트윅스)팀이 개발하고 있는 서비스입니다.
간단하게 말해서, AI 기술을 이용해서 자신만의 글씨체로 폰트를 만들어주는 서비스입니다.
Fontto라는 이름은, 딥 러닝(Deep Learning)에서 유명한 기술인 pix2pix, word2vec과 같은 이름들에서 아이디어를 얻었습니다.
사용자의 손글씨를 폰트로 제작할 수 있기 때문에 handwrite2font라고 부를 수 있을 텐데요.
이 팀의 핵심 기술인 handwrite2font, 그냥 부르면 어렵고 길기 때문에 트윅스 팀은 조금 더 쉽게 부르기 위해서 폰트와 발음이 비슷한 Fontto라는 이름을 채택했습니다.
아래 링크를 타고 가시면 Fontto의 홈페이지를 만나보실 수 있습니다.
[트윅스 팀 : 장상현 서상범 성준영 (왼쪽부터)]
트윅스 팀은 성준영, 장상현, 서상범 3명의 팀원으로 구성되어 있고, 개발과 인공지능(AI) 기술에 관심 있는 사람들이 모여서 열심히 서비스를 개발하고 있습니다.
트윅스 팀이 Fontto 서비스 개발을 시작하게 된 것은 비전 때문이었습니다.
앞서 설명한 것처럼 폰트 제작은 오래 걸리고, 비용도 최소 3~5천만 원이 드는 전문성이 짙은 분야입니다.
그러나 미디어와 기술의 발달로 시간이 갈수록 폰트가 필요한 곳은 늘고 있습니다.
이에 트윅스 팀은 전문 디자이너가 아니더라도, 일반인이 AI와 딥러닝 기술을 활용한 서비스를 사용해서 자신만의 개성이 있는 폰트를 제작하고,
이런 플랫폼을 통해 판매 및 공유를 할 수 있는 Fontto 서비스를 기획하였습니다!
서비스가 모두 구현되면 일반인 뿐 아니라, 연예인, 소설가 등 실제 필체와 유사한 폰트를 제작할 수 있어 다방면에 쓰일 수 있을 것 또한 기대할 수 있는 부분입니다.
실제 한글 폰트 제작은 시간이 오래 걸리는 작업입니다. 한글이 조합형 글자이기 때문입니다.
영어와는 달리 초성, 중성, 종성을 가지고 있어 그에 맞는 작업을 다 해주어야 합니다.
예를 들어 ‘가’, ‘고’, ‘각’에 쓰이는 자음은 모두 ‘ㄱ’이지만, 형태적으로는 모두 다른 'ㄱ'입니다.
이처럼 한글은 자음과 모음이 조합에 따라 디자인적으로 형태를 달리해야 합니다.
이런 이유로 사람이 직접 디자인해야 하는 경우의 수가 매우 많다. 국어사전에 명기된 표준 글자로 폰트 한 벌을 만들기 위해는 2350자가 필요합니다.
그러나, '뷁'과 같이 외계어 마냥 통용되지 않는 글자까지 고려하면 1만 1172자까지 만들어야 합니다.
반면 영어는 26자면 충분합니다. 이에 대소문자와 문장부호를 포함하면 200자 내외로도 폰트를 만들 수 있죠.
만약 일반인이 Fontto를 이용해서 폰트를 만들려면 2000자가 넘는 글자를 일일이 써야 할까요?
정답은 NO!입니다.
Fontto는 이러한 문제들을 해결하기 위해서 제작 과정을 단순화합니다.
최대 다섯 문장 정도로 주어진 문장을 사용자가 작성하면, 나머지 수천 개의 글자들은 머신 러닝 기술을 통해서 자동으로 생성합니다.
따라서 기존에 필요한 10000 가지 글자의 제작을 100가지 이하의 글자로, 3개월 이상 필요했던 작업이 수정 작업을 포함해 하루 미만으로 줄일 수 있게 되지요!
이러한 과정에서 폰트 제작에 필요했던 전문성을 대폭 낮추게 되고 일반인들이 제작에 참여할 수 있어 다양성이 늘어나고 가격이 낮아지는 효과가 발생합니다.
또 이렇게 만들어진 폰트의 라이선스를 제작자가 소유하게 되고 Fontto 공유 플랫폼을 통해 공유하여 마켓 활동에도 직접 참여할 수 있게 됩니다.
그럼 잠시 Fontto의 프로토타입 동작 영상을 보시고 관련 기술에 대해 알아보겠습니다.
자, 그러면 Fontto 서비스는 어떤 기술들이 모여 가능해 질까요? 크게 다음의 3가지 기술이 사용됩니다.
- OCR (Optical Character Recognition)
OCR은 광학 문자 인식으로 인쇄되거나 또는 손으로 쓴 글씨들을 컴퓨터로 인식하는 장치입니다.
OCR은 먼저 텍스트를 스캐닝 한 다음, 한 글자씩 분석하고, 일반적인 데이터 처리가 가능하도록 글자 이미지를 아스키와 같은 글자 코드로 번역하는 등의 작업들이 수반됩니다.
여기서 각 글자나 숫자를 식별하기 위하여, 스캐너로 읽어들인 이미지나 비트맵에 대해 밝은 부분과 어두운 부분으로 나뉘어 분석한 다음, 하나의 글자로 인식되면 아스키 코드로 변환하게 됩니다.
[OCR 사진]
- VAE (VariationalAutoEncoder)
VAE을 설명하기 전에 AutoEncoder부터 간단히 설명하겠습니다.
AutoEncoder는 그 이름에 맞게 먼저 데이터를 인코딩하고 그것을 디코딩합니다.
디코딩 된 데이터가 원본 데이터와 얼마나 일치하는지 비교하여 인코딩 된 데이터의 표현을 생성하는 것을 목표로 하고 있습니다.
이러한 모델의 일반적인 패턴은 뉴런 층의 수가 증가함에 따라 이미지에 대한 높은 수준의 특징을 학습하게 됩니다.
이처럼 AutoEncoder는 깊이가 증가함에 따라 더 복잡한 이미지 특징을 학습하는 경향이 있습니다.
이 문제를 해결하기 위해 본 듯한 이미지를 생성하게 하는 것이 VAE입니다.
[AutoEncoder 사진]
[VAE 사진, 왼쪽: VAE 적용, 오른쪽: 원본 ]
- GAN (Generative Adversarial Network)
GAN은 서로 대립하는 두 개의 네트워크를 만들고 대립 과정에서 훈련 타깃을 생성하는 방법을 알도록 학습시키는 구조입니다.
구별망과 생성망으로 이루어져 있는데 생성망은 최대한 실제 데이터와 비슷한 데이터를 생성해 내려고 하고,
구별망은 열심히 그 둘을 구별하려고 합니다. 간단한 예로 위조지폐범과 경찰의 대결 방식으로 이해하면 됩니다.
경찰은 계속 위조지폐를 잘 판별할 수 있어야 하고, 위조지폐 범은 계속 경찰을 더 잘 속일 수 있는 위조지폐를 만들어야 합니다.
즉 경쟁을 통해 배우는 인공지능 기술로 Label 없이 데이터 자체에서 지식을 얻는 ‘비지도 학습’입니다.
fontto 플랫폼에서 사용자가 만들고 싶은 폰트의 스타일을 정의하는데 두 가지 방법이 있습니다.
하나는 트윅스팀에서 제공하는 글꼴 입력도구를 이용하여 제시되는 문장을 플랫폼 내에서 직접 작성하는 방식이고 다른 하나는 사용자가 이전에 적어놓은 글씨를 사진으로 입력하는 방식입니다.
이중 두 번째 방식에서 OCR 기술을 이용하여 사용자가 입력한 사진에서 어느 부분이 어떤 글자인지 인식합니다.
트윅스 팀은 영상처리 오픈소스인 OpenCV와 문자인식 오픈소스 Tesseract를 활용하여 OpenCV의 text detection 기술을 이용하여
사진에서 글자가 있는 부분을 추출하고, 해당 글자와 손글씨를 학습시킨 Tesseract를 이용하여 인식하게 됩니다.
[왼쪽은 입력도구 사용, 오른쪽은 사진을 통한 글자 인식]
그다음 VAE 기술을 이용하여 글자들의 고유 특성을 추출하는 인코딩 과정이 들어갑니다.
서로 유사한 고유 특성을 지닌 자음, 모음을 분석하고 유사도를 바탕으로 분류합니다.
예를 들어 ‘가’와 ‘나’ 혹은 ‘ㅏ’와 ‘i' 사이의 유사도를 수치화하는 것입니다.
그 후 디코딩 과정으로 각 글자만의 고유 특성을 추출하여 해당 글자의 일반적인 형태를 구성합니다.
예를 들어 다양한 폰트의 ’가‘를 통해 글자 ’가‘의 일반적인 형태를 도출하게 됩니다.
앞에서 OCR로 인식한 사용자의 글자와 VAE를 통해 구성한 글자들의 일반적인 형태를 바탕으로 GAN 기술을 이용하여 사용자의 폰트를 제작하게 됩니다.
여기서 GAN은 사용자의 손글씨와 유사한 글자를 생성하는 학습 과정에 사용됩니다.
즉 VAE를 통해 생성한 일반적인 글자의 형태를 입력 데이터로 부여되고, 이는 GAN 학습을 통해 실제 사용자의 해당 글자와 유사한 결과를 생성하는 학습에 사용됩니다.
이를 위에서 설명한 경찰과 위조지폐범에 비유하면 일반적인 형태를 사용자의 글씨와 비슷하게 위조합니다. 이것을 경찰이 확인하면서 진짜 사용자의 글씨와 같을 때까지 학습을 진행합니다.
그 뒤에 사용자의 필체 특성이 추출되면 이것을 이용하여 모든 글자에 대해 사용자 필체를 반영한 글자를 생성할 수 있게 됩니다.
[Fontto의 진행 과정]
트윅스 팀은 OCR, VAE, GAN 기술을 이용하여 이번 프로젝트를 진행하고 있습니다.
아직 개발 초기 단계라 뒷부분 VAE와 GAN을 이용한 기술 개발이 한창 진행 중입니다.
여기서 GAN은 아직 연구가 활발하게 되고 있는 분야입니다.
GAN의 가장 큰 가치는 존재하지 않는 것을 생성할 수 있는 능력입니다.
예를 들어, 안경 쓴 남자 데이터에서 남자의 특성을 제외하고 여자의 특성을 반영하면 안경 쓴 여자 데이터를 생성할 수 있습니다.
간단한 예이지만 이 특성을 통해 VR에 활용될 가상환경 콘텐츠를 자동 생성할 수도 있으며, 번역과 같이 다양한 표현이 존재하는 곳에서도 활용할 수 있습니다.
쉽게 말해, 정답이 정해져 있지 않고, 표현의 다양성이 반영될 수 있는 결과물을 사용하는 모든 분야에서 GAN을 활용할 수 있습니다.
이런 기술을 이용한 SW Maestro 트윅스 팀의 발전할 프로젝트가 너무나 기대됩니다.
이상으로 SW Maestro 기술 블로그팀이었습니다.