4.최종 보고


                    종합설계 프로젝트 최종보고서 요약

팀명

GoldenTimer 

제출일

2014 5 27

프로젝트 제목

 MotionDariy

설계 프로젝트 개요

프로젝트 수행 내용 및 중간 결과

프로젝트 요약문

우리는 빠르게 변화하는 현대 정보사회시대에 살고 있다이에 따라서 하루하루가 짧고 또한 매일매일 어떠한 일이 일어났는지 기억조차 못 할 때도 많다.

옛 고사성어 중 ‘수신제가치국평천하’라는 말이 있다즉 자신이 무엇을 했는지또한 무엇을 해야 할지 아는 것 즉자신의 시간을 알고 관리하는 것 만큼 중요한 것은 없다.

이에 걷기, 서기, 뛰기 행위인식을 기반으로자신이 어느 위치를 어떻게 다녀왔는지 이동상황을 지도에 표시하여 자신의 생활패턴을 다시 확인하는 계획적이며자기주도적인 생활을 할 수 있게 하는 어플을 개발하기로 정하였다.

이를 가지고 시장으로 나아간다면아직까지 보지 못한새로운 첨단 다이어리를  소유할 수 있다는 장점 뿐 아니라 사용자 중심의 UI가 추가된다면 충분한 시장성도 있을 것 이라고 예측된다.

본 시스템은 생활간에 센서를 통해 데이터를 얻고 전처리 및 특징 추출과정을 통해 분류에 쓰일 유 의미 데이터를 얻어 내어 분류기를 통해 행위정보로 분류를 한다. 분류된 정보를 저장하고 그 정보를 이용해 사용자의 이동경로 및 행위 정보 등을 구글맵, 그래프 등을 이용하여 사용자에게 제공한다. 이 과정에서 전 처리는 이동평균 필터 링 및 단위시간 별 데이터 검출작업을 진행한다. 검출된 데이터를 평균, 분산, 표준편차, 왜도 등의 통계적 특징으로 추출하고 이 과정에서 추출된 통계적 특징들을 통하여 결과적으로 분류기에서 분류하는 과정을 거치게 된다. 

사용자에게 제공할 구글맵이나 그래프 사용을 하여야 했기 때문에 여러 절차를 통하여 구현했다. 구글맵을 사용하기 위하여 구글 서비스를 통해 인증키를 받았고 키 인증을 통하여 Google Map V2 서비스를 사용할 수 있었다. 그래프 등 그래픽적인 제공을 위하여서는 라이브러리로 제공되는 GraphViewChart를 이용하였다.

 마일스톤 수행 내용

센서데이터수집

걷기, 뛰기, 서기 행위 인식을 위해서 안드로이드의 가속도 센서로부터 데이터를 수집하였다. 센서로부터 입력 받은 데이터를 활용하기 위해서는 전처리 과정을 진행하였다. 우선 센서 데이터를 각 x, y, z 축 별로 이동평균 필터링을 적용시켜 튀는 값을 최소화시키는 작업을 진행하였다. 이동평균의 주기는 우선 15로 선정하였고 추후 개발이 진행과정에서 최적의 값을 찾아 적용할 것이다. 이동평균 필터링을 마친 후 전처리 과정을 진행하였다. 선택한 전처리 방법은 가장 대중적으로 이용되고 있는 벡터의 거리 공식을 사용하였다.


위의 수식을 이용하여 x, y, z 축의 데이터를 A로 전처리한다.

특징추출

 앞 서 전처리된 데이터들의 특징을 추출하는 과정이다. 특징 추출은 기계학습을 하기 위해 진행되는 과정이며 특징벡터를 만들어낸다. 총 13개의 통계적인 특징을 추출하였다. 사용된 특징으로는 합, 평균, 평균편차, 표준편차, 분산, RMS, LPC[7]가 사용되었다. LPC는 7가지 특징을 가지며 주로 음성 신호 분석에 사용되는데 이 프로젝트에 적용해보았다. 그 외의 특징들은 통계적인 방법으로써 특징을 추출한다. 이렇게 추출된 특징들은 특징벡터로 만들어져 SVM 기계학습에 사용된다.

SVM 학습기

 사용자로부터 걷기, 뛰기, 서기를 학습 받아 학습 모델 파일을 생성하는 모듈을 개발하였다. 사용자가 걷기 학습 버튼을 누르고 걸으면 3초간 센서 데이터 수집 및 특징 추출이 진행된다. 이 후 추출된 특징벡터를 Scaling을 진행한다. Scaling의 이유는 SVM의 정확도를 높이기 위함이다. Scaling된 특징벡터을 이용하여 학습 모델 파일을 생성한다. 학습 모델 파일은 스마트 폰 SD Card에 저장된다. 학습기는 C-SVC (Multi Class)와 가우시안 라디얼 커널을 사용하였고 기타 다른 옵션 값들은 추후 개발과정에서 실험적으로 최적값을 찾아낼 예정이다.



지도

스마트 폰의 GPS 센서 값을 받아서 google map 상에 현재 위치를 불러온다.

모션 인식을 한 결과물인 걷기, 뛰기, 서기, 수면의 데이터를 가져와 각각의

모션들을 구분하여 이동한 위치들을 표시해주는 기능을 수행한다. 일정한 시간마다 경로들을 표시해주어 각각에 맞는 행동 이미지를 나타내어 준다. 이동 경로선에 커서를 놓았을 경우 이동한 실제 거리를 미터로 보여준다.


달력

프로젝트의 주된 내용이 되는 모션 분류를 이용 지도 경로 표시하는 기능을

날짜별로 저장하여 원하는 날짜의 데이터를 볼 수 있도록 하기 위해 달력을

만들었고, 추가 기능으로 일정 기록이 있다. 지도 및 그래프 분석을 하나로 이어주는 중간 역할을 맡는 엑티비티 역활이 된다.

그래프

하루 동안에 인식된 걷기, 뛰기, 서기, 수면 등의 인식된 모션을 분석 통계를

하여 횟수와 활동량들을 눈에 보기 쉽게 표현해주는 역할을 한다.


최종 보고 요약

본 프로젝트는 사용자가 자기주도적인 생활을 할 수 있도록 도움을 주는 어플리케이션 개발을 목표로 하여 진행하였다. 걷기/뛰기/서기/수면여부 판단이라는 주요기능을 구현하기 위하여 분담하여 개발을 시작했다.

 그 동안의 다른 과목에서 했던 프로젝트와는 달리 소프트웨어 개발을 체계적인 절차를 통해 진행하였고, 분석, 설계, 구현, 테스트 및 디버깅이라는 큰 순서에 따라 각 단계마다 문서작업을 통해 보다 완성도 있는 개발을 위하여 노력하였다. 각 단계에서 산출된 문서들(DFD, DD, SRS)을 작성하면서 시스템 전체에 대한 이해와 분석 및 설계를 진행함에 있어 조원 모두가 상의하며 작성함으로써 역할 분담이나 계획 설립과정에서 수월함을 느낄 수 있었다.

12월에 처음으로 모여서 교수님과의 면담과정을 거치고 2월까지는 분석에 초점을 맞추어 진행하였다. 프로젝트에 쓰이는 스마트 폰 내장센서나 분류기, 특징추출 과정들에 대해 상세하게 조사를 하였고 그 과정에서 얻은 지식을 바탕으로 시스템의 필요기능, 사용자의 요구, 제한사항들을 확실하게 정한 후 개발을 진행하였다. 개발과정에 있어서는 크게 학습 및 분류, 행위인식이라는 파트로 나누어 졌다. 분석하는 과정에서는 관련 논문을 읽어보거나 검색을 통하여 필요한 정보를 얻을 수 있었고 구현에 있어서는 어플리케이션 개발을 위한 기술적 공부 역시 병행하며 프로젝트를 수행할 수 있었다. 본 시스템은 생활간에 가속도 센서를 통해 데이터를 얻고 전처리 및 특징 추출과정을 통해 분류에 쓰일 유 의미 데이터를 얻어 내어 분류기를 통해 행위정보로 분류를 한다. 분류된 정보를 저장하고 그 정보를 이용해 사용자의 이동경로 및 행위 정보 등을 구글맵, 그래프 등을 이용하여 사용자에게 제공한다. 이 과정에서 전 처리는 x, y, z축 데이터의 벡터화, 이동평균 필터 링 및 단위시간 별 데이터 검출작업을 진행한다. 검출된 데이터를 평균, 표준편차, , 평균편차, RMS 5가지의 통계적 특징으로 추출하고 이 과정에서 추출된 통계적 특징들을 통하여 결과적으로 분류기에서 분류하는 과정을 거치게 된다. 분류기로는 SVM을 이용하였다. 분류기를 만들기 위하여 학습데이터가 필요하였다. 이 학습 데이터는 여러 가지 상황을 적용하여 총 300 세트의 학습데이터를 이용한다. 스마트 폰을 주머니의 넣을 때, 가방의 넣을 때, 손에 들었을 때 총 3가지로 나누어서 서기, 걷기, 뛰기를 학습하였다. 이 학습데이터를 통해 만들어진 분류기를 본 시스템에서 사용한다.

사용자에게 하루 간 이동경로를 보여주기 위해서 구글맵이나 그래프 사용을 하여야 했기 때문에 여러 절차를 통하여 구현했다. 구글맵을 사용하기 위하여 구글 서비스를 통해 인증키를 받았고 키 인증을 통하여 Google Map V2서비스를 사용할 수 있었다. 하루 간 행위 변화를 보여주기 위해서 서기, 걷기, 뛰기 마커를 이용하여 Map 상에 보여주었다. 또한 서기, 걷기, 뛰기가 계속 될 때 Map 상의 그 좌표를 선으로 이어서 표시하였다. 이를 통해 사용자는 하루 간 자신의 이동경로 및 행위정보를 알 수가 있다.

사용자가 자신의 이동구간을 알 수 있도록 Geocoder를 사용하여 이동경로에 따른 주소를 표시하여주었다. 또한 그래프 라이브러리를 이용하여 통계적인 수치를 그래프로 표현하였다. 일일 통계를 통해서 하루 간 서기, 걷기, 뛰기의 수치를 나타내어 주었고 월별 통계를 통해서 월간 수치를 나타내어 주었다.

프로젝트 결과

1. 학습 파일 수집기 & SVM 분류기 모델 생성기 apk 파일 첨부하였습니다.

2. Motion Diary 애플리케이션 apk파일을 첨부하였습니다.

동영상

    • YouTube 동영상

첨부화일 (아래 안내는 첨부 후에 삭제할 것)

1. 동영상 (위 본문 페이지에 삽입)
2. 결과 보고서(PDF)
3. 최종결과 슬라이드(PDF, 장당 2개)
4. 포스터(PDF)
ċ
MotionDiary.apk
(8876k)
10조 캡스톤,
2014. 5. 26. 오전 3:12
Ċ
10조 캡스톤,
2014. 5. 26. 오전 3:16
Ċ
10조 캡스톤,
2014. 5. 26. 오전 3:14
ć
10조 캡스톤,
2014. 5. 27. 오후 10:17
Ċ
10조 캡스톤,
2014. 5. 27. 오전 12:56
ċ
학습데이터수집기&분류기생성기.apk
(6068k)
10조 캡스톤,
2014. 5. 26. 오전 3:12
Comments