SlideShare a Scribd company logo
모바일에서
인식하기
2019.02.23. KCD
안녕하세요, 미정입니다 :)
iOS 모바일 개발자이구요,
취미는 AI입니다 🤗
네모 동그라미 세모
손 그림 도형 예측 in iOS
를 예측하고싶어요
사실 저는
MNIST
EMNIST
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
모바일에서
인식하기
OCR
(Optical Character Recognition)
광학기술을 이용한 문자 인식
Optical character recognition - Wikipedia
CamCard
Code1System
M2M Coding
OCR
단계
Pre-Processing
Recognition Post-Processing
Segmentation
OCR
단계
Pre-Processing
Recognition Post-Processing
Segmentation
Recognition
Pattern Matching
Feature Extraction
Classification
Pattern Matching
H
Arial
Helvetica
Times New Roman
Menlo
Futura Chalkboard
Feature Extraction
http://www.how-ocr-works.com
OCR
문제 정의
데이터 셋
모델 학습
모델 변환
모바일 적용
문제 정의
데이터 셋
모델 학습
모바일 적용
모델 변환
총 11,172개
초성(19개)
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
중성(21개)
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
종성(27개)
ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
초성 * 중성 = 19 * 21 = 399
초성 * 중성 * 종성 = 19 * 21 * 27 = 10,773
http://advent.perl.kr/2016/2016-12-14.html
위대한 한국어
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
980
980개 음절
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
https://developer.ibm.com/kr/journey/create-a-mobile-handwritten-hangul-translation-app/
True Type Font(*.ttf)
케
32 x 32 공간 생성 ttf로 글자 쓰기
케
.jpg 저장
케 케
케 케
IMAGE_WIDTH = 32
IMAGE_HEIGHT = 32
for font in fonts:
image = Image.new('L', (IMAGE_WIDTH, IMAGE_HEIGHT), color=255)
drawing = ImageDraw.Draw(image)
w, h = drawing.textsize(character, font=font)
font = ImageFont.truetype(font, 48)
drawing.text(
((IMAGE_WIDTH-w)/2, (IMAGE_HEIGHT-h)/2),
“ ”,
fill=(0),
font=font
)
image.save(file_path, 'JPEG')
python 3.6.5
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
46개 필기체 폰트
사용폰트 : 이순신, 고양시, TvN, 제주 한라산, J신영복, KCC 은영, KCC 김훈, 포천시 막걸리, 산돌미생, 앵무부리, 다래손글씨, DX3학년1반, DX하루, DX
베이글, DX클래식, DX둥글레, DX설레임, DX깜찍발랄, DX경필명조, DX밀키캔디, DX영화자막, DX오렌지나무, DX슈가플럼 네이버 나눔 펜, 상상신비,
Tae흘림 +
46개 필기 폰트 + 미정필기
46개 필기 폰트 + 미정필기
총 46,060개
한글 손 글씨 이미지
train_generator = ImageDataGenerator(rescale=1./255,
rotation_range=15,
width_shift_range=0.3,
height_shift_range=0.3,
shear_range=0.3,
zoom_range=[0.7, 1.3])
데이터 부풀리기
python 3.6.5
keras 2.2.4
문제 정의
데이터 셋
모델 학습
모바일 적용
모델 변환
980 class
32pixel x 32pixel
총 46,060개
- 훈련 셋 : 36,848(80%)
- 검증 셋 : 9,212(20%)
문제 정의
데이터 셋
모델 학습
모델 변환
모바일 적용
keras 2.2.4 tf 1.10.0
python 3.6.5jupyter 1.0.0
model = Sequential()
model.add(Convolution2D(32, (3, 3), padding='same',
input_shape=X_train.shape[1:]))
model.add(Activation('relu'))
model.add(Convolution2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Dropout(0.50))
model.add(Convolution2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
model = Sequential()
model.add(Convolution2D(32, kernel_size=(5, 5),
activation='relu',
input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
32pixel x 32pixel
46,060개 이미지
500 epoch
model = Sequential()
model.add(Convolution2D(32, kernel_size=(5, 5),
activation='relu',
input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Mac OS
CPU 2.9GHz, i5
RAM 8G
No GPU!!
4
model = Sequential()
model.add(Convolution2D(32, kernel_size=(5, 5),
activation='relu',
input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Tesla K80
3
Tesla K80CPU 2.9GHz, i5
380s/epoch 64s/epoch
<< 6배속
3
3
GPU - AMD Radeon Pro 460
2
AMD Radeon Pro 460
loss ‘nan’ error
2
정확도
손실률
정확도 63.33%
model1.h5
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1 101 201 301
tarin_acc val_acc
0
1
2
3
4
5
6
1 101 201 301 401
train_loss val_loss
정확도
손실률
정확도 85.35%
model2.h5
문제 정의
데이터 셋
모델 학습
모델 변환
모바일 적용
정확도 85.35%
model2.h5
정확도 63.33%
model1.h5
문제 정의
데이터 셋
모델 학습
모델 변환
모바일 적용
model.h5
model.mlmodel
Xcode Swiftpythonnotebook
keras 2.2.4 coremltools
python 3colab netebook
coreml_model = coremltools.converters.keras.convert
(loaded_model,
input_names ='image',
image_input_names = 'image',
class_labels = './labels/980-common-hangul.txt')
coreml_model.save(‘hangul-classification-v1.mlmodel')
import coremltools
from keras.models import load_model
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
문제 정의
데이터 셋
모델 학습
모델 변환
모바일 적용
문제 정의
데이터 셋
모델 학습
모델 변환
모바일 적용
손 글씨 앨범 사진
위치에 따른 인식률 차이
클래스에 없는 음절 segmentation
iOS 모바일에서 한글 손글씨 인식하기(with Keras)
ninevincentg@gmail.com
전미정
자세한 코드는 여기서 볼 수 있어요. https://github.com/MijeongJeon/KoreanClassification_Keras_Coreml

More Related Content

PDF
ISO 27001
PDF
Pembuatan distro linux untuk pengembangan konsep desain grafis dalam proses p...
PPTX
The 3 Must-Know Motions for Meeting Success with Debi Wilcox Episode 1
PDF
LGPD | VISÃO GERAL | JORNADA DE ADEQUAÇÃO | SGPD - SISTEMA DE GESTÃO DE PROTE...
DOCX
Toan finish
PDF
CMS dotnetnuke
PDF
Deep Learning with Python 2-1
ISO 27001
Pembuatan distro linux untuk pengembangan konsep desain grafis dalam proses p...
The 3 Must-Know Motions for Meeting Success with Debi Wilcox Episode 1
LGPD | VISÃO GERAL | JORNADA DE ADEQUAÇÃO | SGPD - SISTEMA DE GESTÃO DE PROTE...
Toan finish
CMS dotnetnuke
Deep Learning with Python 2-1

Similar to iOS 모바일에서 한글 손글씨 인식하기(with Keras) (20)

PDF
배워봅시다 머신러닝 with TensorFlow
PDF
스마트폰 위의 딥러닝
PDF
딥러닝을 위한 Tensor flow(skt academy)
PDF
Tensorflow for Deep Learning(SK Planet)
PDF
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
PDF
Tensorflow로 플로이드 클라우드에서 합성곱 신경망 (CNN) 구현해보기
PPTX
Deep learningwithkeras ch3_1
PDF
Deep learning framework 제작
PPTX
랩탑으로 tensorflow 도전하기 - tutorial
PDF
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [기린그림 팀] : 사용자의 손글씨가 담긴 그림 일기 생성 서비스
PDF
Alexnet paper review
PDF
요즘 유행하는 AI 나도 해보자 (feat. CoreML)
PDF
텐서플로로 OCR 개발해보기: 문제점과 문제점과 문제점
PDF
Just point it
PPTX
180525 mobile visionnet_hanlim_extended
PDF
위성관측 데이터 활용 강수량 산출 AI 경진대회 3위 수상작
PPTX
Enliple BERT-Small을 이용한 KorQuAD 모델
PDF
2017 tensor flow dev summit
PPTX
Keras
PPTX
Openface
배워봅시다 머신러닝 with TensorFlow
스마트폰 위의 딥러닝
딥러닝을 위한 Tensor flow(skt academy)
Tensorflow for Deep Learning(SK Planet)
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
Tensorflow로 플로이드 클라우드에서 합성곱 신경망 (CNN) 구현해보기
Deep learningwithkeras ch3_1
Deep learning framework 제작
랩탑으로 tensorflow 도전하기 - tutorial
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [기린그림 팀] : 사용자의 손글씨가 담긴 그림 일기 생성 서비스
Alexnet paper review
요즘 유행하는 AI 나도 해보자 (feat. CoreML)
텐서플로로 OCR 개발해보기: 문제점과 문제점과 문제점
Just point it
180525 mobile visionnet_hanlim_extended
위성관측 데이터 활용 강수량 산출 AI 경진대회 3위 수상작
Enliple BERT-Small을 이용한 KorQuAD 모델
2017 tensor flow dev summit
Keras
Openface
Ad

More from Mijeong Jeon (9)

PDF
Azure_CogSearch_OAI.pdf
PDF
Performance Comparing : ONNX, TF, PyTorch
PDF
let us: Go! 2019 Summer 앱 수익으로 월세내기
PDF
Azure AutoML 함께 실습하기
PDF
180825 azure ai
PDF
내 손 위의 딥러닝_iOS에 딥러닝 심기
PDF
iOS와 케라스의 만남
PDF
프알못의 Keras 사용기
PDF
프알못의 Realm 사용기
Azure_CogSearch_OAI.pdf
Performance Comparing : ONNX, TF, PyTorch
let us: Go! 2019 Summer 앱 수익으로 월세내기
Azure AutoML 함께 실습하기
180825 azure ai
내 손 위의 딥러닝_iOS에 딥러닝 심기
iOS와 케라스의 만남
프알못의 Keras 사용기
프알못의 Realm 사용기
Ad

iOS 모바일에서 한글 손글씨 인식하기(with Keras)