태그 보관물: Torch

DenseCap: Fully Convolutional Localization Networks for Dense Captioning

densecap

DenseCap 데모화면. 출처: cs.stanford.edu

스탠포드 비전랩(Vision Lab)의 Fei-Fei Li 교수와 PhD 학생들이 최근 연구한 이미지 캡셔닝 프로그램인 DenseCap에 대한 사이트와 코드를 깃허브에 공개하였습니다. 사실 동명의 논문은 작년 말에 공개되었고 그 직후 바로 소스코드가 공개되었습니다.

논문의 내용을 자세히 읽진 못했지만 CNN 과 RNN 모델을 같이 사용한 것으로 보입니다. 테스트 데이터는 비주얼 게놈 데이터 셋을 사용했습니다. 토치(Torch) 프레임워크를 사용했기 때문에 코드는 주로 루아(Lua)로 되어 있습니다. 논문과 코드 뿐만이 아니라 데모 사이트도 공개했는데요. 열정이 대단합니다. 다만 초기 로딩되는 속도가 좀 느릴 수 있습니다.

densecap_browser

이미지가 로딩되면 감지한 오브젝트를 이미지 위에 표시하고 이미지 밑에는 캡션이 달리게 됩니다. ‘W’ 키를 누르면 좀 더 많은 오브젝트를 잡아내고 ‘S’ 키를 누르면 하나씩 덜어내게 됩니다. ‘R’은 랜덤이미지, ‘A’는 이전이미지, ‘D’는 다음 이미지를 선택하는 핫 키 입니다.

마이크로소프트(Microsoft), 바이두(Baidu)도 딥러닝 프레임워크를 오픈소스로 공개했다.

작년 말에 마이크로소프트가 머신러닝 툴킷 DMTK를 공개하였습니다.

https://tensorflowkorea.wordpress.com/2015/11/16/마이크로소프트-머신러닝-툴킷-dmtk-오픈소스로-배포/

이에 이어 딥러닝 프레임워크 CNTK(Computational Network Toolkit)를 오픈 소스로 공개하였습니다. CNTK는 마이크로소프트가 코타나(Cortana)나 Skype 번역 어플리케이션에 사용하는 인공신경망 알고리즘 프레임워크로 구글의 텐서플로우(TensorFlow)에 대응하는 제품이라고 볼 수 있습니다.

http://www.wired.com/2016/01/microsoft-tries-to-one-up-google-in-the-open-source-ai-race/

놀라운 것은 CNTK 가 구글의 텐서플로우와는 다르게 완전 무료라는 점 입니다. 수정, 복사는 물론 재배포, 판매까지 상업적이던 아니던 아무런 제약없이 사용할 수 있습니다. 사실 구글의 텐서플로우를 상업적 목적으로 사용하기에는 라이센스에 제약이 있다는 점을 잘 파고든 것 같습니다.

https://github.com/Microsoft/CNTK

마이크로소프트 과학자의 말을 인용하면 구글이 공개한 텐서플로우 버전을 여러개의 머신에서 병렬로 딥러닝을 수행하기에는 부족하다고 합니다. 토치(Torch) 프레임워크를 제외하고는 CNTK가 거의 유일한 대규모의 인공신경망 분석을 할 수 있는 완제품 이라고 합니다. 현재는 C++ 만을 지원하지만 곧 Python 을 지원할 계획이라고 합니다.

또 불과 일주일 전에는 중국의 최대 검색엔진인 바이두(Baidu)의 AI 랩에서 Warp-CTC(Connectionist Temporal Classification) 라는 CTC 교사학습(Supervisored Learning) 알고리즘을 구현한 소프트웨어를 공개하였습니다.

https://github.com/baidu-research/warp-ctc

2년전 구글의 딥러닝 프로젝트를 이끌던 스탠포드 대학교의 앤드류응(Andrew Ng) 교수가 바이두 AI 랩 수장으로 옮긴 일이 화제가 되기도 했었습니다. 아마도 바이두는 머신러닝 주도권 싸움이 구글과 마이크로소프트간의 경쟁으로만 남게 두지는 않을 것 같습니다.

자 다음에는 누구 차례일까요? 아마도 페이스북이 아닐까 합니다. 물론 딥러닝을 위한 GPU 기반의 하드웨어 설계를 공개했지만 구글과 마이크로소프트에 비하면 조금 밀리는 것 같습니다. 언젠가 페이스북이 발표할 그 무엇을 기대해 봅니다.

머신 러닝 타임즈 2015

2015년은 머신러닝의 해라고 불릴만큼 머신러닝 기술이 많이 회자되고 큰 회사부터 스타트업까지 많은 기사를 토해낸 한 해였습니다. 어낼리틱스 비댜(Analytics Vidhya)에서는 2015년 중요한 머신러닝 이슈들을 한 곳에 모아서 발표하였습니다.

눈에 띄이는 2015년 이슈는 무엇이 있을까요? 페이스북이 토치(Torch)를 이용한 툴들을 공개했고 다토(Dato)가 본격적으로 머신러닝 시장에 참여하기 시작했습니다. 다토는 제 1의 Mooc 사이트인 코세라(Cousera)에도 머신러닝 강의를 올해부터 시작했습니다. 마이크로소프트가 머시러닝 툴킷 DMTK를 오픈소스로 공개하고 자사의 클라우드인 아주르(Azure)에 머신러닝 플랫폼을 런칭했습니다. 또 유명한 Mooc인 유다시티(Udacity)에도 머신러닝과 데이터사이언스에 관한 강좌를 제공하고 있습니다. 애플이 지속적으로 머신러닝 인재를 영입하고 관련 회사들을 사들이는 기사도 보도되었습니다. 머신러닝과는 직접 관계는 없지만 스위프트(Swift) 언어를 오픈소스로 공개한 것도 올해 입니다.

계속 읽기

텐서플로우 vs 테아노(Theano) vs 토치(Torch)

텐서플로우가 나오면서 기존의 딥러닝 프레임워크인 테아노(Theano)와 토치(Torch)와 비교하는 글이 있어 소개합니다.

텐서플로우는 테아노와 유사하게 네트워크 기반의 심볼릭 그래프를 사용합니다. 파이썬과 C/C++ 모두 사용이 가능하지만 주력은 파이썬인 것 같습니다. 모바일과 서버 환경 모두를 고려하고 있습니다. 부가적으로 텐서보드(TensorBoard)를 통해 비주얼라이제이션을 지원합니다.  단점은 이전 포스트에서도 언급되었지만 성능상에서 다른 경쟁자들에 비해 다소 뒤떨어집니다.  그리고 테아노의 scan 같은 네트워크에 있는 심볼릭들을 루핑(loop)할 수 있는 기능은 없습니다.

테아노는 심볼릭 텐서 그래프를 사용하는 최초의 프레임워크로 토치 같은 프레임워크보다 더 유연합니다. 테아노를 기반으로 하는 고수준 프레임워크들도 존재하고 있고 텐서플로우나 토치에서는 지원되지 않는 윈도우즈 환경에서도 사용할 수 있습니다. 반면 텐서플로우에는 없는 컴파일 프로세스로 인한 오버헤드는 단점으로 꼽을 수 있습니다. 파이썬 모듈을 로딩하는 import theano 명령이 느리고 확장이나 개선이 어려운 복잡한 구조를 가지고 있습니다.

토치는 컨볼루션(합성곱 신경망) 부분에서 좋은 성능을 보이고 있고 여러가지 컨볼루션 알고리즘을 구현하고 있습니다. 페이스북에서 토치 기반의 머신러닝 패키지 몇가지를 공개했습니다. 인터페이스는 직관적이어서 좋지만 파이썬 인터페이스가 없습니다. ㅠ.ㅠ 텐서플로우나 토치와 같은 그래프 방식대신 레이어 구조입니다.

텐서플로우와 토치(Torch) 벤치마킹

토치는 루아(Lua) 기반의 딥러닝을 위한 신경망 알고리즘 패키지 입니다. 여러 알고리즘을 벤치마킹하는 Soumith 가 토치와 텐서플로우를 비교해 보았는데요. 결과적으로는 토치의 완승입니다. 텐서플로우가 토치보다 2~3배 가량 느린 것으로 나타났습니다. 이에 대한 내용은 구글팀이 이미 알고 있으면 버그(?) 수정을 위해 작업을 진행하고 있다고 합니다.