"FINT조"의 두 판 사이의 차이
(→관련 기술의 현황 및 분석(State of art)) |
(→관련 기술의 현황 및 분석(State of art)) |
||
100번째 줄: | 100번째 줄: | ||
[[파일:fint009.png]] | [[파일:fint009.png]] | ||
− | ◇ CNN(Convolution Neural Networks) - 합성곱 신경망 | + | ◇ CNN(Convolution Neural Networks) - 합성곱 신경망 |
Convolutional Neural Networks의 약자로 Convolution(합성곱)과 Neural(신경망)을 결합해 만들어진 알고리즘으로, 우수한 성능을 내는 인공신경망 기법 중 하나이다. | Convolutional Neural Networks의 약자로 Convolution(합성곱)과 Neural(신경망)을 결합해 만들어진 알고리즘으로, 우수한 성능을 내는 인공신경망 기법 중 하나이다. | ||
126번째 줄: | 126번째 줄: | ||
[[파일:fint013.png]] | [[파일:fint013.png]] | ||
+ | ▶ Tools & Library | ||
+ | 가) tensorflow | ||
+ | - 기계학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리 | ||
+ | |||
+ | - 2015년에 오픈소스로 공개된 머신러닝 시스템이며 Python과 C++로 사용 가능 | ||
+ | |||
+ | - tensorflow 라이브러리를 기반으로 한 CNN 신경망을 구축한다. | ||
+ | 나) AlexNet | ||
+ | |||
+ | - AlexNet의 정의 | ||
+ | AlexNet은 2012년에 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회의 | ||
+ | 우승을 차지한 컨볼루션 신경망(CNN) 구조이다. AlexNet의 논문명은 "ImageNet Classification with | ||
+ | Deep Convolutional Neural Networks"이다. 이 논문의 첫번째 저자가 Alex Khrizevsky이기 때문에 | ||
+ | 그의 이름을 따서 AlexNet이라고 부른다. | ||
+ | |||
+ | - 구 조 | ||
+ | |||
+ | [[파일:fint014.png]] | ||
+ | |||
+ | - Layer별 구성 | ||
+ | AlexNet은 8개의 Layer로 구성되어 있다. 5개의 Convolution Layer와 3개의 full-connected Layer로 | ||
+ | 구성되어 있다. AlexNet에 입력되는 것은 224 x 224 x 3 이미지다.(224 x 224 Size Color Image) | ||
+ | |||
+ | 1) 첫번째 Layer(Convolution): 96개의 11 x 11 x 3 사이즈 필터커널로 입력 영상을 Convolution 한다. | ||
+ | stride를 4로, zero-padding은 사용하지 않는다. zero-padding은 특성맵의 사이즈가 축소되는 것을 | ||
+ | 방지하기 위해, 또는 축소되는 정도를 줄이기 위해 영상의 가장자리 부분에 0을 추가한다. 결과적으로 | ||
+ | 55 x 55 x 96의 Feature-map이 산출된다. 그 다음 3 x 3 overlapping max pooling이 stride 2로 | ||
+ | 시행된다. 그 결과 27 x 27 x 96 Feature-map을 갖게 된다. 그 다음에는 수렴속도를 높이기 위해 local | ||
+ | response normalization이 시행된다. local response normalization은 Feature-map의 차원을 변화시키지 | ||
+ | 않으므로, 특성맵의 크기는 27 x 27 x 96으로 유지된다. | ||
+ | |||
+ | 2) 두번째 Layer(Convolution): 256개의 5 x 5 x 48 커널을 사용하여 Convolution 한다. stride는 1, | ||
+ | zero-padding은 2로 설정한다. 따라서 27 x 27 x 256 Feature-map을 얻게 된다. 그 다음에 | ||
+ | 3 x 3 overlapping max pooling을 stride 2로 시행한다. 그 결과 13 x 13 x 256 Feature-map을 | ||
+ | 얻게 된다. 그 후 local response normalization이 시행되고, Feature-map의 크기는 13 x 13 x | ||
+ | 256으로 그대로 유지된다. | ||
+ | |||
+ | 3) 세번째 Layer(Convolution): 384개의 3 x 3 x 256 커널을 사용하여 Convolution 한다. stride와 | ||
+ | zero-padding 모두 1로 설정한다. 따라서 13 x 13 x 384 Feature-map을 얻게 된다. | ||
+ | |||
+ | 4) 네번째 Layer(Convolution): 384개의 3 x 3 x 192 커널을 사용해서 Convolution 한다. stride와 | ||
+ | zero-padding 모두 1로 설정한다. 따라서 13 x 13 x 384 Feature-map을 얻게 된다. | ||
+ | |||
+ | 5) 다섯번째 Layer(Convolution): 256개의 3 x 3 x 192 커널을 사용해서 Convolution 한다. stride와 | ||
+ | zero-padding 모두 1로 설정한다. 따라서 13 x 13 x 256 Feature-map을 얻게 된다. 그 다음에 | ||
+ | 3 x 3 overlapping max pooling을 stride 2로 시행한다. 그 결과 6 x 6 x 256 Feature-map을 | ||
+ | 얻게 된다. | ||
+ | |||
+ | 6) 여섯번째 Layer(Fully-connected): 4096개의 뉴런으로 구성된다. | ||
+ | |||
+ | 7) 일곱번째 Layer(Fully-connected): 4096개의 뉴런으로 구성된다. | ||
+ | |||
+ | 8) 여덟번째 Layer(Fully-connected): 1000개의 뉴런으로 구성된다. 1000개의 클래스에 속할 확률을 | ||
+ | 나타내기 위해 softmax 함수가 적용된다. | ||
+ | |||
+ | - AlexNet의 상세 | ||
+ | 1) ReLU 함수: Activation Function으로 ReLU(rectified linear unit) 함수를 사용한다. 같은 정확도를 | ||
+ | 유지하면서 Tanh을 사용하는 것보다 6배나 빠른 효율을 보여주기 때문에 AlexNet 이후에 사용하는 | ||
+ | Activation Function으로 ReLu를 사용하는 것이 선호된다. | ||
+ | |||
+ | [[파일:fint015.png]] | ||
+ | |||
+ | 2) dropout: 과적합(over-fitting)을 막기 위해 dropout을 사용한다. dropout은 fully-connected layer의 | ||
+ | 뉴런 중 일부를 생략하면서 학습을 진행하는 것이다. 몇몇 뉴런의 값을 0으로 바꾼다. 이 뉴런들은 | ||
+ | forward pass와 back propagation에 아무런 영향을 미치지 않는다. dropout은 학습할때만 적용되며, | ||
+ | 테스트에는 모든 뉴런을 사용한다. | ||
2019년 6월 18일 (화) 10:26 판
프로젝트 개요
기술개발 과제
국문 : CNN을 이용하여 한글 폰트를 식별하고 GAN을 이용하여 폰트를 생성
영문 : Discriminate Hangeul(Korean) font in image using CNN and create New Hangeul(Korean) Font using GAN
과제 팀명
FINT (Find Font)
지도교수
김민호 교수님
개발기간
2019년 3월 ~ 2019년 6월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 2013920012 김범수(팀장)
서울시립대학교 컴퓨터과학부 2013920041 윤재상
서울시립대학교 컴퓨터과학부 2013920059 정희탁
서울시립대학교 컴퓨터과학부 2013920068 황두욱
서론
개발 과제의 개요
개발 과제 요약
◇ OCR(광학 문자 인식)을 이용하여 글자를 인식하고, CNN(Convolutional Neural Networks) 모델을 사용하여 해당 글자의 폰트를 식별한다.
◇ 사용자가 찾고 싶은 폰트의 이미지를 페이지에 업로드 한다.
◇ 서버에서 OCR을 이용하여 글자를 인식하고, 전처리 작업을 통하여 적절하게 이미지를 자른다.
◇ 학습한 CNN 모델을 기반으로 이미지에서 폰트를 식별한다.
◇ Accuracy가 높은 상위 5개 폰트에 대해 화면에 출력한다.
개발 과제의 배경
◇ 과거에는 데이터간의 관계를 분석하고 모델식을 만드는 데이터 마이닝 기법 중 하나인 회귀분석(Regression Analysis)을 주로 사용했다. 이는 정확성이 상대적으로 떨어지고 모델 정교화를 위해 분석가의 노력이 많이 필요했고, 그래서 등장한 것이 인공신경망(Artificial Nerual Network)이다. 인공신경망은 사람의 뇌를 모방한 방법으로 데이터를 입력하면 자동으로 복잡한 수학식을 기반으로 모델링을 하는 방법이다. 인공신경망을 가지고 이미지를 분석하는 경우 방법은 Single Linear Classifiers, K-Nearest Neighbors, SVMs, Multi Layer Classifiers, Convolutional Neural Network(CNN) 등이 있다. 숫자 필기 데이터셋인 Mnist를 이용한 Performance를 측정해보면 아래와 같이 CNN은 우수한 성능을 보여준다.
◇ 최근에는 두 개의 인공신경망을 사용하여 보다 정교한 결과물을 생성하는 GAN 모델링에 대한 연구가 활발하게 진행되고 있다. GAN의 A는 Adversarial의 약자로 ‘적대적인’ 이라는 뜻을 가지고 있는데, 하나의 인공신경망에는 Fake data를 생성하고, 다른 하나의 인공신경망에는 Real data를 가지고 가짜 데이터와 진짜 데이터를 구별할 수 있는 파라미터를 찾고, 이를 기반으로 Fake data가 fake인지 real인지를 식별한다. 최종적으로 Fake data가 Real data로 식별이 될 때 까지 적대적 학습(Adversarial Training)을 진행하여 그럴듯한 가짜를 만들어 낼 수 있다.
◇ 알파벳은 소문자와 대문자를 합쳐 52개로 학습이 용이하지만 한글의 경우 유니코드 2.0에 등록된 개수만 11,172개가 되기 때문에 학습에 어려움이 있으며 이러한 이유로 인해 한글폰트를 찾아주는 서비스는 제공되지 않고 있다.
◇ 이미 존재하는 폰트와 대조하는 방식의 OCR(Optical character recognition)은 알파벳의 경우 높은 인식률을 보이지만 한글의 경우에는 높은 해상도로 스캔하지 않으면 인식률이 떨어지며, 필기체의 경우 매우 낮은 인식률을 보여준다. OCR을 기반으로 사용하되 전처리에 대한 부분은 따로 알고리즘을 구현하여 Performance를 향상시켜 차별화를 둔다.
◇ 현재 한글폰트를 찾는 경우에는 ‘한글마을’을 이용하여 원하는 문구의 가장 비슷한 폰트를 직접 찾는 번거로움이 있다. 이 문제는 딥러닝을 이용하여 이를 해결하여 가장 비슷한 폰트를 찾아 해결하며 Youtube, 개인방송, 지상파 방송의 영상편집에 이용할 수 있다.
◇ CNN을 사용하여 폰트를 식별하는 것에 그치지 않고 식별하지 못한 데이터셋을 기반으로 GAN 모델을 이용하여 학습시켜 새로운 폰트를 만들어 새로운 가치를 창출한다.
개발 과제의 목표 및 내용
◇ OCR을 이용하여 글자를 인식하고, 전처리 작업을 통하여 적절하게 이미지를 잘라준다.
◇ 가공된 이미지 세트에 여러 노이즈를 발생시켜 학습의 효율을 높여준다.
◇ CNN 모델을 기반으로 학습하여 폰트를 식별하여 최적의 파라미터를 찾는다.
◇ 최적화된 파라미터를 이용하여 사용자가 요청한 폰트와 가장 근접한 상위 5개의 폰트를 출력한다.
◇ 유료 폰트와 제휴하여 구매 대행을 하는 등 찾을 수 있는 폰트의 개수를 늘려간다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
◇ OCR(Optical Character Recognition) – 광학 문자 인식
인공지능 모델을 만들기 위해서 데이터 전처리는 필수적이고 모델의 성능과 밀접한 관련이 있다. 한 설문조사에서는 인공지능 개발자의 80% 시간을 데이터를 수집 및 전처리에 사용한다고 한다. 지루하고 반복 작업의 연속이기 때문에 시간이 많이 들어가지만 가장 중요한 작업이기 때문에 초반에 시간을 들여서 개발하는 것이 중요하다.
전처리 과정에서 사용할 기술인 OCR은 이미지에서 한 글자 별로 나눠주고 그 글자가 무엇인지 분류하는 역할을 한다 . 예를 들어 사용자가 나눔 고딕의 ‘가’라는 이미지를 입력한 경우 OCR은 ‘가’라는 글자를 찾아서 경계를 나눠주고 해당 이미지가 어떤 글자인지 판별하는 작업을 담당하다. 하지만 한 가지 문제점은 OCR의 성능이 생각보다 완벽하지 않다는 점이다. OCR 오픈 소스인 tesseract를 사용하는 경우 영어는 대략 95%의 정확도를 자랑한다. 하지만 한글의 경우 인식률이 매우 낮다. 그 이유는 영어는 한 글자가 대부분 하나의 덩어리로 이루어져 있어, 알파벳 단위로 이미지를 잘라서 인식 하기 때문에 정확도가 상대적으로 높은 반면 한글의 경우 자음, 모음, 받침 글자로 구분되어 한 글자 별로 정확하게 이미지를 자르기 쉽지 않다.
어떻게 입력된 이미지에서 글자별로 자르고, 해당 글자가 무엇인지 판단하는 작업이 CNN모델의 정확도에 가장 큰 영향을 준다. ▶ Tools & Library
가) Tesseract-OCR
- C++로 만들어진 오픈소스 OCR Engine
- 2005년에 HP에 의해 오픈소스화 되었으며, 2006년 이후로 Google에 의해 개발
- 사용자가 요청한 이미지에서 글자를 뽑아낼 때 사용한다.
나) openCV
- Image를 분석할 목적으로 만들어진 프로그래밍 라이브러리
- 입력받은 Image에서 글자부분을 Compact하게 추출할 때 사용한다.
- Bounding Box(Contour Algorithm 사용)
◇ CNN(Convolution Neural Networks) - 합성곱 신경망
Convolutional Neural Networks의 약자로 Convolution(합성곱)과 Neural(신경망)을 결합해 만들어진 알고리즘으로, 우수한 성능을 내는 인공신경망 기법 중 하나이다. 일반적으로 분류작업은 ‘특징추출 + 분류 = 결과’ 의 매커니즘으로 작동하는데 CNN은 특징추출을 Convolution을 이용해서, 분류는 Neural Networks를 이용해서 결과를 나타낸다.
Convolution을 이용하여 특징을 추출하는 방법은 다음과 같은 방식으로 진행한다.
왼쪽의 사진으로부터 빛의 삼원색(RGB : Red, Green, Blue)을 추출하여 오른쪽과 같이 정형화를 진행한다.
검은색을 1로 나타내고, 흰색을 0으로 나타내면 왼쪽과 같은 Matrix가 완성된다. 이것이 Input이 된다. 여기에 가중치를 가지는 필터와 함께 Convolution(합성곱)을 통하여 특징을 추출한다.
위와 같이 필터를 계속 이동하면서 Input의 해당영역에 Filter값을 곱하여 합한 결과를 나타내면 Feature Output이 된다. 필터는 학습마다 다른 필터를 사용할 수 있기 때문에 여러 가지 경우의 특징이 추출된다. 추출한 특징값을 Pooling Layer를 통하여 Subsampling을 진행한다. Subsampling을 진행하면 Overfitting을 방지하고 모델의 파라미터의 수를 감소시켜준다. Pooling의 방법은 대푯값 선정에 따라 구분하는데, Max pooling(최대값)과 Average pooling(평균값) 등이 있다. 아래는 Max pooling을 이용하여 Subsampling을 하는 예시이다.
Convolution을 통해 특징을 추출하고 Subsampling을 통해 최소화하여 1차원의 행렬로 만들어Fully-Connected layer를 통하여 최종적으로 분류하는 것이 CNN이다. CNN을 간단하게 도식화하여 나타내면 아래와 같다.
▶ Tools & Library
가) tensorflow
- 기계학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리
- 2015년에 오픈소스로 공개된 머신러닝 시스템이며 Python과 C++로 사용 가능
- tensorflow 라이브러리를 기반으로 한 CNN 신경망을 구축한다. 나) AlexNet
- AlexNet의 정의 AlexNet은 2012년에 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회의 우승을 차지한 컨볼루션 신경망(CNN) 구조이다. AlexNet의 논문명은 "ImageNet Classification with Deep Convolutional Neural Networks"이다. 이 논문의 첫번째 저자가 Alex Khrizevsky이기 때문에 그의 이름을 따서 AlexNet이라고 부른다.
- 구 조
- Layer별 구성 AlexNet은 8개의 Layer로 구성되어 있다. 5개의 Convolution Layer와 3개의 full-connected Layer로 구성되어 있다. AlexNet에 입력되는 것은 224 x 224 x 3 이미지다.(224 x 224 Size Color Image)
1) 첫번째 Layer(Convolution): 96개의 11 x 11 x 3 사이즈 필터커널로 입력 영상을 Convolution 한다. stride를 4로, zero-padding은 사용하지 않는다. zero-padding은 특성맵의 사이즈가 축소되는 것을 방지하기 위해, 또는 축소되는 정도를 줄이기 위해 영상의 가장자리 부분에 0을 추가한다. 결과적으로 55 x 55 x 96의 Feature-map이 산출된다. 그 다음 3 x 3 overlapping max pooling이 stride 2로 시행된다. 그 결과 27 x 27 x 96 Feature-map을 갖게 된다. 그 다음에는 수렴속도를 높이기 위해 local response normalization이 시행된다. local response normalization은 Feature-map의 차원을 변화시키지 않으므로, 특성맵의 크기는 27 x 27 x 96으로 유지된다.
2) 두번째 Layer(Convolution): 256개의 5 x 5 x 48 커널을 사용하여 Convolution 한다. stride는 1, zero-padding은 2로 설정한다. 따라서 27 x 27 x 256 Feature-map을 얻게 된다. 그 다음에 3 x 3 overlapping max pooling을 stride 2로 시행한다. 그 결과 13 x 13 x 256 Feature-map을 얻게 된다. 그 후 local response normalization이 시행되고, Feature-map의 크기는 13 x 13 x 256으로 그대로 유지된다.
3) 세번째 Layer(Convolution): 384개의 3 x 3 x 256 커널을 사용하여 Convolution 한다. stride와 zero-padding 모두 1로 설정한다. 따라서 13 x 13 x 384 Feature-map을 얻게 된다.
4) 네번째 Layer(Convolution): 384개의 3 x 3 x 192 커널을 사용해서 Convolution 한다. stride와 zero-padding 모두 1로 설정한다. 따라서 13 x 13 x 384 Feature-map을 얻게 된다.
5) 다섯번째 Layer(Convolution): 256개의 3 x 3 x 192 커널을 사용해서 Convolution 한다. stride와 zero-padding 모두 1로 설정한다. 따라서 13 x 13 x 256 Feature-map을 얻게 된다. 그 다음에 3 x 3 overlapping max pooling을 stride 2로 시행한다. 그 결과 6 x 6 x 256 Feature-map을 얻게 된다.
6) 여섯번째 Layer(Fully-connected): 4096개의 뉴런으로 구성된다.
7) 일곱번째 Layer(Fully-connected): 4096개의 뉴런으로 구성된다.
8) 여덟번째 Layer(Fully-connected): 1000개의 뉴런으로 구성된다. 1000개의 클래스에 속할 확률을 나타내기 위해 softmax 함수가 적용된다.
- AlexNet의 상세 1) ReLU 함수: Activation Function으로 ReLU(rectified linear unit) 함수를 사용한다. 같은 정확도를 유지하면서 Tanh을 사용하는 것보다 6배나 빠른 효율을 보여주기 때문에 AlexNet 이후에 사용하는 Activation Function으로 ReLu를 사용하는 것이 선호된다.
2) dropout: 과적합(over-fitting)을 막기 위해 dropout을 사용한다. dropout은 fully-connected layer의 뉴런 중 일부를 생략하면서 학습을 진행하는 것이다. 몇몇 뉴런의 값을 0으로 바꾼다. 이 뉴런들은 forward pass와 back propagation에 아무런 영향을 미치지 않는다. dropout은 학습할때만 적용되며, 테스트에는 모든 뉴런을 사용한다.
- 특허조사
◇ 한글 문서에 포함된 문자를 인식하기 위한 방법, 장치 및 컴퓨터 판독 가능한 기록 매체 (1010152330000)
이미지로 표현되는 한글 문서에 대해 문자 인식을 수행하기 위한 방법, 장치 및 컴퓨터 판독 가능한 기록 매체가 개시된다. 본 발명에 따르면, 이미지 형식의 한글 문서에 포함된 문자를 인식하기 위한 방법으로서, (a) 이미지에 포함된 문자를 대상으로, 다른 성분과 접합되어 있지 않은 일 이상의 독립된 성분들을 추출하는 단계, (b) 상기 추출된 독립된 성분 중 자소에 해당되는 성분을 인식하는 단계, (c) 상기 인식된 자소를 기초로 하여 1차 문자 인식을 수행하는 단계, (d) 상기 1차 문자 인식 결과로부터 상기 한글 문서에 대한 문서 정보를 파악하는 단계, 및 (e) 상기 파악된 문서 정보를 기초로 상기 1차 문자 인식의 대상이 되지 못한 문자들에 대해 2차 문자 인식을 수행하는 단계를 포함하는 방법이 제공된다. 본 발명에 따르면, 문자 분할의 정확도 향상과 문자 인식의 속도 향상을 꾀할 수 있다.
◇ System for selecting, distributing, and selling fonts (U.S. 6,853,980 B1)
컴퓨터화된 전자상거래 글꼴 서버 시스템은 사용자가 하나 이상의 글꼴을 선택할 수 있도록 한다. 시스템은 사용자가 다차원 속성 값으로 정의된 글꼴을 선택할 수 있게 해준다. 시스템은 이미지 내 글자가 있는 영역을 표시하여 사용자가 영역을 선택할 수 있게 한다. 선택한 영역 내 글자의 글꼴과 유사한 글꼴들을 보여주고, 사용자는 글꼴을 선택할 수 있다. 선택한 글꼴을 클라이언트의 운영체제가 사용하기에 적합한 형태로 제공한다.
◇ CHARACTER IDENTIFICATION THROUGH GLYPH DATA MATCHING (U.S. 20110188761 A1)
영구 데이터 저장소에 문자 식별 데이터가 저장된다. 문자 식별 데이터는 하나 이상의 글꼴의 하나 이상의 문자에 대해 (a) 문자에 대한 글리프 데이터 (b) 코드 포인트 데이터와 문자를 연관시키는 데이터로서, 여기서 글리프 데이터는 문자를 출력 장치에 렌더링하는 방법을 설명하고 코드 포인트 데이터는 컴퓨터화된 엔티티에 대한 ID를 식별한다. 문자. PDF 문서와 같은 내장형 글꼴 문서가 특정 문자에 대한 코드 포인트 데이터 세트를 포함하지 않는다고 판단되면, 문자 식별 데이터를 참조하여 특정 문자의 신원을 결정한다. 이렇게 해서 기계는 내장된 글꼴 문서에 있는 문자를 인식할 수 있으며, 내장된 글꼴 문서에 색인화 또는 검색 등의 기능을 수행할 수 있다.
◇ 특허 현황
2019년 5월 기준 글꼴 관련 특허는 한국 15,300여개, 미국 92,000여개, 유럽 63,000여개, 일본 23,000여개가 존재한다. 그 중 대부분은 OCR관련 특허이고 머신러닝을 활용한 특허는 소수이다. 머신러닝을 이용해 글꼴을 식별하거나 생성하는 특허는 영어 글꼴에 대해서는 존재하지만, 한글 글꼴에 대해서는 전무하다.
- 특허 전략
◇ 우리가 개발하려는 한글 글꼴 식별 및 생성 시스템은 여러 오픈소스를 활용해 개발된다. 현재 이런 시스템에 대한 특허가 존재하지 않기 때문에, 특허 등록을 하게 되면 긍정적인 효과를 기대할 수 있다. 그러나 오픈소스를 활용해 개발하기 때문에 특허 등록이 가능한 것인지 알 수 없다. 따라서 시스템이 성공적으로 개발된다면, 특허 관련 전문가에게 자문하여 알아본 뒤 가능하다면 특허 등록을 할 계획이다.
- 기술 로드맵
◇ 학습 · 인식
가) 흐름도
나) CNN Model
◇ 폰트 생성
가) 흐름도
나) GAN Model
시장상황에 대한 분석
- 경쟁제품 조사 비교
◇ WhatTheFont
WhatTheFont는 미국 디지털 폰트 유통 업체인 MyFonts에서 제공하는 폰트 인식 서비스이다. 사용자가 글자가 있는 PNG나 JPG 파일을 업로드하면, 문자인식(OCR) 기술을 이용해 글자를 인식한다. 인식된 글자가 출력되고 사용자가 식별하려는 문자를 클릭하면, WhatTheFont는 딥러닝을 이용해 133,000여 개의 폰트 중 유사도가 높은 폰트들을 찾아주는 서비스를 제공한다. 현재 다른 언어는 지원하지 않고, 영어만 지원하고 있다.
◇ 한글마을
한글마을은 우리나라 최초의 한글 글꼴 등록시스템으로, 현존하는 모든 한글 글꼴을 등록 및 검색할 수 있는 서비스이다. 2019년 3월 기준으로 1700개의 한글 폰트를 검색할 수 있고, 원하는 글자를 입력하면 입력된 글자를 1700개의 폰트로 보여주며 사용자는 그중 원하는 폰트를 선택해 구매 및 다운로드할 수 있다.
◇ Adobe Photoshop CC 글꼴인식
Adobe사 이미지 편집 프로그램인 Photoshop의 CC 2015.5 버전부터 추가된 기능이다. 이미지를 불러온 뒤 글꼴 인식 기능을 실행하여 인식하려는 글자가 있는 이미지의 일부분을 선택한다. 머신러닝 기술을 이용해 Photoshop에 내장된 글꼴과 Adobe Typekit에서 제공되는 글꼴 중 유사한 글꼴을 찾아 사용자에게 보여준다. 아직은 한글은 지원되지 않고 로마어/라틴어 및 일본어만 지원하고 있다.
◇ GitHub – GAN을 활용한 한글 폰트 제작 프로젝트
GitHub의 periannath라는 유저가 개발한 한글 폰트 제작 프로젝트이다. 제공된 폰트 템플릿에 맞춰 글자를 작성한 뒤 스캔하여 학습 데이터로 이용한다. 템플릿에는 399자만 있기 때문에 완성형 한글 글자 수인 11172자를 생성하기에 input 개수가 부족하다. 이를 해결하기 위해 여러 개의 Copyleft 폰트로 학습된 모델을 생성한 뒤 transfer learning을 통해 399자를 학습시키고 그 모델을 통해 폰트를 생성하는 프로젝트이다.
◇ University of California, Berkeley AI Research LAB – MC-GAN for Font Style Transfer
BAIR(Berkeley Artificial Intelligence Research) Lab의 블로그에 발표된 영어 폰트 제작 기술이다. BAIR 연구진은 multi-content GAN(MC-GAN)이라는 새로운 종류의 GAN 모델을 디자인했다. MC-GAN은 아래 이미지와 같이 7~8자의 알파벳을 input으로 이용하면, 폰트를 만들어내 한 문장을 만들 수 있다.
다만, 26개의 알파벳으로 구성된 영어와 달리 11172자의 한글에 이 기술을 적용하면 사용자가 원하는 폰트 제작이 불가능할 것이라 기대된다.
- 마케팅 전략 제시
◇ WhatTheFont와 Photoshop 글꼴 인식 서비스는 한국어를 지원하지 않으므로, 우리 제품은 시장에서 한국어를 최초로 지원하는 서비스임을 강조하며 홍보한다.
◇ 한글마을은 한글을 지원하지만, 인공신경망을 이용한 이미지 인식이 아닌 사용자가 직접 찾아봐야 하는 불편함을 갖고 있다. 사용자에게 편리한 서비스를 제공하는 점에 중점을 둔다.
◇ 유튜브를 통한 광고 및 바이럴 마케팅을 이용해 문서 및 PPT 자료 작성이 잦은 20~30대 고객층을 중심적으로 노린다.
개발과제의 기대효과
기술적 기대효과
◇ 고객이 제품을 이용하기 위해 입력한 이미지를, 필요시 추가 표본으로 사용하여 학습시킴으로써 시간이 지날수록 신경망의 정확도 상승을 기대할 수 있다.
◇ 이미지에서 원하는 폰트를 발견했을 때, 2000개에 달하는 한글 폰트를 비교하며 찾아낼 필요가 사라져 이용자의 시간을 절약할 수 있다.
◇ 폰트 검색 기능으로 일치하는 폰트를 식별하지 못하면, 폰트 제작 기능을 통해 새로운 폰트를 제작하여 이용자의 욕구를 충족시킬 수 있다.
◇ 웹 기반 서비스를 이용함으로써 이용자에게 편리한 접근성을 제공할 수 있다.
경제적, 사회적 기대 및 파급효과
◇ 문서 및 발표 자료의 목적에 따른 적절한 폰트 사용으로 이용자의 목표 달성을 도모할 수 있다.
◇ 폰트 검색에 편리함을 제공해 이용자가 많아지면, 국내 유료 폰트 제작자의 매출 상승을 기대할 수 있다.
◇ 유료 폰트 시장의 활성화에 기여하고, 폰트 제작자를 떠오르는 인기 직업군으로 만들 수 있다
◇ 식별에 실패한 폰트를 기반으로 새로운 폰트를 제작하여 이용자가 폰트 제작자가 되고, 뜻밖의 수익창출을 이끌어낼 수 있다.
기술개발 일정 및 추진체계
개발 일정
내용
구성원 및 추진체계
내용
설계
설계사양
제품의 요구사항
내용
설계 사양
내용
개념설계안
내용
이론적 계산 및 시뮬레이션
내용
상세설계 내용
내용
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
내용
포스터
내용
관련사업비 내역서
내용
완료작품의 평가
내용
향후계획
내용
특허 출원 내용
내용