본문 바로가기
과정/2차 AI프로젝트(해커톤참가)

프로젝트 '재움' 서비스 개발 시작

by 줘요 2023. 10. 17.

자세인식 작업이 끝나고 서비스 개발을 시작하게 되었습니다.

 

맡게 된 부분은 수면유도음악 랜덤재생, 수면측정, 자세인식 및 변화 감지, 수면이벤트 저장, 저장 시 얼굴 블러처리 개발입니다.

 

 UI화면 

수면측정 화면

수면측정 ui 예상도 입니다. 재생버튼을 누르면 수면측정이 시작되고 화면 중앙에 실시간으로 영상 촬영이 진행됩니다.

 

 개발 내용

 

1. 수면 측정 시작시 클라이언트단에서 수면유도음악을 랜덤으로 재생해 줍니다.

2. 클라이언트단에서 10분의 타이머가 지난 후 수면자세 측정을 시작합니다.

3. 일정시간마다 서버에 촬영한 이미지를 전송합니다.

4. 이전 이미지와 현재 이미지의 라벨을 비교하여 자세변화를 감지합니다.

(자세변화 감지 시 3번 연속 같은 라벨일 때 수면자세가 변화했다고 인지합니다.)

   ex) 바른 자세 -> 만세자세 -> 만세자세 -> 만세자세 : 만세자세로 바뀜

5. 자세변화 감지 후 수면이벤트와 해당 이미지 저장(자세가 바뀌지 않으면 저장하지 않음)

  ex) 바른자세 -> 만세자세 -> 만세자세 -> 만세자세 : 수면이벤트(만세자세), 만세자세 이미지 저장

6. 이미지 저장 시에 개인정보 보호를 위해 얼굴 블러처리

 

 필요 API 리스트

 

1. 일정시간마다 서버에 이미지 전송하는 API

2. 자세변화 감지하는 API

3. 수면이벤트 및 이미지 저장 API

4. 이미지 저장 시 얼굴 블러처리 API

 

 DB스키마 설계

  • User 테이블: 사용자 정보를 저장하는 데 사용됩니다.
    • user_id: 각 사용자에 대한 고유한 식별자입니다.
    • user_name: 사용자의 이름을 저장합니다.
  • SleepInfo 테이블: 수면 정보를 저장하는 데 사용됩니다.
    • sleep_info_id: 각 수면 정보에 대한 고유한 식별자입니다.
    • user_id (외래 키): 어떤 사용자에 대한 수면 정보인지 식별합니다.
    • date: 수면 정보가 관련된 날짜를 나타냅니다.
    • total_sleep: 해당 날짜의 총 수면 시간을 저장합니다.
    • start_sleep: 수면이 시작된 시간을 기록합니다.
    • end_sleep: 수면이 종료된 시간을 기록합니다.
  • SleepEvent 테이블: 수면 이벤트 정보를 저장하는 데 사용됩니다.
    • sleep_event_id: 각 수면 이벤트에 대한 고유한 식별자입니다.
    • sleep_info_id (외래 키): 어떤 수면 정보에 대한 이벤트인지 식별합니다.
    • user_id (외래 키): 어떤 사용자와 관련된 이벤트인지 식별합니다.
    • sleep_event: 수면 이벤트의 유형 또는 라벨을 저장합니다.
    • event_time: 각 수면 이벤트가 발생한 시간을 나타냅니다.
  • SleepEventData 테이블: 수면 이벤트 데이터 (예: 이미지)를 저장하는 데 사용됩니다.
    • event_data_id: 각 데이터 항목에 대한 고유한 식별자입니다.
    • sleep_event_id (외래 키): 어떤 이벤트에 대한 데이터인지 식별합니다.
    • sleep_info_id (외래 키): 어떤 수면 정보에 대한 데이터인지 식별합니다.
    • user_id (외래 키): 어떤 사용자와 관련된 데이터인지 식별합니다.
    • event_data_path: 이미지 URL을 저장하는 열입니다.

 

 아키텍처

front 

- 수면 녹화 페이지(측정, 종료) 

- 측정 시작 타이머 : 사용자 측정을 시작한 후 10분의 타이머를 두어 잘 준비가 끝났을 때 측정 시작

- 수면유도음악 랜덤재생 : 사용자에게 수면을 유도할 수 있는 음악 재생

 

back

- 이미지 전송, 자세변화 인식 API : 일정시간마다 이미지를 전송하고 라벨을 통해 자세 변화 감지

- 수면  이벤트 저장 API : 자세 변화 감지가 되었다면 수면 이벤트 저장

- 얼굴 블러처리 API : 이미지 저장 전 얼굴 블러처리 후 파일 서버에 저장 DB연동

 

- 수면 정보 저장 API : 사용자가 수면측정한 날짜, 총 수면시간, 수면 시작 시간, 수면 종료 시간을 DB에 저장

 

 

 

1차적으로 프로젝트 기능 설계를 마쳤습니다.

 

생각대로 잘 진행될지,, 두근두근 힘내야겠습니당,,

댓글