월간 보관물: 2016 5월

Terrapattern: Visual Search for Satellite Imagery

카네기 멜론 대학의 ‘Frank-Ratchye STUDIO for Creative Inquiry‘ 연구소에서 만든 위성 사진의 비슷한 패턴을 찾아주는 테라패턴이 공개되었습니다. 테라패턴은 위성 이미지의 한 부분을 클릭하면 그와 비슷한 영역을 찾아줍니다. 현재는 뉴욕, 샌프란시스코, 피츠버그, 디트로이트만 검색 기능을 제공하지만 점차 도시를 확대할 예정이라고 합니다.

terrapattern

이미지 출처: 테라패턴 (뉴욕 매리어트호텔)

왼쪽 부분의 큰 이미지 윗부분의 검색박스에서 원하는 건물이나 지역의 이름을 찾을 수 있고 지도를 마우스로 확대, 축소하여 내비게이션할 수도 있습니다. 이 위성 이미지에서 원하는 부분을 마우스로 클릭하면 도시안에 이와 비슷한 이미지를 찾아 왼쪽 아래 부분에 그 결과를 보여줍니다. 오른쪽 위의 작은 이미지 두개중 왼쪽의 Geographical Plot은 찾은 이미지의 지리적 위치 분포를 나타내고 있고 오른쪽의 Similarity Plot은 결과 이미지간의 유사도를 보여줍니다. 그리고 화면의 맨 아래에서는 GeoJSON 포맷으로 결과 데이터를 받을 수도 있습니다.

openstreetmap

이미지 출처: 오픈스트리트맵 (뉴욕 매리어트호텔)

테라패턴은 오픈스트리트맵의 이미지 카테고리 데이터를 이용하여 수십만장의 이미지를 딥 콘볼루션 뉴럴 네트워크(DCNN)에 주입시켜 모델을 학습시킨다고 합니다. 학습을 통해 이미지의 주요한 특징을 파악할 수 있게 되고 수백만개(뉴욕의 경우)의 위성사진의 설명(description)을 만듭니다. 최종적으로는 사용가 찾고자 하는 이미지와 설명이 유사한 이미지를 찾는 문제가 됩니다. 그러나 실시간으로 유사한 설명을 찾기에는 이미지가 너무 많기 때문에 군집(classification) 알고리즘인 CoverTree(페이퍼) 알고리즘을 사용하여 미리 계산하여 놓아서 검색 결과를 빠르게 보여줄 수 있다고 합니다.

뉴럴 네트워크를 활용한 흥미로운 사례라고 생각됩니다. 테라패턴의 뉴럴 네트워크는 토치(Torch)로 개발되었고 소스는 MIT 라이센스로 깃허브에 공개되어 있습니다.

New TensorFlow Paper [1605.08695]

1605.08695

이미지 출처: TensorFlow: A system for large-scale machine learning

며칠전 구글 브레인팀이 arXiv에 텐서플로우에 관한 새 페이퍼를 등록하였습니다. ‘[1605.08695] TensorFlow: A system for large-scale machine learning‘ 입니다. 새로운 페이퍼는 TPU(Tensor Processing Unit)와 분산버전에 대한 내용이 보강된 것으로 보입니다.

Google chat, Apple talk

지난 주 금요일 더버지(theVerge)에서 구글이 챗봇(chatbot)을 개발하고 있다는 기사가 실렸습니다. 이는 싱귤래리티(Singularityu.org)가 진행한 컨퍼런스에서 레이 커즈와일(Ray Kurzweil)이 밝힌 내용입니다. ‘The Singularity is Near'(번역서: 특이점이 온다)의 저자로 유명한 레이는 2012년 부터 구글에서 자연어처리 부분에서 일하고 있습니다. 그의 팀이 개발하고 있는 챗봇은 올해말쯤 발표될 예정이라고 합니다. 챗봇의 이름은 출판되지 않은 레이의 책에 나오는 등장인물 중 하나인 대니엘(Danielle)에서 따 왔다고 합니다.

레이가 밝인 구글 챗봇의 특이한 점은 사용자가 자신의 글을 봇에게 학습시켜 자신의 스타일이나 개성을 나타낼 수 있게 만들 수 있다고 합니다. 레이는 2029년에는 튜링 테스트를 통과할 수 있는 완전한 AI가 등장할 것이라고 말했습니다. 하지만 그 전에라도 상단 수준의 대화를 나눌 수 있는 AI가 등장할 것이라고 합니다.

레이 커즈와일이 언급한 챗봇의 기사와 거의 동시에 애플의 시리(Siri)에 관련된 기사가 테크인사이더에 실렸습니다. 이 기사의 제목은 다소 센데요. 말 그대로 애플의 AI가 구글이나 다른 경쟁자들을 다 쓸어버릴 거랍니다. 기사에서도 언급했지만 애플이 구글이나 마이크로소프트에 비해 AI에 투자를 소홀히 했거나 혹은 과소평가 하지 않았나 하는 의견이 있습니다. 하지만 작년 애플이 인수한 보컬아이큐(VocalIQ)가 바로 이런 문제를 해결할 수 있을 것이라 보고 있습니다.

영국 스타트업인 보컬아이큐는 스피치 인식의 성능을 매우 높일 수 있는 제품을 개발중에 있었고 시중에 나오기도 전에 애플이 전격인수를 한 사례입니다. 현재는 홈페이지도 닫혀져 있고 보컬아이큐 전 CEO Blaise Thomson의 링크드인 페이지를 통해서만 간접적으로 어떤 연구를 했었는지 엿볼수 있는 정도입니다.

기사에서는 ‘야외 주차장에 와이파이가 있고 애들과 함께하기 좋은 중국식당을 찾아줘’란 질문에 시리(Siri)나 구글 나우(Now), 코타나(Cortana) 등은 20% 정확도이지만 보컬아이큐의 정확도는 90%라고 합니다. 거기에 더해 이전 질문을 바탕으로 현재 질문을 해석할 수도 있습니다. 예를 들면 ‘멕시칸 식당으로 다시 찾아줘’라고 하면 이전 질문의 중국식당을 제외한 다른 제약요소는 그대로 유지하고 멕시칸 식당을 찾아줄 수 있습니다.

기사대로라면 보컬아이큐는 수천개의 대화를 가지고 학습했음에도 수억개를 보고 배운 시리보다 뛰어나다고 하는데 믿어지지가 않습니다. 아직 애플이 공식적으로 보컬아이큐나 시리에 대해 발표한 것은 없습니다. 하지만 많은 전문가들은 6월에 열릴 애플의 개발자 컨퍼런스(WWDC)에서 시리에 대해 중요한 발표가 있을 것이라고 예상하고 있습니다.

시간순으로 나열된다면 애플이 시리로 일격하고 이어서 구글이 반격을 할 것으로 보입니다. 이제 정말 곧 그녀(her)를 만날 수 있는 것일까요?

(업데이트) 애플이 올해 1월 사람의 얼굴표정을 인식할 수 있는 기술을 개발하고 있는 스타트업 이모션트(Emotient)를 인수한 것이 국내 언론에도 기사화가 되었습니다. 오늘 미디엄의 또 다른 에서는 이 이모션트의 기술을 활용하여 애플이 시리의 성능을 높이게 될 것(Siri2)이라고 예측하고 있습니다.

(업데이트) 이 글에 포함되어 있는 커즈와일의 유투브 인터뷰 동영상이 비공개로 바뀌었습니다. 어떤 이유에서인지는 아직 알려지지 않았습니다.

Terry Um’s TensorFlow Exercises

워털루 대학의 엄태웅님이 작성하신 텐서플로우 예제와 슬라이드를 소개해 드립니다. 이 텐서플로우 예제도 쥬피터 노트북으로 작성되었으며 깃허브에 올라가 있습니다. 이 예제는 최성준님의 Tensorflow-101Aymeric Damien의 Tensorflow-ExamplesNathan Lints의 Tensorflow-TutorialsParag K. Mital의 Tensorflow-Tutorials 등을 참고했다고 합니다. 또한 텐서플로우에 대한 블로그 글과 다운받을 수 있는 프리젠테이션 슬라이드도 공개하였습니다.

아래는 TensorFlow Exercises에 있는 예제 목록입니다.

  1. Linear Regression
  2. Logistic Regression
  3. Multilayer Perceptron
  4. Modern Multilayer Perceptron
  5. Convolutional Neural Network

Sungjoon’s TensorFlow-101 & Deep Learning Tutorials

서울대학교 최성준님이 만드신 텐서플로우 예제 코드딥러닝 강의 노트가 깃허브에 공개되어 있습니다. TensorFlow-101 예제코드는 MIT 라이센스라 마음껏 활용하셔도 좋지만 강의 노트에는 별다른 코멘트가 없어 혹 이용하실 때에는 원저자에게 문의해 보면 좋을 것 같습니다.

예제 코드는 쥬피터 노트북으로 작성되어 있으며 기본적인 MNIST, 회귀분석에서 부터 콘볼루션 뉴럴 네트워크, 리커런트 뉴럴 네트워크, Word2Vec, 오토인코더, 텐서보드 등 폭넓게 포함하고 있습니다. 조금 아쉽지만 노트북에 많은 설명이 들어 있지는 않습니다. 이 예제는 일전에 소개해 드렸던 Aymeric Damien의 TensorFlow-Examples 와 Nathan Lintz의 TensorFlow-Tutorials 를 참고하였다고 합니다.

아래는 TensorFlow-101 에 있는 예제 목록입니다.

  1. Basics of TensorFlow / MNIST / Image Processing / Generating Custom Dataset
  2. Machine Learing Basics with TensorFlow: Linear Regression / Logistic Regression with MNIST / Logistic Regression with Custom Dataset
  3. Multi-Layer Perceptron (MLP): Simple MNIST / Deeper MNIST / Xavier Init MNIST / Custom Dataset
  4. Convolutional Neural Network (CNN): Simple MNIST / Deeper MNIST / Simple Custom Dataset / Basic Custom Dataset
  5. Using Pre-trained Model (VGG): Simple Usage / CNN Fine-tuning on Custom Dataset
  6. Recurrent Neural Network (RNN): Simple MNIST / Char-RNN Train / Char-RNN Sample
  7. Word Embedding (Word2Vec): Simple Version / Complex Version
  8. Auto-Encoder Model: Simple Auto-Encoder / Denoising Auto-Encoder / Convolutional Auto-Encoder (deconvolution)
  9. Class Activation Map (CAM): Global Average Pooling on MNIST
  10. TensorBoard Usage: Linear Regression / MLP / CNN

 

Top 19 Free Python eBooks

아티클 추천 서비스를 해주는 Myridge에서 19개의 파이썬 무료 이북 리스트를 선정했습니다. 모두 아마존에서 높은 평점을 받는 좋은 책인 것은 물론 무료로 읽을 수 있으므로 더할 나위 없습니다.

초보자

  1. Python Programming: An Introduction to Computer Science 2nd Edition (Zohn Zelle)
  2. Python Crash Course: A Hands-On, Project-Based Introduction to Programming (Eric Matthes)
  3. Python Pocket Reference, 5th Edition (Mark Lutz)
  4. Python Practice Book: free ebook to learn practical programming with Python (Anand Chitipothu)
  5. Learning Python 5th Edition (updated for 3.3 and 2.7) (Mark Lutz)
  6. Learn Python the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code (3rd Edition) (Zed A. Shaw)

숙련자

  1. Python Cookbook: free ebook for advanced programmers (David Beazley)
  2. Test-Driven Development with Python (Harry Percival)
  3. High Performance Python: Practical Performant Programming for Humans 1st Edition (Micha Gorelick & Ian Ozsvald)

데이터 & 머신러닝

  1. Think Complexity: Complexity Science and Computational Modeling 1st Edition (Allen B. Downey)
  2. Python for Data Analysis — Agile Tools for Real World Data(Pandas, NumPy, and Ipython) (Wes McKinney)
  3. Mastering Python for Data Science (Samir Madhavan) (사파리 온라인에 가입해야만 읽을 수 있어 무료라고 보긴 어렵습니다)
  4. Natural Language Processing with Python 1st Edition (Steven Bird, Ewan Klein & Edward Loper)

게임

Making_Games_with_Python_and_Pygame Invent_Your_Own_Games_with_Python

  1. Making Games with Python & Pygame (Al Sweigart)
  2. Invent Your Own Computer Games with Python (Al Sweigart)

그외

  1. Automate the Boring Stuff with Python: Practical Programming for Total Beginners (Al Sweigart)
  2. Python for Biologists: A complete programming course for beginners (Dr. Martin Jones)
  3. Programming the Raspberry Pi: Getting Started with Python 1st Edition (Simon Monk)
  4. Hacking Secret Ciphers with Python: A beginner’s guide to cryptography and computer programming with Python (Al Sweigart)

AWS New Instance for AI

오늘 블룸버그에 아마존이 뉴럴 네트워크를 위한 새로운 인스턴스 타입을 테스트 중에 있다고 기사를 게재했습니다. 아마존의 입장에서는 계속 인기가 올라가고 있는 구글의 클라우드 플랫폼(GCP)에 대응하지 않을 수 없을 것 같습니다. 특히 구글의 클라우드 머신러닝 플랫폼이 이미 알파 서비스를 하고 있습니다. 하지만 아마존이 구글 클라우드 플랫폼이 제공하는 Vision API, Prediction API, Translate API 같은 API 서비스를 제공할 것 같지는 않습니다.

새로운 타입의 인스턴스는 최대 8개까지의 GPU가 탑재되었고 몇몇 고객을 대상으로 테스트 중에 있다고 합니다. 아마도 보다 최신의 Nvidia GPU가 탑재될 것으로 생각됩니다. 이 인스턴스에 아마존이 발표한 딥러닝 프레임워크인 데스트니(DSSTNE)만 운영할 수 있는 것은 아니고 당연히 텐서플로우를 포함한 다른 딥러닝 프레임워크도 사용할 수 있습니다. 새로운 인스턴스 타입에서 데스트니를 사용했을 때 성능상의 장점외에 다른 편리함을 줄 수 있다면 더욱 기대가 될 것 같습니다.

TensorFlow on Raspberry Pi 3

라즈베리 파이3에 텐서플로우 설치에 성공한 깃허브를 소개해 드립니다. 라즈베리 파이에 텐서플로우를 설치하려면 깃허브에서 제공한 텐서플로우 바이너리를 pip로 설치해도 되고 직접 텐서플로우 소스에서 빌드하셔도 됩니다. 이 깃허브에서는 두가지 방식 모두 소개를 하고 있습니다.

또 텐서플로우에 있는 인셉션 모델(Inception-v3)을 이용하여 맥북과 라즈베리 파이의 성능을 벤치마크한 결과도 공유해 주고 있습니다. 벤치마크는 파이썬은 판다곰 이지지를 분류하는 텐서플로우 예제를, C++ 버전은 그레이스 호퍼 이미지를 사용하는 텐서플로우 예제를 약간만 수정하여 거의 그대로 사용했습니다.

tensorflow-raspberry-benchmark

출처: 깃허브 레파지토리

C++ 예제는 라즈베리 파이와 맥북이 큰 차이가 나지 않는 점이 눈에 뜨입니다. 하지만 파이썬 예제의 경우 라즈베리 파이에서는 매우 느려서 사용하기 어려울 것 같습니다.

Dan Brickley는 라즈베리 파이에 설치된 텐서플로우를 이용해서 카메라에 잡힌 이미지를 인식하는데 성공했다고 합니다. coffee pot를 인식한 메세지가 보입니다. 물론 다소 느리다고 합니다(30여초).

테스트 결과에 대해서 깃허브에 업데이트 내용이 있으면 다시 공유하도록 하겠습니다.

Google Cloud Vision API

cloud-vision-api

구글 GCP NEXT 2016 컨퍼런스에서 Jeff Dean이 데모로 보여주었던 클라우드 비전 익스플로러(Cloud Vision Explorer)가 공개 되었습니다. 약 8만여개의 이미지를 분석해 주는 데모입니다. 클라우드 비전 API의 가격은 1,000개의 이미지당 $2 라고 합니다. 한달에 1,000개 까지는 무료라고 하네요. 자세한 가격 정보는 여기에서 확인하실 수 있습니다.

이 데모는 클라우드 비전 API, 텐서플로우, WebGL 등을 이용해서 구현되었습니다. 먼저 클라우드 비전 API로 이미지의 레이블과 스코어를 얻은 후 GloVe 라이브러리를 이용해서 300차원의 벡터로 만듭니다. 그 다음 t-SNE 방식을 사용하여 차원을 3차원으로 축소한 후 유클리디안 거리를 사용한 k-Means 알고리즘을 이용하여 클러스터링 했다고 합니다. 조금 더 자세한 설명은 구글 클라우드 플랫폼의 블로그 페이지를 참고하실 수 있습니다.

galaxy-vision-api-1b

출처: 구글 클라우드 플랫폼 블로그

ML Crowd Course

MOOC에 대해서는 많이 들어보셨을 것 같습니다. 대표적으로 코세라(Coursera), 에딕스(edX), 유다시티(Udacity) 등이 있습니다. 스탠포드에서 이와는 좀 다른 색다른 시도를 하고 있습니다. 바로 크라우드 코스(Crowd Course) 입니다. 크라우드 코스는 온라인 강좌를 위한 플랫폼을 일반에게 공개하고(물론 신청을 해서 허가를 받아야 하지만) 여러 사람이 강의를 만들어 제공하는 형태입니다. 비영어권 강좌라도 가능합니다.

현재는 알고리즘과 파이썬 강좌 2개 그리고 파이썬 머신러닝 강좌가 있습니다. 파이썬 머신러닝 강좌는 사이킷런(scikit-learn) 과 넘파이(numpy), 판다스(pandas) 기반입니다. 이 강의를 만들기 위해 전세계에 흩어져 있는 수십명의 사람이 힘을 모았습니다. 놀랍다는 말이 나오지 않을 수 없네요. 당연히 아무 조건 없이 무료로 들으실 수 있습니다.