잘생긴 얼음의신님의 이글루입니다

qordidtn02.egloos.com

포토로그



[tensorflow]SNPE(1) - Ubuntu에 설치하기

SNPE를 한번 다뤄보겠습니다.


SNPE란?

SNPE는 퀄컴에서 제공하는 tool(?) 같은 것인데요
Snapdragon의 cpu, gpu, dsp등을 선택하여 neural network 모델을 돌릴 수 있도록 해줍니다.
phone ap로 dnn모델을 돌릴 때 발생하는 한계점들을 보완하여 phone에서도 빠르게 dnn모델을 돌릴 수 있도록 한다고 안내하고 있습니다.
gragh.pb파일을 SNPE를 이용해 snapdragon에 최적화된 컨테이너로 감싸진 dlc파일로 변환한다고 합니다.


그렇다면 SNPE를 한번 Ubuntu에 설치해보도록 하겠습니다. 


Virtual box설치, Ubuntu 설치에 관한 설명은 넘어가도록 하겠습니다. 
Virtual box설치, Ubuntu 설치까지 완료되었으면 tensorflow설치를 위해 필요한 것들을 하나하나 설치해보겠습니다.

1. Anaconda 설치

1)Anacondainstaller Download(https://www.anaconda.com/download/#linux)
2) Ubuntu Terminal에서[bash Anaconda-latest-Linux-x86_64.sh ]
3)라이센스 승인 및 설치할 주소 설정/PATH 지정  --> 모두 yes또는 y를 입력하여 넘어가주면 됩니다.
4)Terminal재부팅
6)condalist 입력시 라이브러리가 제대로 나온다면 설치 완료입니다.


2. Bazel설치
bazel은 tensorflow build tool입니다. snpe에서 tensorflow를 사용하기 위해선 꼭 설치해야합니다.

2-1. OpenJDK 8 설치
1)sudoapt-get update
2)sudoapt-get install openjdk-8-jdk
3)sudoadd-apt-repository ppa:webupd8team/java (Ubuntu 14.04.XX LTS의경우)
4)sudoapt-get update && apt-get install oracle-java8-installer
5)sudojava –version 이 잘된다면 설치완료

2-2. Bazel배포URI를패키지에 추가
1)echo"deb [arch=amd64] http://storage.googleapis.com/bazel-apt stablejdk1.8" | sudotee /etc/apt/sources.list.d/bazel.list
2)curlhttps://bazel.build/bazel-release.pub.gpg | sudoapt-key add

2-3. Intsall
1)sudoapt-get update &&sudoapt-get install bazel
2)sudoapt-get upgrade bazel


3. SNPE설치

3-1. NDK install

3-2) Tensorflow설치
1)sudoapt-get install python-pip python-dev python-virtualenv
2)mkdir ~/tensorflow; virtualenv--system-site-packages ~/tensorflow;source ~/tensorflow/bin/activate
3)pipinstall --upgradehttps://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl
4)pyhton 입력후 import tensorflow 입력시 error가 발생하지 않으면 설치 완료

3-3 .SNPESDK download 
2)/home/snpe-sdk/경로에 다운받은 파일 위치시킴


3-4.Packageinstall
1)sudoapt-get install python-dev python-matplotlibpython-numpypython-protobufpython-scipypython-skimagepython-sphinx wget zip
2)source~/snpe-sdk/bin/dependencies.sh # verifies that all dependencies are installed
3)source~/snpe-sdk/bin/check_python_depends.sh # verifies that the python dependenciesare installed



4.SNPESDK 초기화설정

1)cd ~/snpe-sdk/
2)exportANDROID_NDK_ROOT=[your ndk path]
3)source./bin/envsetup.sh -t ~/tensorflow 


5. Activate tensorflow & SNPE

1)source~/tensorflow/bin/activate
2)source./bin/envsetup.sh -t ~/tensorflow


여기까지 완료하면
아래와 같이 (tensorflow)가 앞에 생기면서 tensorflow가 활성화됩니다.






그런 다음에 snp-sdk폴더 아래에서 snpe-tensorflow-to-dlc 라고 입력해봅니다.
command not found같은 문구가 나오지않고, 아래처럼 출력된다면 tensorflow와 SNPE모두 잘 설치된것입니다.
 

snpe-tensorflow-to-dlc \

  --graph[model graph file path/name(.pb)] \

  --input_dim[input node name] [input dimension] \

  --out_node [outputnode] \

  --dlc[output model file path/name(.dlc)]



pb파일을 dlc파일로 변환하는 것은 다음 포스팅에서 다루겠습니다~~


[CNN]얼굴인식 with pubfig dataset(1)- dataset download

CNN일 이용하여 얼굴인식 모델을 만들어 보도록 하겠습니다.다른 분들이 개발하셨던 것들을 참고하여 만들어 볼건데요 아마 긴 여정이 될 것 같습니다...Dataset download1)pubfig txt downloaddataset은 기 제공되고 있는  pubfig dataset을 이용할 생각입니다. 아래의 링크에서 다운받을 수 있습니다.&nbs... » 내용보기

[python]array to list, list to array - np.array, tolist()

python에서 array를 list로 변환, list를 array로 변환하는 법을 다뤄보겠습니다.아래의 예제코드를 보면서 설명드리겠습니다.import numpy as npdata = [[0.1,0.2], [0.1,0.2]]data = numpy.array(data)print("array :\n",data)data = data.tolist()print(... » 내용보기

[python]2d array to image - array를 image로 바꾸기

image array를 image로 바꾼 후 저장해보도록 하겠습니다. 이번에는 scipy.misc라는 것을 사용해보겠습니다. 저는 1차원 데이터를 2차원 데이터로 바꾼후 이를 이미지로 바꿔 저장했습니다.보안상 코드 전문을 공개하지 못하는 점 양해 부탁드립니다.코드는 아래와 같습니다.import scipy.miscdef array2ima... » 내용보기

[python]image rotation,filling blank space -image 회전,빈공간채우기

PYHTHON을 이용하여 image 회전과, 회전후 생긴 black space(blank space..정확한 명칭이 뭘까요..)를 채우는 코드에 대해서 다뤄보겠습니다.보안상 코드 전체를 공개하지 못하는점 양해 부탁드립니다. 1. image array rotation(이미지 회전)image array회전과 관련해서 기존에 제공되고 있는 수 많은 ... » 내용보기