[딥러닝 토이즈, Deep Learning Toys] Quick, Draw! Handwriting recognition.

in kr •  7 years ago  (edited)

안녕하세요. 딥루트 @deep-root입니다.
이번 포스팅에서는 구글 AI experiment에서 나온 Handwriting recognition project인 Quick, Draw!에 대해서 소개해보려 합니다.
Handwriting recognition은 말 그대로 손으로 작성한 글씨나 그림을 인식하는 것을 의미하는데, 구글에서 오픈소스 프로젝트 중 하나로 데이터 및 데모를 공유하였죠.

Quick, Draw!

title.PNG

이번에 소개하는 Quick, Draw는 주어진 키워드로 사람이 그림을 그리고 AI가 어떤 그림인지 맞추는 방법으로 게임을 진핸하는데요. 쉽게 설명하면 AI와 하는 캐치마인드로 보시면 됩니다. (이제 아래에서 학습된 네트워크를 간단하게 AI로 표현하겠습니다.)

캐치마인드.jpg
소는 역시 조선소

게임 진행은 간단합니다. Quick, Draw! 페이지에 접속해서 시작하기를 누르면 바로 진행할 수 있습니다.
한 번에 총 6개의 문제(키워드)를 풀어볼 수 있습니다. 그리고 한 키워드당 20초의 시간이 주어집니다. 제가 테스트 했을 때는 포크, 쾌속선, 팔꿈치, 냉장박스, 기차, 자동차, 6개의 키워드가 문제로 나왔습니다.

마우스로 그려서인지... 제가 똥손이라 그런건지 6개의 문제중에 한 문제는 실패했습니다. ㅠㅠ 그럼 아래에서 제가 그린 그림과 AI가 어떤 어떤 답을 찍었는지 성공 사례와 실패 사례로 한번 살펴보겠습니다.

캐치 마인드 성공!!

boat_title.png

boat.gif

우선 첫번째 키워드는 `쾌속정' 입니다. 위 그림을 보면 그림이 진행 됨에 따라서 AI가 유추를 시작하는 것을 볼 수 있습니다. 처음 배의 하단을 그렸을 때는 카누라고 했다가, 배의 윗 부분을 그리니 여객선, 그리고 나름의 스터스터 (프로펠러) 까지 그리자 드디어 쾌속정 이라고 정답을 외치더군요!!

캐치 마인드 실패 ㅠㅜ

arm_title.png
arm.gif

두 번째는 `팔꿈치'라는 키워드 입니다. 어떻게든 팔꿈치를 표현해보려 했는데 줄->수박->콧수염->신발... 결국 20초 안에 정답을 외치게 만들지 못했습니다.

결과분석

total.png

6개의 문제를 모두 풀고나면 시도해본 문제들에 대해서 위와 같이 나타내 줍니다. 그리고 각 그림을 클릭하면 AI가 제가 그린그림과 학습된 데이터에서 어떤 그림과 매칭이 된 건지 보여줍니다. 물론 잘못 매칭된 결과과 다른 사람들이 그린 결과도 함께 보여줍니다. 제가 그린 팔꿈치의 경우에는 인어, 신발, 해변으로 인식했네요. 좀 더 팔꿈치를 각지게 그릴걸 그랬습니다

arm_detail.png

마무리하며..

사실 게임으로서의 Quick, Draw를 보면 그냥 심심할 때 생각없이 해보기 좋은 데모죠. `우와, 이제 이렇게 가지고 놀 수도 있구나' 하면서요. 하지만 이런 프로젝트의 장점은 바로 오픈소스 프로젝트라는 겁니다. 사용자는 원한다면 언제든 수십만개의 낙서그림 데이터를 받을 수 있고 데이터는 지금 이 순간에도 계속 업데이트 되고 있습니다. 키워드가 주어지고 사용자가 해당 키워드에 맞는 그림을 그려주기 때문에 실시간으로 데이터를 모을 수 있죠. 모든
데이터가 다 사용되진 않겠지만 저 또한 부분적으로는 오픈 프로젝트에 기여했다고 생각할 수 있겠죠?
Brilliant!!!

data.PNG

그리고, 학습 네트워크가 공개되지는 않았지만 예상컨데 시계열 데이터 (time-series data)를 처리하기 용이한 RNN (Recurrent Neural Network) 또는 LSTM (Long Short-Term Memory models) 를 사용했을 것입니다.
구글에서 제공한는 소개영상을 보면 손으로 작성한 글자를 인식할 때 아래 그림과 같이 선을 긋는 순서들도 데이터로 활용됩니다. 즉, 그림 전체의 모양 뿐만 아니라 그림을 그리는 순서 또한 인식에 중요한 특징이 됩니다. 데이터 셋 페이지에 들어가서 보시면 각 그림이 그려지는 순서 또한 함께 나타나는 것을 확인하실 수 있습니다.

이런 시계열 데이터 처리에 대표적인게 RNN 그리고 이를 개선한 LSTM 입니다. 좀 더 자세한 내용을 공부하고 싶으신 분은 ratsgo님의 블로그Terry님의 딥러닝 영상을 보시는 것을 추천합니다.

rnn.gif

그럼 마지막은구글에서 만든 Quick, Draw! 소개영상으로 마무리하며 글을 마치겠습니다. 다들 한번 재미삼아 해보시면 좋겠어요!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

짱짱맨 태그 사용에 감사드립니다^^

저야말로 이렇게 방문해 주셔서 감사합니다 :)