태그 보관물: regl-cnn

Keras.js: run dl model with GPU

keras-js

케라스(Keras)로 훈련된 모델을 브라우저에서 실행시킬 수 있는 자바스크립트 라이브러리 Keras.js 가 공개되었습니다. 케라스로 만든 모델을 json 으로 출력하고 훈련된 파라메타는 HDF5로 저장합니다. 그런 후에 Keras.js 에서 제공하는 인코더로 훈련된 파라메타를 자바스크립트가 읽을 수 있도록 직렬화하여 모델 json과 함께 브라우저로 로드하여 사용합니다. Keras.js 는 WebGL 자바스크립트 라이브러인 weblas 를 사용하고 있어서 브라우저에서 GPU 가속을 사용할 수 있습니다. 기본으로 제공되는 모델 파라메타는 MNIST, ResNet50, Inception V3 등이 있습니다.

콘볼루션 뉴럴 네트워크를 훈련시킬 수 있는 자바스크립트 라이브러리로는 OpenAI 안드레이 카패시(Andrej Karpathy)의 ConvNetJS 가 유명합니다. 하지만 Keras.js 는 콘볼루션 뿐만 아니라 LSTM 모델 등 다양한 모델을 지원한다는 게 장점인 것 같습니다. 이전에 소개했던 regl-cnn 보다도 훨씬 발전된 라이브러리로 보입니다. 다양한 레이어와 활성화 함수를 구현한 Keras.js 의 소스는 깃허브에 MIT 라이센스로 공개되어 있습니다.

(업데이트) Keras.js 를 사용하여 브라우저에서 웹캠으로 찍은 이미지를 분류하는 데모가 공개되었습니다. ResNet50을 사용하였고 로딩되는데 조금 시간이 걸리지만 크롬 브라우저에서 잘 작동이 됩니다. 왼쪽 화면이 웹캠 영상이고 오른쪽 이미지가 대략 5초마다 찍힌 스샷 이미지입니다. 스샷이 찍히면 자동으로 아래쪽에 어떤 물체인지 분류가 됩니다.

kerasjs-resnet50-demo

ConvNet with WebGL

record_resize

WebGL을 사용하여, 즉 브라우저에서 GPU 가속을 사용하여 콘볼루션 뉴럴 네트워크를 구현한 데모가 공개되었습니다. 이곳에서 파이어폭스나 크롬 브라우저로 직접 테스트해 보실 수 있습니다. 이 데모의 깃허브에 조금 자세한 설명이 들어 있습니다. MNIST 학습은 텐서플로우로 한 후에 파라메타들를 바이너리로 저장하여 자바스크립트에서 읽어들여 사용했습니다.

자바스크립트에서 콘볼루션 뉴럴 네트워크를 구현한 것으로 잘 알려진 것은 스탠포드의 안드레이 카패시(Andrej Karpathy)가 만든 ConvNetJS가 있습니다. 이 데모에서는 순수한 자바스크립트로만 구현한 것이 아니고 WebGL 래퍼인 regl 라이브러리를 사용하여 GPU 가속을 이용한 점이 돋보입니다. 다른 기술들이 그렇듯이 딥 러닝 분야도 브라우저를 통해 많이 응용될 수 있을 것 같습니다.