AWS DeepLens 시작하기

최근 딥러닝는 어렵고 멀기만한 용어가 아니라 마치 하나의 어플리케이션이나 서비스를 만들수 있는 프레임워크와 툴의 형태로 제공되어 많은 개발자들에게 큰 인기를 얻고 있다. Amazon은 AWS에 이미지분석과 딥러닝 프레임워크를 소개한 이후 DeepLens를 제작해서 영상처리 분야에서도 다양한 서비스를 공개했다. DeepLens에 대한 소개는 인터넷에서 쉽게 찾을 수 있기 때문에 소개를 생략하고 DeepLens를 가지고 어떻게 시작할 수 있는지 소개를 하려고 한다.

연구소에서 딥러닝기반 이미지 처리에 관련된 연구를 위해 DeepLens를 구매했다.

AWS의 문서는 꽤 자세히 설명을하고 있지만 몇가지 버전 정보가 맞지 않거나 텍스트 위주의 설명으로 진행하고 있어 가끔은 따라하는데 어려움이 있어 DeepLens를 구입해서 어떻게 설정하는지 설명이 필요할것 같아 블로그에 포스팅을 한다.

DeepLens 구성

DeepLens는 렌즈가 달린 본체와 110v 전원코드를 가진 전원어뎁터 그리고 micro SD 카드가 내용품이 전부이다. 국내에서는 220V를 사용하기 때문에 추가적으로 110V 에서 220V 변환할 수 있는 변환 코드가 필요하다. 전원 어뎁터가 240V까지 자유전압으로 지원된다.

DeepLens는 본체에 Ubuntu 운영체제가 설치되어 있다. 나중에 ssh로 접속할 수있고 apt-get 명령어로 업데이트하거나 필요한 소프트웨어를 설치할 수 있다.

DeepLens 뒤에 micro HDMI 포트가 있어 모니터에 연결하면 Ubuntu 화면을 바로 볼 수도 있고, USB에 키보드를 연결해서 리눅스 터미널을 바로 사용할 수 있다. 처음에 output stream을 설정하는데 Certificates 파일을 등록하고 비밀번호를 입력하라는 메뉴얼 보고 따라했는데 내가 지정한 비밀번호를 아무리 넣어도 틀린 비미번호라고 해서 급하게 micro HDMI를 구입했지만 결국 사용할 일은 별로 없었다. DeepLens Dashboard에서 실제 촬영하는 영상을 stream 으로 미러링해서 Chrome 이나 Firefox로 볼 수 있으니 어렵게 micro HDMI를 구입할 필요는 없어 보인다. 본체 뒤에 있는 reset 버튼은 새롭게 설정할 때 필요한데 꽤 구멍이 작아서 작은 핀셋 같은것이 필요하다.

DeepLens 리전

AWS DeepLens는 아직 Seoul Region에서 서비스가 제공되지 않고 있다. AWS Management Console에서 지역을 N.Virginia 로 지역을 변환한다. 그리고 AWS DeepLens를 선택한다.

DeepLens를 사용하여 프로젝트를 진행하기 전에 가장 먼저 해야할 것은 구입한 DeepLens 디바이스를 등록하는 것이다.

Device 등록

Register device를 선택한다.

디바이스 등록에서 가장 처음에 할일은 AWS 계정으로 DeepLens를 사용하기 위해서 디바이스 이름을 지정하고 IAM 권한을 얻는 것이다. 이름을 입력하고 권한을 만들게 되면 Certificate 파일을 다운로드하는 버튼이 활성화 되는데 .zip 파일로 다운로드가 되고 이 파일은 나중에 DeepLens 설정에 upload 하게 된다. Certificate 파일을 컴퓨터에 다운로드한다.

Certificate 파일을 다운로드하고 난 뒤에 Next 버튼이 활성화가 된다.

DeepLens 설정

이제 DeepLens에 접속할 차례이다. 먼저 DeepLens 본체 앞에 있는 전원 버턴을 누르면 파워온에 전원이 들어오게 된다. DeepLens는 3개의 LED가 있는데 첫번째 LED는 영상을 촬영하고 있을 경우 들어오는 것이고 두번째는 WiFi가 연결되면 들어온다. 세번째는 전원이 들어올경우 켜지게 된다. 디바이스가 아직 WiFi 설정이 되어 있지 않을 경우는 WiFi 빛이 깜빡거리고 있는데 설정이 마치게 되면 꺼져 있다가 인터넷을 사용할 경우 빛이 들어오게 된다.

DeepLens는 USB-ethernet 젠더를 사용하여 인터넷을 바로 연결할 수 있고 WiFi 로 접속해서 설정할 수 있다. DeepLens의 밑에 보면 DeepLens의 SSID 가 있고 SSID에 접속할 때 패스워드가 있는데 내 컴퓨터에서 WiFi로 DeepLens의 SSID 로 접속하면 된다.

DeepLens 본체 밑에 SSID 와 Password가 있다.
내 컴퓨터에서 WiFi 를 DeepLens AP 로 접속한다.

DeepLens는 AMDC-0000 로 시작하는 SSID를 가지고 있다. 맥에서 설정했지만 윈도우도 WiFi 설정에 들어가서 DeepLens를 AP 로 접속하면 된다. 이 때, AP 의 패스워드를 물어보는데 DeepLens 밑에 적혀있는 Password 를 입력하면 접속이 된다.

컴퓨터에서 DeepLens로 접속이 되면 Next 버튼을 눌러 DeepLens의 Console 로 접속을 한다.

여기서부터 AWS 문서와 조금 다르게 진행된다. 버튼을 클릭하면 http://deeplens.amazon.net 으로 URL 변경되는데 다음과 같이 찾을 수 없는 도메인이라고 페이지 오류가 발생한다.

http://deeplens.amazon.net 의 도메인 문제

이 문제는 공식 문서에서 DeepLens 버전에 따라서 다르게 접속을 해야하는데 최신 버전임에도 불구하고 위와 같은 페이지 오류가 발생한다. 이 때 IP 로 접속을 진행한다. http://10.105.168.127 로 접속을 진행한다. 그러면 DeepLens 설정 페이지가 나타나게 된다.

블로그를 포스팅하기 전에 이미 WiFi 에 설정을 진행한적이 있어서 network 설정과 Certificate 파일 그리고 device password 가 모두 설정되어 있지만, 처음 접속하게 되면 WiFi 설정부터 초기화 되어 있다. AP가 된 DeepLens가 사용할 WiFi를 찾아서 설정하면되고 앞에서 Device를 등록할 때 발급받은 Certificate 파일 (.zip) 을 업로드하면 된다. 그리고 Device password를 지정하는데 이 패스워드는 나중에 DeepLens에 ssh로 접속할 때 사용된다.

DeepLens streaming 설정

다음은 Enable video streaming 을 설정한다. DeepLens 설정 페이지 오른쪽 상단에 Enable video streaming 버튼을 클릭한다. 그러면 앞서 Device Certificate 파일과 달리 Streaming을 위한 Certificate 파일을 다운로드 받을 수 있다. 이것은 중요하다. 앞서 받은 Device Certificate 와 달리 Chrome 이나 FireFox에서 DeepLens에서 촬영하고 있는 영상을 실시간으로 미러링으로 보기 위해서 브라우저와 DeepLens 사이에 보안으로 필요한 파일이다. 이 파일이 없으면 streaming 으로 영상을 확인할 수 없기 때문에 반드시 다운받아 둔다. 파일 이름은 download.p12 파일로 다운로드가 된다.

DeepLens Streaming Certificate 와 Chrome 브라우저 설정

Chrome 브라우저로 streaming 을 보기 위해서는 streaming certificate를 맥 운영체제의 KeyChain 에 등록을 해야한다. 맥 운영체제에서 KeyChain 어플리케이션을 연다. 그리고 System 을 선택하고 Category는 My Certificates 를 선택하여 아래와 같이 나오도록 한다.

이제 앞에서 Streaming Certificate 파일을 드래그해서 넣어준다. 처음은 KeyChain 이 변경되어 맥 운영체제의 어드민 패스워드를 물어본다. 이 때는 맥 운영체제의 비밀번호를 입력한다.

Modify Keychain을 선택하면 다음에는 Streaming Certificate 파일의 패스워드를 물어보는데 이 때 비밀번호는 DeepLens 이다. 이 패스워드는 고정값이다. 앞서 우리가 설정한 Device 의 패스워드가 아니라 DeepLens 라는 것을 주의할 필요가 있다. 이것을 몰라서 몇번이나 이 작업을 반복하는 실수를 했었다.

Streaming Certificate 패스워드는 DeepLens 이다.

이렇게 운영체제의 패스워드와 streaming certificate 패스워드를 입력하면 Keychain 에 Video Server Certificate Authority 인증서가 등록이 된다.

Video Server Certificate Authority 인증서 등록 완료

여기까지 진행하면 DeepLens의 등록과 설정이 모두 끝나게 된다. 다음은 등록한 DeepLens를 사용하여 얼굴인식 프로젝트를 만들어보겠다.

DeepLens 프로젝트 생성

AWS DeepLens 콘솔로 돌아가서 Project를 새로 생성한다. Create new project 버튼을 클릭한다.

DeepLens 프로젝트를 새롭게 생성하면 몇가지 템플릿이 제공되는데 Face detection 템플릿을 가지고 프로젝트를 생성해보겠다.

Face detection 템플릿으로 프로젝트를 생성하면 DeepLens와 Inference Lambda 와 함께 Face detection model 이 함께 생성이되고 DeepLens에서 영상을 촬영해서 만들어진 모델로 추론을 시작해서 영상으로 출력을 한다.

프로젝트를 생성하면 다음과 같이 프로젝트에 사용하는 Function과 Model 을 확인할 수 있다. Function과 Model은 DeepLens 디바이스에 deploy를 하는데 Device 가 등록되는데 시간이 필요하기 때문에 DeepLens 디바이스가 등록이 완료되면 deploy를 진행하면 된다.

현재 DeepLens 디바이스를 등록하고 있는 중이다. 얼마의 시간이 지나야 디바이스가 등록된다.

모델은 다음과 같이 MXNet 프레임워크로 만들어져 S3에 올라가져 있다.

MXNet 프레이워크로 만들어진 모델

Function과 Model응 DeepLens 로 deploy

디바이스 등록이 완료되면 Function 과 Model을 DeepLens 로 deploy 시킨다.

DeepLens 디바이스에 deploy 가 완료

이제 DeepLens가 Face detection 을 할 준비를 모두 마쳤다.

DeepLens 출력 설정

앞서 우리는 Chrome Browser가 Streaming out을 하기 위해서 certificate 설정을 했다. DeepLens에 deploy가 마치면 IP address가 할당이 되는데 http://deeplensIPaddress:4000 으로 접속하면 streaming out을 볼 수 있다.

DeepLens 를 사용하여 Face detection streaming out 장면

Leave a Reply

Your email address will not be published. Required fields are marked *