Smart Mirror 스마트미러 근황
구글 클라우드 스피치 음성인식 Google Cloud Speech API 사용법 http://jeongchul.tistory.com/544
2016년 8월 10일에 개최된 삼성 아틱 기술경진대회(IoT Innvation Challenge)를 통해
삼성 아틱 Artik을 이용해 스마트 미러를 개발하였습니다.
1차 서류심사와 2차 개발결과물 심사를 통해 본선 진출을 하고, 10월에 본선 COEX 코엑스에서 진행된 한국전자전(KES)에 참가하여 1등을 하였습니다.
결과물은 다음과 같습니다.
https://www.youtube.com/watch?v=-Nby1nvXv4U&t=125s
YTN Science 다큐멘터리 4차 혁명에 10분서부터 나옵니다.
https://www.youtube.com/watch?v=WZwMNsHWd1o
1. 개발 개요
1-1. 과제 개념 제시
o Smart Mirror 플랫폼 구축을 통한 Home IOT 및 대화체 구현
- Smart Mirror란 사용자의 모션/음성/감정을 인식하여 제어하며 거울을 디스플레이로 활용하는 기술이다. 이를 통해 사용자에게 유용한 기능 제공한다. 본 과제에서는 크게 4가지 기능을(비서기능, 음성제어, 모션제어, 대화체) 구현하였다.
- Smart Mirror를 통해 출근 전 음성/디스플레이를 통해 현재 교통상황을 알려주고 음악감상, Youtube 동영상 감상 등 다양한 기능이 내장되어있다. 거실/욕실/침실 등 집안 곳곳에서 사용되며 Artick Cloud를 이용하여 사용자의 음성/모션에 맞춰 가전기기의 컨트롤이 가능하다.
- 사용자 감정인식 기능이 내장된 인공지능 대화체를 통해 기본적인 대화가 가능하다. Smart Mirror는 영상을 통해 사용자의 표정을 인식하여 사용자의 감정을 인식하게 된다. AI는 사용자 감정에 맞는 응답으로 사용자와 감정적 대화를 한다.
- 스마트폰 어플리케이션을 통해 어디에서든 사용자가 Mirror 제어 가능.
- 본 프로젝트는‘ARTIK Product’을 이용하여 구축된 Smart Mirror는 Artik 10과 Artik 050을 이용하여 제작되었다. Artik10, 스피커, 카메라, 디스플레이가 내장된 Mirror 제품과 Artik050 및 릴레이스위치로 구성된 Smart Plug 제품으로 구성된다. Mirror 플랫폼 구축을 통해 추후 기능 확장이 용의하다.
< Smart Mirror 전면사진 > | < Smart Mirror 후면사진> |
1-2. 기존 기술대비 차별점
o Smart Mirror ( LG U+, PLANURI, Lugo, )
- 기존 스마트미러는 디스플레이에 거울이 내장된 제품이다. 현재 시장이 확대되어 가고 있으며, 의류매장의 가상 피팅솔루션, 성형외과나 화장품 샵의 피부 관리 솔루션, 거울을 이용한 광고플랫폼 등 다양한 분야에서 사용된다. 국내에는 한샘과 LG U+의 합작인 LTE 매직미러, 중소기업의 스마트 미러가 존재한다. ‘거울 + Display의 기능이 주를 이룬다’
o 음성인식 스피커 NUGU ( SK텔레콤 )
- 인공지능 음성인식 스피커인 누구는 음성명령을 통해 음악듣기, 일정관리, 가전기기 ON/OFF 기능을 수행한다. 소형인 대신 ‘Display 기능이 존재하지 않다’
※ 모두의 스마트 미러는 기존 Smart Mirror + 음성인식 스피커의 기능과 추가적으로 ARTIK Cloud를 통해 Home IOT를 구현 하였다. 또한 표정/모션 인식은 추후 무궁한 발전이 가능하다. 그리고 누구나 집에 가지고 있는 거울을 통한 IOT 플랫폼 구축을 통해 다양한 시장진출의 가능성을 보였다.
1-3. 변경사항
o 계획 대비 변경 사항
- 목표 및 개발내용은 계획기반으로 100% 이상 수행완료
- ARTIK5는 HDMI Port 부재와 내부용량 문제로 사용하지 못하였음.
※ GUI 환경을 위한 Xwindow 설치용량 제한
- ARTIK10은 병렬적인 개발을 위해 사용하였고 Mirror에는 1대만 장착
구분 | 변경 전 | 변경 후 | ||||
목표 | 개발 전 목표 대비 100% 이상 진행 | |||||
개발내용 | 영상 전송 : CCTV 기능을 위해 실시간 영상을 앱과 웹으로 제공. | 아틱 클라우드 한계로 인한 기능 제거 | ||||
아틱 수량 | ARTIK 050 | ARTIK 5 | ARTIK 10 | ARTIK 050 | ARTIK 5 | ARTIK 10 |
1 | 1 | 2 | 1 | 0 | 1 |
2. 개발목표 및 내용
2-1. 개발목표
o 개발 목표
- ARTIK을 이용해 스마트 미러 제품을 개발하고, ARTIK Cloud를 이용해 스마트폰의 Android APP과 컴퓨터의 WEB 환경에서도 상호 연동하여 이 기종 환경에서 연결을 목표한다.
- ARTIK Cloud를 이용한 네트워크 통신으로 스마트 미러와 스마트 폰 및 주변 기기와 연동을 진행한다.
- 음성 인식 기술과 영상 인식 기술을 사용하여 전체적인 스마트 미러 프로그램을 컨트롤하고, 스마트폰 앱과 PC 웹을 통해서 운용할 수 있다.
o 개발 범위 및 기능 구현 수준
- GUI : 사용자 편의성에 맞춰진 UI를 통해 기본적으로 날씨와 교통량에 따른 도착정보, 실시간 동기화 된 캘린더 일정 및 스마트폰 알림 배치
- 음성인식 : STT(Speech To Text) 기술을 이용해 사용자의 음성을 텍스트로 변환 받아 미러를 컨트롤. 음성 인식은 80가지 언어를 제공.
- 음성 출력 : TTS(Text To Speech) 기술을 이용하여 텍스트를 나레이션(남/녀) 음성으로 변환하여 사용자와 대화 형태 및 알림 기능 제공.
- 영상 처리
1) 모션인식 : Opencv를 이용해 손가락 개수를 감지하고 이를 클라우드를 서버를 통 해 주변 장치를 컨트롤 – 손가락 1~5 갯수 감지 가능
2) 감정인식 : 사용자의 6가지 표정을 인식. (평소, 즐거움, 화남, 놀람, 역겨움, 슬픔)
- 인공지능 대화체 : 음성인식/출력 감정인식 기능을 결합하고 자체 DataBase 및 대화 API를 통해 인공지능 대화체 구성. 사용자의 말에 따라 응답하고 감정을 인식하여 이에 맞는 대화 수행.
o 홈 IOT 허브 기능
- 홈 IOT 허브로서 Cloud Server를 통해 ARTIK050과 연결된 주변 기기 제어가능. 어플리케이션을 통한 음성 및 거울에 장착된 카메라를 통해 사용자의 모션을 인식하여 가습기, 스탠드, 온풍기, 모니터의 ON/OFF상태를 제어. 클라우드를 통해 제어되므로 Wifi가 연결된 환경이라면 어디에서나 제어 가능 -> 삼성의 스마트 싱즈를 보완/대체 가능
2-2. 개발내용 (시스템 구성도 및 운영 시나리오 내용 필수 포함)
< 전체 개발 구성도> |
o HW 개발 – Mirror 및 가전기기 제어 Connecter
- 유리 전면 부에 반 이중 미러 필름을 부착하며, 유리의 후면 부에 디스플레이 장착
- 음성인식을 위한 마이크, 음성 출력을 위한 스피커, 영상 처리를 위한 카메라를 ARTIK10에 연결하고 유리 후면 부에 장착한다.
- 스마트 미러를 통해 전원이 연결되는 가전기기 제품의 On/OFF를 위해 콘센트와 릴레이 스위치를 부착하고 ARTIK050의 GPIO를 이용하여 220V 전기 전원 제어
o Mirror 내 SW 개발
- ARTIK10 OS로 Linux Fedora를 설치하여 개발 환경을 구축한다. 스마트 미러에 들어가는 웹/앱으로 GUI를 제공하는 Electron 환경에서 작동된다.
- 개발 언어로는 JavaScript와 Node-JS를 사용하여 웹 서버를 구축한다.
- Mirror의 GUI 환경 전반은 CSS로 개발하며, HTML5 언어로 전체적인 레이아웃 구조와 컨텐츠를 작성한다. 각 메뉴에 대한 실제 기능은 JavaScript와 API를 적극 사용하여 개발하고 애니메이션 기능은 JQuery로 개발한다.
- 음성인식 API로는 우선 Google Speech API를 사용하여 개발하고 STT(Speech To Text) 기술로 사용자의 음성을 텍스트로 변환하여 각 텍스트를 데이터베이스의 값과 비교하여 해당 명령에 대한 기능을 JavaScript로 실행하는 방식으로 개발한다.
- Mirror 내 자체 웹 서버는 Node-JS 및 Express를 사용하여 구현하며 Web Socket 통신을 통하여 클라우드와 데이터 송수신을 하도록 개발한다.
- 영상처리의 모션인식은 Opencv C++로 이용하여 구성하였으며 Contour와 Convexity Defects를 이용하여 손가락의 개수를 검출하였다.
- 영상처리의 표정 인식은 Opencv Python을 이용하여 구성하였다. 표정인식은 데이터 학습을 통해 진행되므로 학습이 간편한 Python을 이용하여 개발을 진행하였다. 아틱 내 실행 시 속도개선을 위해 LBP Cascade를 이용하여 얼굴을 검출하고 얼굴 영역에서 사용자의 표정을 인식한다. 사용자 표정을 인식하기 위해 LDA라는 선형판별분석법(Fisherface)를 이용하였다. 총 8가지 표정(사진 560장)을 이용하여 데이터를 학습시킨 후, 이 데이터와 사용자의 검출된 얼굴 데이터를 비교하여 사용자의 표정을 판별한다.
o Mirror GUI
1) 현재 시간을 나타내는 부분 2) 당일 일정 - 구글캘린더와 연동되어 당일 일정을 나타냄 3) 당일 날씨 - 당일 날씨정보 제공 4) 목적지 이동정보 - 현재 위치와 이동하고자 하는 목적지까지 예상시간 5) 스마트폰 알림 - 페이스북 알림, 카카오톡, 메일 스마트폰에서 울리는 알림 실행 |
o Mirror 연동 기기 어플리케이션 개발
- Android Studio를 이용한 Android App 개발 진행
- 어플리케이션의 UI는 스토리 보드를 이용해 기본적인 메뉴와 기능 작성을 토대로 디 자인 구성
- 사용자 스마트폰과 Mirror 연결 시 스마트폰의 Push 메시지 및 알림 서비스 제공을 위해 Notification Service를 사용하여 패키지명을 분석하고 Text 형태로 Mirror와 네트워크 통신하여 데이터를 전송한다.
- Smart Mirror에서는 WebSocket 통신으로 데이터를 받아 GUI 환경에서 디스플레이 한다.
o Mirror Cloud / Server 개발
- 기본적인 Cloud의 서버 구성을 통해 Cloud의 양방향 통신 중 WebSocket 프로토콜을 사용하여 Artik Cloud - Smart Mirror 간 데이터 공유
- Smart Mirror 구동 App을 ARTIK Cloud 서비스에 연결하여 스마트폰의 Android App 또는 PC 다른 환경의 디바이스와Web 및 데이터를 주고 받는다.
- Smart Mirror의 현재 상태(설정, 실시간 비디오)를 수집하여 App, Web에서 본다.
o 가전기기 제어 컨트롤러 개발 – ARTIK050
- 주변 Wifi를 검색하고 ARTIK Cloud 서버를 통해 Mirror와 데이터 공유
- Mirror에서 보낸 가전제품의 ON/OFF 명령을 Cloud를 통해 받아 GPIO 컨트롤을 통해 Relay 스위치 조절
o 사용 기술 및 API
기술 | 기능 | API |
음성 인식(STT) 기술 | 사용자의 음성을 인식 | Google Speech API |
음성 출력(TTS) 기술 | 인공지능 대화체의 목소리를 출력. | Responsvie Voice API |
대화DB | 사용자의 음성에 맞춘 응답 Data | 심심이 API |
날씨 | 실시간 날씨를 제공. | Forecast API |
달력 | 구글 계정의 캘린더를 통해 스마트 폰 웹과 스마트 미러 동기화. | Google Calendar |
뉴스 | 실시간 뉴스 제공. | Google News |
도착지 시간 정보 | 집에서 지정한 도착지까지의 도착 시간 정보를 실시간 교통을 반영하여 제공. | Bing Map Route API |
버스 도착 정보 | 실시간 버스 도착 정보 제공 | Seoul Open Data API |
지하철 도착 정보 | 실시간 지하철 도착 정보 제공 | Seoul Open Data API |
지도 | 원하는 지도 검색. | Google Map API |
음악 서비스 | 사용자 트랙 음악 재생 서비스 | Sound Cloud API |
사진 서비스 | Instagram을 이용해 검색된 사진 디스플레이. | Instargram API |
동영상 서비스 | Youtube 동영상 제공. | Youtube API |
영상 인식 기술 | 카메라를 통해 사용자의 표정 및 모션을 인식. | Open CV |
카메라 촬영 기술 | 사진과 동영상 촬영. | Camera |
스마트 폰 연동 알림 서비스 | Application과 연동되어 전화, 문자, 메일, 페이스북, 카카오톡 등 알림 제공 | Google Application Notification Service |
o 운영 시나리오
1) 미러 실행
- ARTIK10 전원 스위치 ON -> node.js로 작성된 Mirror Main 프로그램 실행
-> systemctl set-default graphical.target 명령어 및 init.d 수정을 통해 전원 ON시 미러 프로그램 실행으로 변경가능 (동영상 촬영을 위해 수동으로 실행)
2) 음성 인식
- 스마트폰 어플리케이션을 통해 음성으로 Mirror에게 명령
(1) 전체 메뉴 기능
(2) 홈 이동
(3) YouTube 동영상 재생
(4) 현재 내 위치 정보
(5) 지하철 도착정보
(6) 실시간 Hot Topic 뉴스 정보 제공
(7) 스마트폰 알림 시 페이스북
<미러 IP 연결> | <미러 음성 명령 전송> | <사용가능 한 명령어> |
3) 타기기 제어
- 미러와 연결된 가습기, 온풍기, 스탠드, 모니터의 ON/OFF 동작 확인
<가습기 ON/OFF> | <온풍기 ON/OFF> | <스탠드 ON/OFF> | <모니터 ON/OFF> |
※ 풀 버전 영상에서 모든 작동 동작을 확인 할 수 있습니다.
4) 모션인식
- 사용자의 손가락 개수를 인지하여 미리 정해진 명령을 실행
< 손바닥 색 추출 > | < 손가락 개수 인식 > | < 가습기 작동 > |
5) 감정인식 대화체
- 사용자의 감정을 인식하고 상황에 맞춰 미러가 사용자와 대화 진행
<슬픔 인식> | <화남 인식> | <보통 인식> |
6) 미러 종료
- 미리 지정된 명령어 (잘자 미러)를 통해 미러 프로그램 종료
- 시퀀스 다이어 그램
< 전체 동작 시나리오 > |
3. 개발방법 및 일정
3-1. 개발방법 및 전략
o ARTIK 개발자 포럼 및 Github 활용
- ARTIK 내부 문제 (Fedora 최적화, 동작오류)를 해결하기 위해 개발자 포럼 및 리눅스 커널 관련 자료 참고
- 짧은 개발 일정을 만족시키기 위해 Github Source를 참고하여 ARTIK과 본 제품에 맞 게 수정
o 임베디드화를 위한 속도 최적화
- GUI환경을 위한 Desktop 구성 시, 기존 Gnome Window가 적용 된 Fedora Workstation 설치 시, 구동이 전체적으로 느려지는 문제 발생. Mali-T628가 OpenGL을 지원하지 않아 기존 Desktop 환경 + armsoc driver 설정 시 현격한 속도 저하 현상 발생 -> Desktop 중 가장 가벼운 "LXDE Desktop”환경 및 우분투에 이용되는 Fbturbo 드라이버를 구성하여 문제 해결.
- 사용자 얼굴인식을 위한 Haar Cascade 사용 시 심각한 속도 저하 문제 발생, Floating Point 연산이 문제점 발생이 예상되어 LBP Cascade를 이용하여 문제 해결.
o ARTIK 050 MQTT 통신
- ARTIK 050와 Artik Cloud 통신 시 기존 MQTT 통신 방법으로 접속이 안되는 문제 발생. SSL MQTT(Secure_MQTT)를 WICED 환경에서 구현하기 위해 WICED Apps-snip의 secure_mqtt 예제에서 resource_get_readonly_buffer 함수를 적용하고 resources -apps-aws_iot 내 rootca.cer 증명서를 이용하여 Artik 050 - Artik Cloud 간 MQTT 접속 문제 및 데이터 송수신 문제 해결
o 아틱 활용/적용 기술
1) Linux Fedora
- ARTIK10 OS로 Linux Fedora를 개발 환경을 구축
2) GUI
- Fedora Xwindow 및 웹/앱 Electron 사용
- CSS 및 HTML5
- JQuery를 이용하여 간단한 애니메이션 구현
3) 음성인식
- Google Speech API를 사용 및 STT(Speech To Text) 기술로 음성 -> 텍스트로 변환
- JavaScript로 Database 검색하여 실행
4) 웹 서버 구축
- Mirror 내 자체 웹 서버는 Node-JS 및 Express를 사용하여 구현
- Web Socket 통신을 통하여 클라우드와 데이터 송수신
5) 영상 처리
- 모션인식은 Opencv C++, 표정 인식은 Opencv Python을 이용
6) Mirror Cloud / Server 개발
- ARTIK Cloud 서비스를 이용하여 WebSocket 프로토콜을 사용하여 데이터 공유
7) 가전기기 제어 컨트롤러 개발
- ARTIK050의 서버 접속 및 GPIO 컨트롤을 이용하여 가전기기 컨트롤
- WICED Secure_MQTT 및 CA를 이용한 Artik Cloud 접속 / MQTT 통신을 통한 센서 데이터 및 Action 데이터 송수신
'스마트미러' 카테고리의 다른 글
Google Voice Kit 2 (4) | 2018.06.06 |
---|---|
Google Cloud Speech 음성인식 API python, nodejs (27) | 2017.08.29 |
SAMSUNG ARTIK with Smart Mirror (1) (3) | 2016.09.22 |
Smart Mirror 스마트 미러 만들기- 7 앱 Application 편 (19) | 2016.05.09 |
Smart Mirror 스마트 미러 만들기- 7 발표 PPT (9) | 2016.04.17 |