Artificial Intelligence


TensorFlow Android Demo


Chapter 1. 바젤(Bazel) 알아보기



빌드하기 위한 첫 번째 관문, 구글의 새로운 빌드 도구 바젤의 로고





1. 바젤은 무엇이며 왜 설치해야 하는가


텐서플로우 안드로이드 데모(이하 데모)를 개발하기 전에 가장 먼저 알고 넘어가야 하는 프로그램이 있는데,


바로 구글에서 개발한 바젤(Bazel) 이란 녀석입니다


바젤 공식 홈페이지에서 설명하기를, 바젤은 어떤 사이즈의 소프트웨어든 빠르고 안정적이게 빌드하는 빌드 도구입니다


이러한 빌드 도구는 대표적으로 안드로이드 스튜디오를 설치했을 때 기본형으로 나타나는 그래들(Gradle)이 있습니다


빌드 도구는 한 두가지가 아닌데, 그중에서도 이번 데모를 빌드하기 위해서는 특별하게 바젤이 필요합니다




이 점에 대해 저희 팀은 그래들과 같은 기존의 빌드 도구와 바젤의 차이에 대해 생각해 보았는데,


아마 바젤이 타 언어를 함께 활용하는 개발 환경에서 상당히 무거운 소스코드라도 


훌륭히 빌드해낼 수 있는 능력을 가지고 있기 때문이라고 생각했습니다


구글은 실제로 "코드 양이 아주 방대하거나 여러가지 언어를 컴파일해야 하는 프로젝트, 


다양한 플랫폼을 설치해야 하는 프로젝트 등에서 바젤이 유용하다"라고 이야기했습니다


텐서플로우의 경우 '여러가지 언어를 사용하며, 학습된 데이터 그래프가 상당히 무겁기 때문에' 바젤을 사용한다고 생각합니다




어찌되었든 텐서플로우 팀은 데모를 빌드하기 위한 방법으로 바젤을 활용하는 법 외에는 알려주지 않았으니, 


처음 텐서플로우로 어플을 빌드하려는 저희로써는 그저 따라가는 수 밖에 없었습니다







개발자라면 한 번쯤은 만나봐야 한다는 리눅스(Linux) 기반의 대표적 OS, 우분투(ubuntu)의 로고





2. 바젤을 설치하기 위한 환경에 대하여




가장 큰 문제는 바젤의 설치에 있습니다


바젤은 현재 Linux 와 Mac OS X 기반의 환경에서만 설치가 가능합니다


그러니 이제부터 바젤을 설치하기 위한 여정을 떠나셔야 합니다


만약 리눅스나 맥 기반의 머신을 가지고 있다면 문제도 아니겠지만, 여러분이 충실한 윈도우 사용자라면


오로지 텐서플로우 빌드를 한 번 스스로 해보기 위해서 파티션을 나누고 리눅스를 설치할 각오를 다지셔야 합니다




3. 바젤 설치 과정




그럼에도 바젤을 설치하기로 마음먹으셨다면 본격적으로 리눅스 기반을 만드셔야 합니다


대표적으로 윈도우 기반에서 우분투 OS를 설치한다고 했을 때, 최소 두 가지 방법이 있습니다


첫째, 현재의 윈도우 OS를 제거하거나, 남는 하드디스크의 파티션을 나누어 듀얼부트 형태로 우분투를 설치


둘째, 윈도우 내의 가상 머신을 이용해 우분투를 설치


저희 팀은 두 개의 머신에 각각의 방법으로 시도했으나, 아쉽게도 두 번째 방법을 실패하였습니다


그 과정에서 듀얼부트 형태로 우분투를 설치하는 것이 훨씬 안정적이고 빌드 속도 또한 빠르다고 생각했기에


첫 번째 듀얼부트 형태의 우분투 설치를 추천드립니다


자세한 우분투 듀얼부트 설치에 관해서는 관련 게시물을 보시기 바랍니다




우분투 환경이 구축된 후, 바젤을 설치하기 위해서는


가장 먼저 오라클 JDK를 설치해야만 합니다


이를 위해서는 우분투의 터미널을 실행시킨 다음,



$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer


위의 명령어를 차례로 입력해야 합니다


만약 시간이 지나 JDK의 버전이 변경되었다면, 


마지막 명령어의 oracle-java8-installer에서 적절한 java 버전으로 변경해야 할 것입니다


바젤의 공식 홈페이지에서는 ubuntu 15.10 버전에서는 Open JDK 환경만으로도 실행이 가능하나


ubuntu 14.04 LTS 버전에서는 Oracle JDK 환경을 만들어줘야 한다고 이야기합니다


저희는 ubuntu 16.04 LTS 버전에서 Oracle JDK를 설치 후 진행하였습니다




이제 바젤에 필요한 나머지 패키지들을 설치해야 합니다


$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip


위의 명령어를 터미널에 입력하여 패키지 설치를 완료합니다




마지막으로 바젤을 다운로드하고 설치하도록 합니다


https://github.com/bazelbuild/bazel/releases


우선 위의 깃허브 링크에 접속하여 아랫쪽에 다양하게 있는 바젤 설치파일 중에서


installer-linux가 적혀있는 파일을 다운로드합니다


$ chmod +x bazel-version-installer-os.sh
$ ./bazel-version-installer-os.sh --user


그 다음 위의 두 명령어를 차례로 입력하여 바젤을 설치하도록 합니다. 


$ export PATH="$PATH:$HOME/bin"


마지막으로 바젤의 패스를 추가해주기 위해 위의 명령어를 입력해 줍니다




이 과정이 모두 막힘없이 진행되었다면 성공적으로 바젤을 설치되었을 것입니다


현재 Mac OS X를 사용하고 계신 분의 경우에는


아래의 참고 링크의 바젤 공식 홈페이지에 나타난 설치법을 따라가시면 됩니다






참고 링크


바젤에 대해 설명한 블로터의 기사

http://www.bloter.net/archives/238481


텐서플로우에서 공식적으로 제안하는 바젤 설치법(ctrl + F로 bazel을 검색하자)

https://www.tensorflow.org/versions/master/get_started/os_setup.html#source


바젤 공식 홈페이지의 환경별 바젤 설치법

https://bazel.io/docs/install.html




'Projects > SnapLearn' 카테고리의 다른 글

Prologue : Tensorflow Android Demo Application  (0) 2016.08.25
Snap Learn 프로젝트 개요  (0) 2016.08.04

Artificial Intelligence


Tensorflow Android Demo


Prologue








구글이 말하길 텐서플로우라는 머신러닝 프로그램은 처리속도와 무게에 있어서 차별성을 가진다고 합니다


그렇다면 이러한 특징을 가장 잘 살릴 방법은 바로 모바일 환경에서의 텐서플로우 구축일 것입니다


구글의 텐서플로우팀은 자비롭게도 누구나 텐서플로우를 모바일 환경에서 다룰 수 있도록


아주 간단한 데모 어플리케이션을 공개했습니다


모든 소스코드와 학습된 데이터 그래프를 공개하고, 직접 빌드해 보라며 차근차근히 알려주었습니다




그렇기에 이 텐서플로우를 활용한 안드로이드 어플리케이션은 


텐서플로우를 실생활에 활용해 보려 하는 사람이라면 한번 쯤 만들어볼 만한 가치가 있다고 생각합니다


우리에게 가장 와닿는 방법으로 인공지능을 사용하는 방법이기 때문이죠




위에서 말했듯이 구글은 하나부터 열까지 빌드 방법을 차근차근 알려주기 때문에


기존에 개발을 지속해 오시던 분들은 금방 데모 어플리케이션을 제작 할 것입니다


다만 저와 LIME의 팀원들을 포함해, 이번에 새롭게 텐서플로우에 관심을 갖고


개발에 발을 디딘 사람이라면 이 간단한 데모 어플의 빌드조차 쉽지 않다고 할 수 있겠습니다




이에 우여곡절 끝에 어플리케이션 빌드에 성공한 텐서플로우 프로젝트 팀원들은 


빌드를 하기 위해 수많은 사이트를 전전하며 얻은 정보들과 과정을


저희와 같은 초보자들을 위해 공유하기로 결정했습니다


기본적인 안드로이드 어플 빌드 환경의 구축부터 최종적인 빌드 명령어까지 


팀원들이 겪은 문제점과 해결 방법에 대해 상세하게 챕터별로 이야기해 보도록 하겠습니다


구성은 다음과 같습니다




개발 환경 구축하기




Chapter 1. 바젤(Bazel) 이란 무엇인가


바젤은 어떤 프로그램인가


바젤을 사용해야 하는 이유는 무엇인가


바젤을 사용하기 위한 OS 환경을 구축하자 - 우분투를 기반으로




Chapter 2. 우분투 환경에서 안드로이드 개발 환경 만들기


안드로이드 스튜디오 설치하기


SDK와 NDK 설치하기




Chapter 3. 우분투에 텐서플로우 환경 만들기


파이선과 텐서플로우의 설치


CUDA 설치하기 


CUDNN 설치하기




빌드 소스코드 얻기




Chapter 3. 텐서플로우 소스코드 저장하기


소스코드는 어디에서 받아 어디에 저장하는가




Chapter 4. WORKSPACE 파일 설정하기


WORKSPACE 는 어떤 파일인가


어느 경로에 무엇을 수정해서 저장해야 하는가




Chapter 5. 학습된 모델 저장하기


어떤 모델을 사용하는가


학습 모델의 다운로드와 저장




빌드하기




Chapter 6. 빌드하기


빌드 명령어와 주의사항





https://www.tensorflow.org/mobile.html


텐서플로우 공식 홈페이지의 텐서플로우 모바일 적용에 관한 페이지


https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android/


깃허브에 공개되어 있는 텐서플로우 안드로이드 데모버전에 대한 소스코드와 빌드 방법에 대한 설명





사실 전부 만들어져 있는 어플리케이션의 빌드가 무슨 의미가 있냐고 하시는 분도 계실 것입니다


하지만 저희가 프로젝트를 진행하며 느낀 점은


간단한 APK 파일의 빌드라도 해 보고 텐서플로우 어플리케이션을 제작하는 것과


그렇지 않은 것 사이의 이해도가 상당히 차이난다는 점이었습니다


실제 APK 파일이 어떻게 구성된 것인지부터


빌드되기 위한 환경과 그 과정을 상세하게 따라가면서 전반적인 흐름을 익히기 좋기 때문입니다


완벽한 설명은 되지 못하더라도, 텐서플로우를 공부하려는 많은 분들에게 도움이 되었으면 좋겠습니다

'Projects > SnapLearn' 카테고리의 다른 글

A-01. 바젤(Bazel) 알아보기  (6) 2016.08.26
Snap Learn 프로젝트 개요  (0) 2016.08.04

1. Snap Learn 프로젝트에 대하여


최종 결과는 텐서플로우 안드로이드 데모 한글화에 그쳤다.



2014년 스티븐 호킹 박사는 인공지능에 대해 이렇게 말했습니다


인공지능 기술 개발은 인류의 멸망을 불러올 수 있다


이 말이 옳은 것이든 그른 것이든 인공지능이 우리의 삶을 변화시킬 가능성은 충분합니다


이에 인공지능이 정확하게 무엇인지 알아보고, 가능하다면 이러한 인공지능을 직접 구현해보고자 LIME의 멤버가 모였습니다


마침 2015년에 구글에서 내놓은 TensorFlow라는 혁신적인 오픈소스 머신러닝 프로그램이 등장했습니다


이에 4명의 LIME 멤버는 TensorFlow를 기반으로 머신러닝과 인공지능에 대해 학습해 나가고,


학습이 어느 정도 진행된 다음에는 직접 사물에 대한 인식, 구분 등이 가능한


혹은 자연어에 대한 분석과 표현이 가능한 인공지능을 Android Application으로 개발하기를 기획했습니다




기본적으로 윈도우 환경에서 작업을 시작하나, 상황에 따라 Ubuntu 등의 환경으로 변화될 수 있습니다


TensorFlow 에 대한 스터디는 Sung Kim 교수님의 딥러닝 강의를 기반으로 진행합니다


Android Application 의 개발은 Android Studio를 기반으로 진행합니다









'Projects > SnapLearn' 카테고리의 다른 글

A-01. 바젤(Bazel) 알아보기  (6) 2016.08.26
Prologue : Tensorflow Android Demo Application  (0) 2016.08.25

+ Recent posts