Tag Archives: Keras.js

Synaptic: NN library for node.js

시냅틱(Synaptic)은 브라우저에서 뉴럴 네트워크를 구동시킬 수 있는 node.js 용 자바스크립트 라이브러리 입니다. 이전에 소개했던 keras.js 는 Keras 라이브러리에서 만든 모델을 브라우저에서 구동시키기 위한 자바스크립트 라이브러리 였지만 시냅틱은 의존성 없이 자체적인 뉴럴 네트워크를 꾸밀 수 있습니다. 제공되는 활성화 함수는 렐루, 하이퍼볼릭 탄젠트, 시그모이드 등을 포함하고 있고 주요 손실 함수는 크로스 엔트로피, 평균 제곱 오차가 있습니다. 또 기본 피드 포워드 뉴럴 넷 뿐만 아니라 리커런트 뉴럴 네트워크(LSTM)도 기본적으로 제공하고 있습니다. 하지만 필요에 따라 원하는 아키텍처를 만드는 것도 어렵지 않아 보입니다. 이 소스 코드는 깃허브에서 확인할 수 있으며 MIT 라이센스 입니다. 아직 완전한 라이브러리는 아니지만 빌드업할 수 있는 발판은 모두 갖춘 것 같습니다. 앞으로 얼마나 커뮤니티가 형성되고 라이브러리를 발전시킬지 기대가 됩니다.

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