Windows 10 이 공식적으로 bash를 지원할 계획이라는 소식을 완전히 잊고 지내고 있을 무렵, 

딥 러닝에 대해 공부해보려고 TensorFlow, Caffe 등을 사용설치해 보고 있었다.
서브시스템인 맥으로 Tensorflow를 공부하고 있던 터라 GPU 가속을 한번 해보고 싶어 우분투를 설치하려 하고 있었다.

그 순간 다시 기억이 났다. 윈도우에서 '곧' bash를 정식으로 지원할 거라고... 그것도 우분투를 통째로 흡수한 형태로..

서론은 여기까지 하고 설치한 과정을 한번 적어보았다.


우선, 빌드 14316 이상의 Windows 10 이 있어야 한다(Pro, Home, Enterprise 등의 에디션은 상관없다고 한다). 

이를 위해서는 Insider Preview Program 에 참가하여 Preview 빌드를 받아야 한다. (여기서 받자)

주의할 점은, Insider Preview 는 말그대로 프리뷰이다. 베타버전임으로 매우 불안정하다. 매인 OS로 쓰기에 적합하지는 않을 터이니 파티션을 하나 더 만들던가, 가상머신을 이용하도록 하자. (필자는 가상머신을 이용하였다.)


 

Preview 빌드를 받는곳에 들어가서 스크롤을 조금 내리면 Select Edition 이라는 드롭다운이 나타난다. 필자는 Pro(아무 글자가 없음)  버전을 사용하였고, 빌드는 가장 최신인 14322버전을 선택하였다. confirm을 누르면 언어 선택하라고 나온다. 원하는 언어를 선택하자. 

다음으로 64bit 인지 32bit인지를 물어본다. 원하는 것을 클릭하면 드디어 다운로드가 시작된다.


 빌드는 ISO 형식으로 다운로드 된다. 별도의 파티션에 설치하여 부팅한다면 일반적인 윈도우 설치 과정과 동일하게 진행하면 된다.

가상머신에서 사용할때도 여타 OS와 다를것 없이 순조롭게 부팅&설치가 된다.


필자는 Hyper-V 와 Virtualbox 가장 최신 버전에서 설치를 해 보았다. 둘 다 무료이니 편한것을 선택하자. (Hyper-V 보다는 VirtualBox가 기능은 많다. 또한 Hyper-V  사용시에는 다른 VM 소프트웨어에서 64bit 게스트 운영체제를 부팅할 수 없으니 주의해야한다.)



운영체제 설치가 순조롭게 끝났다면 윈도우에 bash를 설치해야 한다.

우선, 설정->업데이트 및 복구->개발자용 에 들어가서 '개발자 모드'에 체크해 준다(스샷 참고).


다음으로, 제어판(설정과 다르다)->프로그램 및 기능->Windows 기능 켜기/끄기 에 들어간다


나타난 Windows 기능 이라는 창에서 'Linux용 Windows 하위 시스템(베타)'에 체크하고, 확인을 클릭해 준다.(베타 운영체제의 베타?)

무언가 설치한 후에 PC를 재시작 하고 나면 끝이 아니라(하핳)

cmd(명령 프롬프트)에 들어가서 bash를 입력해 준다.

무언가 ????가 많이 나오는데 글자가 깨지는것 같다. [Y/N]을 물으면 y를 한번 입력해 준다.

잠시 기다리면 설치가 완료되고 bash로 넘어간다. 설치 과정에서 꽤 오래 멈춰있을 수 있는데, 몇 분 정도 걸리는 것이 정상이다.


bash에 들어왔으니 이제 Tensorflow 를 설치해 보자.


다른것들을 설치하기 전에 sudo apt-get update를 한번 해 주고 넘어가자.


공식 가이드 의 방법 중 필자는 pip를 사용하여 설치하였다.


우선 pip와 여타 툴들을 설치한다. (Python은 최신으로 설치되어 있다.)

sudo apt-get install python-pip python-dev


설치가 완료되면 Tensorflow를 설치하자 (cpu only 버전. GPU enabled 버전은 다른 포스트로 공유할 예정이다)

sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl


사실 Tensorflow 설치는 이게 끝이다..

이후 bash에서 python 을 실행한 후 공식 테스트 예제(?)를 따라하면 정상적으로 동작한다

$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>




MS의 왠지모를 자비(?)덕분에 윈도우에서도 Tensorflow를 사용할 수 있게 되었다. 

참고로, bash의 파일시스템은 윈도우 파일시스템과 동일한 디렉터리를 가리킴으로 여타 IDE를 사용하기에도 별 문제는 없을것이다.  

GPU enabled 버전은 설치는 성공했지만 가상머신인 관계로 디바이스가 없다는 오류가 나타난다. 

다음에 가상머신이 아닌 실제 PC에서 진행한 후 오늘과 같이 글을 적어 볼 예정이다.





'AI' 카테고리의 다른 글

Pycharm 원격 빌드 설정하기  (8) 2016.07.25
딥러닝과 행렬  (4) 2016.06.26

저번에 R&E 연구를 위해 라즈베리파이를 세팅하는 과정을 올렸었습니다.

그 주제가 iBeacon 을 통한 실내 정밀측위 알고리즘의 개발이라 관련한(연구한) 알고리즘에 대해 몇자 적어봅니다.


iBeacon으로 거리를 측정하는 방법은 우선 이렇습니다. Beacon 발생기(HM-10 사용)를 이용하여 Beacon 신호를 주기적으로 송출하면 BLE(Bluetooth Low Energy) 4.0 이상을 지원하는 다른 기기 및 모듈에서 Beacon 신호를 검색할 수 있습니다. 검색을 하게되면 TxPower(송출신호크기), RSSI(신호의 세기), 모듈의 UUID 등의 정보를 얻을 수 있습니다. (아래 그림 참고)


-57이라고 적혀있는 rssi 값고 -59라고 적혀있는 TxPower 보이시나요? 그리고 제일 위에 있는 이상한 숫자와 영문자 조합이 UUID입니다. 이 UUID로 비콘을 식별할 수 있습니다. 우선, 거리를 측정하기 위해서 필요한것은 rssi와 TxPower 두가지밖에 없습니다. 원리는 간단합니다. 거리가 멀어질수록 신호 세기가 약해져서 rssi값이 낮아지는 것을 이용한 것입니다. 계산하는 공식은 이렇습니다.

RSSI = -10nlogd + TxPower

여기서 d는 거리, n은 전파 손실도와 관련된 값인듯 한데, 장애물이 없는 공간에서는 n=2로 생각하고 계산하면 된다고 합니다.

여기서 얻고싶은 값이 d이기 때문에 수식에 조금 변형이 필요하겠죠?

이항하여 정리하면

d = 10 ^ ((TxPower - RSSI) / (10 * n)) 

을 얻을 수 있습니다.

하지만 여기서 발생하는 문제. 

측정된 값은 스칼라 값으로 방향에 관한 정보가 없고, 송신모듈로부터 얼마나 떨어진것인가 밖에 측정할 수 없게 됩니다.

(참고로 스칼라 값이란 흔히 사용하는 숫자값입니다. 양만을 나타내고 방향에 관한 정보는 없습니다.

반대로 벡터값은 양과 방향에 대한 정보를 모두 가지고 있습니다. 주로 화살표로 표시하구요.)

다시 본론으로 돌아오면, 스칼라값을 이용해서 상대적인 위치를 확인해야 합니다. 즉, 방향을 확인해야 합니다.

처음에는 약간 낯설수도 있는데요, 그럼 이렇게 한번 생각해 봅시다. 송신모듈의 좌표를 (0,0)에 놓고, 측정된 거리를 반지름으로 하여 원을 그려봅시다.

그러면 감이 오시나요? 

네 맞습니다. 바로 원들을 이용하여 방향을 결정합니다. 원들의 교점을 이용하여 유일한 한 점을 결정하는 방법입니다.

하지만 이러려면 원이 여러개 있어야 합니다. 한번 생각해보죠.

원이 두개가 있으면 이론적으로는 교점이 1개(접점) 혹은 2개가 생기게 됩니다. 1개만 생긴다면 좋은데 2개일때가 문제이군요.

그러면 원을 3개를 사용하면? 교점이 2개인 상태에서 원 하나를 더 교차시키면 그중에서도 하나를 찾을 수 있죠.

그러므로 원을 최소 3개를 사용해야 합니다.

아래의 그림을 참고하세요 (밑에는 4개인 상황을 가정했습니다. 하지만 결과적으로는 같은 값을 얻을 수 있습니다.)

위의 그림에서 C1,2,3,4 은 각각 비콘신호 송신모듈의 위치이며 편의상 정사각형의 형태로 배치하였습니다. d1,2,3,4 는 각각의 송신모듈에서부터 측정된 거리입니다. 

같은색으로 그려진 원들이 각 거리를 반지름으로 하여 그린 원의 일부입니다.

그러면 이론적으로 한 점에서 3개의 원이 교차하는 교점이 생깁니다. 바로 저 점의 좌표를 찾으면 저희가 원하는 위치를 알아낼 수 있습니다.

하지만 이건 어디까지나 '이론적'인 부분이구요, 실제에서는 엄청난(?)오차 때문에 한점에서 교차할 일이 거의 없습니다. 

다음 포스팅에서는 한점에서 만나지 않을때 위치를 찾는 방법과 실제로 원의 방정식을 연립하여 위치의 좌표를 가져오는 식을 유도해 보도록 하겠습니다.




학교에서 R&E 연구를 목적으로 본격적으로 라즈베리파이2를 사용하게 되었습니다.

라즈베리 파이는 라즈베리 제단에서 제작한 교육용 임베디드 보드 입니다. 

35$ (한화 약4만원) 밖에 하지않는 가격이 특징이라면 특징이라고 할 수 있죠.

(참고 : https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC_%ED%8C%8C%EC%9D%B4)


제가 사용하게 된 모델은 버전 2의 B 모델입니다.

35달러의 가격선에서는 최고라고 할 수 있는 '900 Mhz ARM Cortex-A7 쿼드코어' 가 장착되어 있습니다(35달러에 무려 쿼드코어...)

이 값싸고 엄청난 녀석이 R&E 연구에서 비콘노드들로 상대적인 위치를 계산하는 작업을 하는데 사용할 메인 컴퓨터가 될 녀석입니다.

저희는 이 녀석에게 Windows 10을 탑제해 그냥 전용 계산기로 만들어버리기로 했습니다(사실 이건 핑계고 제가 C#을 무지 좋아해서...)


라즈베리 파이 2에 윈도우를 설치하려면 다음과 같은 준비물들이 필요합니다,

1. Windows 10이 설치된 컴퓨터 (라즈베리파이 말고)

2. 8GB 이상의 micro sd카드. 마이크로소프트에서는 class 10 이상을 권장. (5천원 미만으로 구매하실 수 있습니다-> 클릭)

3. Micro USB 전원. 마이크로소프트는 1.0A 이상을 권장. (일반 휴대폰 충전기 사용하시면 됩니다. 다만, 외부 장치들을 많이 연결하실 계획이라면 2.0A 이상을 권장합니다)

4. Micro SD카드 어댑터 혹은 리더. (이미 집에 있으신 분이 많으실 겁니다. 아니라면 여기 몇백원에 구매하실 수 있습니다.)

5. 이더넷 케이블. (일반 랜선 사용하시면 됩니다.)

6. HDMI 케이블과 모니터. (모니터는 집에서 사용하시는 모니터나 TV가 HDMI를 지원할 겁니다. 케이블은 여기서 구매하실 수 있습니다)


1.  라즈베리파이용 Windows 10 다운로드

*아직 Windows 10 iot 버전이 정식 출시는 되지 않은 듯 합니다. 그래도 RTM이나 Insider Preview 프로그램에 참여하여 이미지를 받을수는 있습니다. 

저도 Insider Preview 중 가장 최신버전 (2015.10.28 기준) 을 사용하였습니다.*


우선 다운로드 페이지 에 들어가시면  두가지 옵션이 등장합니다.

이중 RTM 버전은 회원가입 없이도 다운로드 받을 수 있고, Insider Preview 버전은 해당 프로그램 참여자만 받을 수 있습니다.

Insider Preview가 실제로는 더 상위 버전을 포함하며, Windows 10 Insider Preview 프로그램에 참여하셨던 분이라면 무리없이 로그인 후 다운받으실 수 있을겁니다.

다운받으신 후에는 설치파일을 실행시켜 간단히 설치해 주세요.


2. Micro SD 카드에 Windows 10 iot 설치

1번 과정에서 모든 설치가 끝나셨다면 WindowsIotImageHelper 라는 프로그램이 설치되어 있으실 겁니다.

먼저 SD카드를 컴퓨터에 인식시킨 후 위의 프로그램을 실행하면 인식된 SD카드가 목록에 보일겁니다.

다음으로, SD카드를 선택한 후, 밑에서 Browse 버튼을 클릭하여 ffu파일을 선택합니다. (특이하게 ffu가 플래싱 이미지 입니다)

마지막으로 맨 하단의 Flash 버튼을 클릭하시면 알아서 플래싱이 진행됩니다. 이때 등장하는 검은 cmd창은 플래싱이 완료되기 전까지 종료하시면 안됩니다.


3. 2에서 만든 SD카드로 부팅

라즈베리 파이를 HDMI케이블로 모니터와 연결하고, USB키보드나 마우스가 연결되어 있다면 훨씬 좋겠지요. 이더넷 케이블도 연결시켜 주시기 바랍니다.

2에서 정상적으로 플래싱이 마무리 되었다면, 해당 SD카드를 라즈베리 파이에 삽입한 후, 전원을 연결해 줍니다.

전원이 연결되고 모든 상황이 정상이라면 화면에 많이 보던 부팅화면이 보이면서 부팅이 되기 시작할 겁니다.

여기서 간혹 1920*1080 모니터에서 정상적으로 화면이 표시되지 않는 현상이 발생하는데, 이는 라즈베리파이의 문제가 아닌, 모니터나 소프트웨어의 문제로 보입니다.

저같은 경우는 다른 4K 모니터에 연결하니 정상적으로 화면이 표시되며 별 오류 없이 바로 부팅되었습니다.


3번까지의 과정을 정상적으로 마치셨다면 라즈베리 파이에는 Windows 10이 쌩쌩히 돌아가고 있을겁니다. 

다음번에는 이녀석에 프로그램을 직접 집어넣어 보도록 하겠습니다.

(크롬에서 작성중인데 포토 업로더가 플래시 지원 중단문제로 작동하지 않아 이미지가 없습니다. 다음부터는 어떻게든 넣어보도록 하겠습니다ㅠ)




+ Recent posts