"1분반-알려줘"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(개발 과제의 배경)
(개발 과제의 배경)
37번째 줄: 37번째 줄:
 
우리는 더 건강한 삶을 위해 매일 수행해야 하는 필수적인 일들이 있다. 규칙적인 운동처럼 자발적으로 실천해야 하는 일들이 있는 반면, 약 복용이나 혈압 및 혈당 체크처럼 절대 놓쳐서는 안 되는 일들 도 있다.
 
우리는 더 건강한 삶을 위해 매일 수행해야 하는 필수적인 일들이 있다. 규칙적인 운동처럼 자발적으로 실천해야 하는 일들이 있는 반면, 약 복용이나 혈압 및 혈당 체크처럼 절대 놓쳐서는 안 되는 일들 도 있다.
  
질병관리청의 노인 만성질환 실태조사에 따르면, 65세 이상 노인의 59%가 고혈압을, 30%가 고지혈증을, 23%가 당뇨를 앓고 있다.  
+
질병관리청의 노인 만성질환 실태조사에 따르면, 65세 이상 노인의 59%가 고혈압을, 30%가 고지혈증을, 23%가 당뇨를 앓고 있다.  
  
 
더불어 노인 10명 중 4명 이상이 5가지 이상의 약을 복용하고 있어, 정기적인 약 복용의 중요성이 매우 크다. 실제로 당뇨를 앓고 있는 필자의 할머니도 정시 복약을 잊어 질환이 악화된 경험이 있다.
 
더불어 노인 10명 중 4명 이상이 5가지 이상의 약을 복용하고 있어, 정기적인 약 복용의 중요성이 매우 크다. 실제로 당뇨를 앓고 있는 필자의 할머니도 정시 복약을 잊어 질환이 악화된 경험이 있다.

2024년 12월 19일 (목) 04:25 판

프로젝트 개요

기술개발 과제

국문 : 알람 모니터링 서비스 ‘알려줘’

영문 : Alarm Monitoring Service ‘Allyojo’

과제 팀명

알려줘

지도교수

이경재 교수님

개발기간

2024년 9월 ~ 2024년 12월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2021920046 잘리너바 아이가늠(팀장)

서울시립대학교 컴퓨터과학부 2020920009 김성령

서울시립대학교 컴퓨터과학부 2018920054 정성엽

서울시립대학교 수학과 2020540023 이명규

서론

개발 과제의 개요

개발 과제 요약

본 프로젝트는 시니어 케어를 위한 알람 애플리케이션이다. 일반적인 알람 앱과 달리 '미션 수행'과 '보호자 관리' 기능을 통해 시니어의 일상생활을 체계적으로 관리한다.

알람은 단순 알림을 넘어 식사, 복약, 혈당관리 등의 시니어 맞춤 활동을 미션으로 제시하며, 카메라를 통한 비전 기술로 미션 수행 여부를 자동으로 검증한다.

또한 가족이나 보호자가 시니어의 일상 활동을 모니터링하고 관리할 수 있는 보호자 연동 시스템을 갖추고 있다. 이러한 기능들이 유기적으로 연결되어 시니어의 건강한 생활 관리와 보호자의 효율적인 케어를 동시에 실현한다.

개발 과제의 배경

우리는 더 건강한 삶을 위해 매일 수행해야 하는 필수적인 일들이 있다. 규칙적인 운동처럼 자발적으로 실천해야 하는 일들이 있는 반면, 약 복용이나 혈압 및 혈당 체크처럼 절대 놓쳐서는 안 되는 일들 도 있다.

질병관리청의 노인 만성질환 실태조사에 따르면, 65세 이상 노인의 59%가 고혈압을, 30%가 고지혈증을, 23%가 당뇨를 앓고 있다.

더불어 노인 10명 중 4명 이상이 5가지 이상의 약을 복용하고 있어, 정기적인 약 복용의 중요성이 매우 크다. 실제로 당뇨를 앓고 있는 필자의 할머니도 정시 복약을 잊어 질환이 악화된 경험이 있다.

이러한 상황에서 시니어 케어 어플리케이션의 필요성은 분명하다. 그러나 현재 시장의 알람 어플리케이션들은 대부분 수면과 기상에만 초점이 맞춰져 있다. 따라서 시니어의 건강 관리에 특화된 알람 어플리케이션은 이러한 시장의 수요를 충족시킬 수 있을 것으로 기대된다.

개발 과제의 목표 및 내용

◇ 노인의 복약, 식사, 혈압 및 혈당 관리를 위한 알람 시스템을 구현한다.

◇ AI 기술을 활용하여 미션 수행 검증 기능(사진을 통한 데이터 수집 및 분석)을 개발한다.

◇ 보호자용 기능을 통해 알람 설정, 리포트 조회 등 노인의 건강 관리를 지원할 수 있도록 한다.

◇ 사용자 친화적이고 직관적인 UI/UX를 제공하여 노인이 손쉽게 사용할 수 있도록 설계한다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

내용

  • 특허조사 및 특허 전략 분석

내용

  • 기술 로드맵

내용

시장상황에 대한 분석

  • 경쟁제품 조사 비교

내용

  • 마케팅 전략 제시

내용

개발과제의 기대효과

기술적 기대효과

내용

경제적, 사회적 기대 및 파급효과

내용

기술개발 일정 및 추진체계

개발 일정

내용

구성원 및 추진체계

내용

설계

설계사양

제품의 요구사항

내용

설계 사양

내용

개념설계안

내용

이론적 계산 및 시뮬레이션

내용

상세설계 내용

내용

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

- 메인화면
메인화면1.png

  • 어플리케이션을 실행하면 가장 먼저 볼 수 있는 화면이다.
  • 아이디와 비밀번호, 그리고 보호자 여부를 체크하여 로그인을 진행한다.


- 회원가입
회원가입1.png 회원가입2.png 회원가입3.png
회원가입4.png 회원가입5.png 회원가입6.png

  • 회원가입을 진행하는 UI이다.
  • 아이디, 비밀번호, 전화번호를 차례로 입력한다.
  • 전화번호를 입력하면 인증번호를 받을 수 있다. 이 인증번호를 입력하여 전화번호 인증을 완료한다.
  • 보호자 여부를 체크한다.
  • 리포트 분석에 사용될 나이, 성별을 입력한다.
  • 닉네임을 입력하여 회원가입을 마친다.


- 알람 기능
알람 기능1.png 알람 기능2.png 알람 기능3.png

  • 알람 메인 페이지에서는 현재 설정해놓은 알람을 조회할 수 있다.
  • 하나의 알람은 반드시 하나의 미션을 포함하여야 한다.
  • 아래 종을 누르면 새로운 알람을 설정할 수 있다.
  • 알람 설정 페이지에서 알람 시각, 반복 여부, 엄격모드 여부, 미션, 진동 여부, 알람 볼륨, 반복 간격을 설정하여 새 알람을 만들 수 있다.


- 알려줘 페이지 - 할 일 확인하기
알려줘 페이지 - 할 일 확인하기1.png 알려줘 페이지 - 할 일 확인하기2.png 알려줘 페이지 - 할 일 확인하기3.png 알려줘 페이지 - 할 일 확인하기4.png

  • 할 일 확인하기 페이지에서는 알람 이외에 잊지 않고 해야 할 일들을 등록할 수 있다.


알려줘 페이지 - 할 일 확인하기5.png

  • 할 일의 날짜와 시간, 제목, 추가 설명을 입력하여 할 일 등록을 마친다.


- 알려줘 페이지 – 미션 모아보기
알려줘 페이지 – 미션 모아보기1.png

  • 미션 모아보기 탭에서는 현재 수행 중인 미션을 한 눈에 확인할 수 있다.
  • 매일 울리는 알람의 명우 ‘매일’ 탭에서, 그 외의 경우 ‘매주’ 탭에서 확인할 수 있다.


- 알려줘 페이지 – 미션 확인하기
알려줘 페이지 – 미션 확인하기1.png

  • 미션 확인하기 탭에서는 알람이 발생하였지만 인증을 바로 진행하지 않았을 때의 알람을 확인할 수 있다.
  • ‘인증하기’ 버튼을 눌러 해당 알람에 대한 미션 수행 결과를 인증할 수 있다.


- 알람 발생
알람 발생1.png 알람 발생2.png 알람 발생3.png

  • 알람이 발생했을 때의 화면이다.
  • ‘사진 찍기’ 버튼을 눌러 미션 인증을 진행할 수 있다.
  • ‘알람 종료’ 버튼을 클릭하면 ‘알려줘 페이지 – 미션 확인하기’ 탭에서 확인할 수 있다.


- 리포트
리포트1.png 리포트2.png 리포트3.png

  • 리포트를 조회할 수 있는 화면이다.
  • 수행한 적이 있는 미션을 선택한 후 기간을 선택하면 해당 미션에 대한 분석을 받을 수 있다.


리포트4.png 리포트5.png 리포트6.png 리포트7.png

  • 리포트 조회 화면이다.
  • 혈당 미션의 경우 미션 성공률과 기준 혈당과의 비교를 확인할 수 있다.
  • 혈압 미션의 경우 미션 성공률과 수축기/이완기 혈압 변화, 그리고 고혈압 기준치와의 비교를 확인할 수 있다.
  • 식사 미션의 경우 그 날 섭취한 식사 메뉴와 영양소, 그리고 하루 영양소 권장 섭취량과의 비교를 확인할 수 있다.


- 보호자
보호자1.png 보호자2.png

  • 보호자로 로그인하였을 경우 볼 수 있는 화면이다.
  • 보호자는 노인의 알람을 설정해줄 수 있다. 알람 세팅 과정은 노인과 동일하다.
  • 보호자가 설정해 준 알람에 대한 리포트를 조회할 수 있다. 조회되는 내용은 노인의 리포트 조회 내용과 동일하다.

완료 작품의 평가

평가항목 평가방법 적용기준 개발 목표치 비중 (%)
1. 기능 구현의 충실도 모든 기능이 정상적으로 잘 동작하는지 확인한다. 명세에 포함되어 있는 기능이 동작하지 않을 때마다 –1점, 미흡하게 동작하면 –0.5점 33점 50
2. AI 검증 로직의 정확도 테스트 셋을 활용하여 검증 로직의 정확도를 확인한다. 목표 정확도 95% 이상, 1% 미달마다 –1점 30점 50

기능 구현의 충실도

○: 모든 기능이 의도대로 동작함
△: 기능은 동작하나 다소 미흡한 부분이 있음 (-0.5점)
❌: 기능이 동작하지 않거나 구현하지 못함 (-1점)

분류 평가 기능 평가 기준 평가 비고
회원가입 유저 회원가입 유저 회원가입 과정이 원활하게 진행된다.
보호자 회원가입 보호자 회원가입 과정이 원활하게 진행된다.
전화번호 문자 인증 전화번호 문자 인증이 원활하게 진행된다.
아이디 중복 체크 아이디 중복 없이 가입이 가능하다. 아이디가 중복된 경우 적절한 피드백이 주어진다.
로그인 유저 로그인 오류 없이 로그인이 진행된다.
보호자 로그인 오류 없이 로그인이 진행된다.
아이디/비밀번호 찾기 아이디/비밀번호 찾기 기능을 사용할 수 있다.
알람 설정 시간 설정 알람의 시간이 잘 설정된다.
엄격 모드 엄격 모드가 설정된다.
반복 설정 알람 반복 설정이 원활하게 동작한다.
미션 추가 네 가지 미션 모두 잘 선택되고 반영된다.
세부 알람 설정 진동, 알람 볼륨, 반복 간격이 잘 설정된다. 알람 볼륨이 잘 작동되지 않는다는 테스트 결과 존재
알람 발생 알람 발생 페이지 알람이 발생한 경우 사용자에게 적절한 피드백을 제공한다.
사진 찍기 사진 찍기 기능이 잘 동작한다.
알람 종료 기능 알람 종료 시 종료된 알람이 알려줘 페이지에 반영된다. 알람 종료 시 알람이 다시 울리지 않는다.
알려줘 페이지 할 일 확인하기 사용자에게 적절한 UI를 제공한다.
할 일 추가 할 일이 원활하게 추가된다.
할 일 수정 할 일이 원활하게 수정된다.
할 일 삭제 할 일이 원활하게 삭제된다.
미션 모아보기 진행 중인 미션이 잘 표시된다.
미션 모아보기 UI 사용자에게 적절한 UI를 제공한다.
미션 확인하기 알람 종료된 미션이 잘 표시된다.
미션 확인하기 - 인증 인증하기 버튼이 잘 동작한다. 인증 과정에서 오류가 발생했다는 테스트 결과 존재
리포트 리포트 항목 선택 리포트 미션과 기간이 원활하게 설정된다.
혈압 리포트 조회 혈압 미션 리포트가 원활하게 조회된다.
혈당 리포트 조회 혈당 미션 리포트가 원활하게 조회된다.
식사 리포트 조회 식사 미션 리포트가 원활하게 조회된다.
복약 리포트 조회 복약 미션 리포트가 원활하게 조회된다.
보호자 관리하는 유저 추가 유저의 전화번호를 입력하여 ‘관리하는 유저’로 등록할 수 있다.
유저 알람 추가 보호자의 유저 알람 추가 기능이 원활하게 잘 진행된다.
유저 알람 수정 보호자의 유저 알람 수정 기능이 원활하게 잘 진행된다.
유저 알람 삭제 보호자의 유저 알람 삭제 기능이 원활하게 잘 진행된다.
유저 리포트 조회 관리하는 유저의 리포트를 조회할 수 있다.

AI 검증 로직의 정확도

- 식사 관리 AI
주요 성능 지표는 아래와 같다. 이때, Accuracy는 전체 데이터에서 올바르게 예측한 비율, Precision은양성 예측 중 실제 양성의 비율, Recall은 실제 양성 중 올바르게 예측한 비율, F1-Score는 Precision과 Recall의 균형을 나타내는 지표이다.

성능 지표 수치
Accuracy (정확도) 0.9
Precision (정밀도) 0.986
Recall (재현율, Sensitivity) 0.901
F1-Score (조화 평균) 0.941


- 복약 관리 AI
주요 성능 지표는 아래와 같다. 이때, AP(Average Precision)는 한 클래스에서 Precision-Recall 곡선을 기반으로 계산된 단일 값이며, mAP(Mean Average Precision)는 여러 클래스에 대해 AP를 평균낸 값을 의미한다.

성능 지표 수치 비고
mAP@.5 0.996 IoU(Intersection over Union)가 0.5일 때의 평균 정밀도
mAP@.5:.95 0.867 더 엄격한 기준을 포함해 다양한 IoU 조건에서 모델의 성능을 평가


- 종합

분류 평가 기능 평가 기준 평가 비고
AI 검증 식사 관리 AI 음식 포함 여부를 잘 구분한다. 5 목표 정확도인 95%보다 5% 작음
복약 관리 AI 알약의 위치를 잘 탐지한다. 10
혈압/혈당 관리 AI 혈압, 혈당 수치를 잘 인식한다. 10

향후계획

어려웠던 내용들

- 김*령

  • 프로젝트 설계 과정에서 기능의 정확한 명세를 작성하지 못했다. 따라서 개발 과정 중에 설계가 빈번하게 수정되고, 구현했던 내용을 다시 갈아엎는 경우가 몇 번 있었다.
  • 사용해본 적 없는 기술들을 (스프링 시큐리티, JWT, DB 마이그레이션 등) 학습하고 이를 프로젝트에 적용시키는 데에 어려움을 겪었다.
    • JWT를 활용한 로그인 인증 과정에서, 유저와 보호자를 분리해서 로그인 구현하는 부분이 상당히 어려웠다. 스프링 시큐리티는 디폴트로 한 개의 로그인 관련 구현체만을 요구하지만, UserDetails 관련 클래스와 GuardianDetails 관련 클래스를 분리하여 따로따로 구현하는 부분이 어려웠다.
    • 테스트 개발 환경에서는 MySQL로 진행하였지만, 배포 과정에서 MariaDB로 마이그레이션하는 부분이 조금 헷갈렸다.
    • 전반적인 스프링 시큐리티 환경 이해가 어려웠다. 필터 체인, 각 필터의 기능 및 이를 상속받아 구현하는 등, 적절히 이해하고 응용하는 부분이 어려웠다.


- 정*엽

  • 단순히 푸쉬알람으로 구현을 진행할 수도 있었으나, 푸쉬 알람의 경우 로컬 환경에서 인터넷 연결 상태에 따른 알람 시간 정확도가 떨어지는 문제가 발생할 수 있다.
  • 이러한 문제점을 극복하기 위해 실제 알람처럼 구현을 진행해야 했고, 이 과정에서 안드로이드 알람 모듈을 처음부터 직접 개발하여 기기의 내장 타이머를 사용할 수 있도록 해야 했다.
  • 모듈을 직접 구현하면서, 안드로이드 모듈과 React Native를 연결하는 브릿지 과정에서 오류가 많이 발생했고, 이를 해결하는데 시간을 많이 할애했다.
  • 유동적으로 어플리케이션을 구현하기 위해서는 API 명세를 깔끔하게 진행해야 한다. 관점의 차이는 있겠으나, 본 프로젝트에서는 BE와 API 통신을 진행할 때에는 최대한 데이터를 그대로 가져오도록 했다. BE에서 받아온 데이터를 FE쪽에서 적재적소에 맞게 데이터를 파싱하여 사용하는 방법을 채택했다.
  • 이러한 방법을 채택하여 명세의 변경이 발생하더라도 API 수정을 최소화하도록 노력했지만, FE에서는 파싱 메서드가 길어지는 문제가 있었다. 하지만, 이러한 방법이 옳다고 생각한다.


- 이*규

  • 이전까지는 AI 모델 서비스들이 어떤 식으로 제공되고, 배포되는지에 대한 고민 없이 AI의 아키텍처와 성능을 올리는 부분에 대해서만 공부하였다. 하지만 이번 프로젝트의 어플리케이션은 AI 서비스를 필요로 하기 때문에, 구현된 AI 모델에 대한 배포까지 요구하였다. 이전까지는 고민해 본 적 없는 비교적 새로운 분야의 지식을 익히는 부분이 비교적 어려웠다.
  • 이번 어플리케이션은 다양한 모델을 필요로 하였다. 크게 3가지의 컴퓨터 비전 task를 수행하는 AI 모델(음식 사진인지 아닌지 분류하는 모델, 알약 사진인지 아닌지 분류하는 모델, 사진에 있는 디지털 숫자의 위치를 확인한 뒤 숫자를 인식하는 모델)을 구성해야 했다.
  • 특히, 음식 사진을 분류하는 모델의 경우에는 어플리케이션의 기능 명세가 수정되면서, 어떤 음식인지까지 구분하는 것을 필요로 하게 되었고, 결국 오픈소스 멀티모달 모델과 OpenAI API를 활용하는 방식으로 진행하게 되었다.


- 잘*** ***늠

  • 복약 관리 AI 모델 개발 과정에서 가장 큰 어려움은 적절한 데이터셋의 부재였다. 기존의 공개된 데이터셋이나 모델이 없었기 때문에, 약 사진 5000장을 수동으로 라벨링해야 했다. 데이터 라벨링 작업은 시간과 노력이 많이 소요되었으며, 이 데이터를 기반으로 YOLOv7 모델을 학습시켰다. 모델 학습에는 약 7시간이 걸렸고, 이후 결과를 평가하면서 다양한 평가 방법(mAP, Precision, Recall 등)을 적용해 성능을 확인했다. 이러한 과정은 번거로웠지만, 직접 데이터를 구축하고 검증해본 경험은 의미 있는 도전이었다.
  • 식사 관리 AI 모델 또한 어려움이 많았다. 초기 목표는 음식 사진을 분류해 "식사 여부"만 판단하는 단순한 기능을 구현하는 것이었지만, 성능이 예상보다 저조했다. 특히 여러 개의 데이터셋 수집과 정리에 많은 시간이 소요되었으며, 데이터의 다양성과 질을 확보하는 데 한계가 있었다. 결국 자체 학습 모델 대신 API 사용으로 전환했지만, 이 과정에서 얻은 실패 경험을 통해 AI 모델 구축의 한계와 현실적 해결책을 배우게 되었다.
  • AI API 활용은 처음 시도해본 영역이어서 초기 시행착오가 많았다. 처음에는 Google Vision API를 사용해보았으나 비전 관련 작업에서 성능이 만족스럽지 못했고, OpenAI API를 시도했지만 초기에는 잘 동작하지 않았다. 특히 비전 모델을 무료 플랜으로 사용했을 때 결과가 제대로 반환되지 않았고, 유료 플랜으로 전환하면서 비로소 원하는 결과를 얻을 수 있었다. 이 과정에서 AI API의 비용 효율성과 성능 최적화에 대한 실질적인 경험을 쌓을 수 있었다.
  • 모델 학습과 검증의 반복도 쉽지 않았다. 학습된 모델의 성능이 기대에 미치지 못하면 원인을 분석하고 데이터를 다시 정리하거나 하이퍼파라미터를 조정하는 작업을 반복해야 했다. 이러한 반복적인 작업 속에서 시간 관리와 효율적인 작업 흐름의 중요성을 체감하게 되었다.
  • 전반적으로 AI 파트를 맡으면서 단순히 모델 구현에 그치지 않고 데이터셋 구축, 모델 학습, 성능 평가, 그리고 실제 배포를 경험했다는 점이 가장 큰 도전이었다. 특히 처음 접한 AI API의 활용과 실제 애플리케이션에 적용하는 과정에서 실무적 역량을 한 단계 높일 수 있었다.

차후 구현할 내용

- FCM 서버 구현

  • FCM 서버를 구현함으로써, 유저 및 보호자에게 적절한 푸시 알람을 제공하는 기능


- 리포트 기능 보충

  • 식사 미션 리포트에서 좀 더 다양한 영양소에 대한 정보 제공


- 보편적인 건강정보 제공

  • 노인 건강 관리 어플리케이션이라는 목적에 부합하게, 어플리케이션의 여러 요소에서 추가적인 건강 정보 제공


- 보호자 기능 강화

  • 시니어 케어 어플리케이션 특성상, 보호자 - 시니어 사이의 '관리 체계'를 조금 더 다듬을 필요가 있다.
  • 보호자가 생성해준 알람 수락/거절 기능


- 재미 요소 추가

  • 어플리케이션에 재미 요소를 추가할 필요가 있다.
  • 매달 완료한 미션 수 혹은 특정 조건에 맞춰 성장하는 캐릭터 추가

관련사업비 내역서

구성원 및 추진체계

구성원
이름 담당 업무
잘*** *늠 AI 기능 구현
김*령 BE, DBA
정*엽 FE, 앱 디자인
이*규 AI 기능 구현


추진체계
추진 내용 추진 기간 세부 내용
기획 2024.09.01. ~ 2024.09.30. 프로젝트 제안서, 경쟁력 분석 보고서 작성, 프로젝트 방향성 확정 및 주요 명세 확립
프로젝트 설계 2024.10.01. ~ 2024.10.23. 각 도메인 세부 설계, 중간설계보고서 작성
프로젝트 구현 2024.10.24. ~ 2024.11.13. 각 도메인 기능 구현
도메인 통합 및 프로토타입 발표 2024.11.14. ~ 2024.11.20. FE, BE, AI 통합, 프로토타입 완성 및 발표
통합 테스트 및 최종 수정 2024.11.21. ~ 2024.12.18. 통합 테스트, 사용자 테스트, 최종보고서 작성

개발사업비 내역서

항 목
(품명, 규격)
수 량 단 가 금 액 비 고
현금
직 접 개 발 비 openAI chatGPT 구독료 3 31 94 94 단가는 세 달 분을 3으로 나누고 소수점을 절삭함
claude 구독료 3 31 94 94 단가는 세 달 분을 3으로 나누고 소수점을 절삭함
openAI API 구독료 1 7 7 7 소수점 절삭함
프런트엔드 개발을 위한 테스트 입문 1 25 25 25
프런트엔드 개발을 위한 보안 입문 1 23 23 23
이것이 자바다 1 32 32 32
만들면서 배우는 클린 아키텍처 1 16 16 16
프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 1 45 45 45
합 계

부록

소프트웨어 프로그램 소스

https://github.com/orgs/UOS-capstone-design/repositories