프로젝트 목록으로

AI/ML Project

냥냥편지

스마트폰 행동 데이터 기반 정신 건강 모니터링 서비스

팀: AMEOWZON팀원: 5명역할: ML ENGINEERAWS AI School 최종 발표 우수상 수상

Tech Skills

ML Pipeline

PythonSageMaker Training JobEKS CronJobEventBridgeLambdaS3

BGM Pipeline

SageMaker Processing JobS3

Critical Agent

LambdaAthenaDynamoDBAmazon Bedrock

Audio Guardrail

AWS TranscribeS3

Project Summary

이 프로젝트의 문제 배경과 해결 방식, 핵심 아이디어를 간단히 정리했습니다.

Why We Need

48.9%

1인 가구가 평소 외로움을 느낀다고 응답

2024 국가데이터처

17.2%

15년 장기 추적 연구에서 사회적 고립이 조기 사망 위험과 직접 연결됨을 확인

질병관리청 · 국립보건연구원, 224만명 대상

What Exists Today

기본 건강 앱

감정 기록과 체크인을 중심으로 동작하는 서비스

한계

감정 상태를 직접 입력해야 함

스마트워치

웨어러블 센서로 건강 상태를 추적하는 방식

한계

별도 기기 필요 / 보급률 33%

중국 앱: 죽었니?

현재 중국 앱스토어 상위권의 안부 확인형 서비스

한계

Check-in 버튼을 당사자가 직접 눌러야 함

사회적 고립은 단순한 감정 문제가 아니라, 조기 사망 위험 증가와 연결된 건강 위험 요인

BUT 현존하는 서비스는 당사자가 스스로 인지해야만 작동하는 구조

Our Approach

01

행동 데이터 수집

화면 켜짐·꺼짐, 앱 사용, 이동 패턴, 알림 반응 등의 스마트폰 사용 로그를 수집하고 일별 단위로 정리해 상태 변화의 간접 신호로 사용

02

상태 변화 해석

개인 베이스라인과 이상탐지 모델을 기반으로 일상 패턴의 변화를 해석하고 상태를 판정

03

관계 기반 연결

앱 상태 표시, BGM, 친구 알림, Critical 에이전트 등 다양한 방식으로 서로의 상태를 자연스럽게 공유

System Architecture

AWS Seoul Region 기반, EKS 멀티 AZ 구성 위에 데이터 수집 · 서비스 처리 · ML 학습이 통합된 구조입니다.

Data Collection

Android -> API Gateway -> Firehose -> S3 Bronze/Silver/Gold

수집과 저장 분리로 클라이언트 부하 절감, 3단계 정제로 ML 입력 데이터 품질 보장

EKS Service Layer

ALB -> Ingress -> UserPod / Inference Pod / Critical Agent / Msg Pod

기능별 Pod 분리로 장애 전파 차단, AZ1·AZ2 이중화 + Pod Auto Scaling으로 트래픽 급증 대응

ML Pipeline

SageMaker Training(주 1회) -> S3(model) -> EKS CronJob 배치 추론(매일)

학습과 추론 완전 분리로 재학습 중 서비스 무영향, MLflow로 학습 이력 및 재현성 관리

CI/CD

GitHub Actions -> ECR -> EKS

브랜치 기반 dev/prod 환경 분리, Rolling Update로 배포 중 다운타임 없음

My Contributions

ML Engineer로서 담당한 4개 파트입니다.

고양이 상태변화 ML

My Part
PythonSageMakerEKS CronJobEventBridgeS3

ML Architecture

Daily Status 처리 파이프라인

01

ETL Data

스마트폰 행동 로그

화면 On/Off
앱 사용
알림/이동/걸음 수

1분 주기로 수집된 사용자 로그를 일별로 수집 및 정제

02

Feature Eng.

56개 피처

활동량
리듬
무활동/세션/이동

행동 변화를 설명할 수 있는 5개 그룹 피처를 일 단위로 집계

03

Individual Baseline

개인 기준선 사용

ST 14일 / LT 30일
평일 / 주말 분리

사용자마다 사용 패턴 분포가 크게 달라, 전역 기준이 아닌 개인별 비교

04

이상 탐지

이상치 정도 정량화

Z-score

평균 편차 측정

Isolation Forest

Anomaly Score (0-1)

오늘의 이상치 정도를 정량화해 위험도를 일관된 스코어로 계산

05

Context 보정

과도한 위험도 억제

TRAVEL
PARTIAL
DELAY

여행/수집불완전/하루치 스파이크 상황에서 과추정을 방지

06

Cat State

7종 상태 분류

STABLE
CHAOS
LETHARGY
SLEEP
TRAVEL
NODATA
CRITICAL

이상치 점수와 Z-score 점수를 결합하여 고양이 캐릭터 상태로 변환

Cat State

오디오 가드레일

My Part
PythonAWS TranscribeGemini FlashS3

01

입력 검증

업로드된 파일을 16kHz mono로 표준화하고, Onset 검출로 발화 시작점을 찾아 최대 4초를 추출합니다. 무음·클리핑·0.3초 미만은 이 단계에서 차단됩니다.

02

텍스트 판정

AWS Transcribe로 변환된 텍스트를 3단계로 판정합니다. 냐옹 패턴이면 즉시 통과, 문장으로 감지되면 즉시 차단하고, 애매한 경우 Gemini Flash가 최종 판정합니다.

03

파일 저장

판정을 통과한 파일은 -20dBFS로 볼륨을 정규화하고 무음을 트리밍한 뒤 S3에 최종 저장합니다.

개인화 BGM 파이프라인

My Part
PythonSageMaker Processing JobSeed-VCS3

01

BGM 생성

EventBridge가 매주 일요일 22시에 Orchestrator Lambda를 트리거하면 Worker Lambda가 상태별로 Suno AI에 곡 생성을 요청합니다. 생성된 곡은 Kits AI로 보컬과 반주를 분리해 S3에 저장됩니다.

02

개인화

추론 Pod가 SQS에 메시지를 전송하면 Lambda가 DynamoDB에서 사용자 등록 음성(enroll.wav)을 조회하고 SageMaker Processing Job을 실행합니다. Job 내부에서 Seed-VC가 보컬을 사용자 목소리로 변환하고, 반주와 믹싱한 뒤 S3에 저장해 User API로 URL을 전달합니다.

Critical 에이전트 — 최적 구조자 선정

My Part
PythonLambdaAthenaDynamoDBAmazon Bedrock

Critical Agent 전체 흐름

36시간 이상 로그가 없는 사용자가 감지되면 친밀도·거리·활동 확률을 종합해 Bedrock이 알림을 보낼 친구 순위를 결정합니다.

My Part

활동 확률 계산 Lambda

Critical 발생 시각을 기준으로 Athena에서 최근 7일 동일 시간대 활동 로그를 조회합니다. 평소 해당 시간대에 얼마나 자주 활동했는지를 바탕으로 친구별 awake_prob을 산출하고 Agent에 반환합니다.

What I Learned

01

다양한 AI 기술을 서비스 수준으로 통합하기

음성 변환, 콘텐츠 검증, 우선순위 판단까지 서로 다른 AI 기술을 하나의 서비스 안에서 각자의 역할에 맞게 연결했습니다.

02

AWS 서비스 조합으로 프로덕션 아키텍처 설계하기

SageMaker · EKS · Lambda · Athena 등 다양한 서비스를 목적에 맞게 선택하고 연결하며 클라우드 기반 서비스 설계 전반을 경험했습니다.