Startup Team Project창업 팀 프로젝트
PILLBUDDY — Smart Pill Dispenser & Medication-Adherence AI 필버디 (PILLBUDDY) — 스마트 알약 디스펜서와 복약 확인 AI
PILLBUDDY ONE is an automatic pill dispenser for chronic-disease patients who take many medications a day — it sorts and dispenses doses on schedule, and confirms that the dose was actually swallowed. I owned the AI side: a vision model that identifies pills, and an ingestion-verification model that decides whether the user really took the dose, both built to run on a Raspberry Pi inside the device.
필버디(PILLBUDDY ONE)는 하루에 여러 종류의 약을 복용하는 만성질환자를 위한 자동 알약 디스펜서입니다. 정해진 시간에 약을 자동으로 소분·토출하고, 실제로 복용했는지까지 확인합니다. 저는 AI 파트를 맡아 알약을 식별하는 인식 모델과 복용 여부를 판단하는 모델을 만들었고, 두 모델 모두 기기 안의 라즈베리파이에서 동작하는 것을 목표로 설계했습니다.
Where it ended up. Over ten months the team took PILLBUDDY from a personal problem to a validated product concept: selection into Promising Student Startup Team 300+ (2026), a patent application (10-2025-0195290), two startup-competition awards, and a paid market test that put three price-point MVPs in front of 23,807 people on Facebook and Instagram. The AI I built covered the two functions competitors did not have — automatic pill identification and ingestion verification.
결과. 10개월 동안 팀은 개인적인 문제의식에서 출발해 검증된 제품 컨셉까지 도달했습니다. 2026 학생 창업유망팀 300+ 선정, 특허 출원(10-2025-0195290), 창업 경진대회 수상 2건, 그리고 세 가지 가격안 MVP를 페이스북·인스타그램에서 23,807명에게 노출한 시장성 테스트를 진행했습니다. 제가 담당한 AI는 경쟁 제품에 없던 두 기능 — 알약 자동 인식과 복용 여부 확인 — 을 담당했습니다.
Outcomes성과
Promising Student Startup Team 300+학생 창업유망팀 300+
Patent Filed특허 출원
Competition Awards경진대회 수상
Market Test Reach시장성 테스트 도달
Ingestion Verification: Behavior, Not Pills복용 여부 확인: 알약이 아니라 행동을 본다
A dispenser that only drops the pill cannot tell whether it was actually taken. The obvious approach — detect the pill on camera — fails immediately: once the pill is in a closed hand, there is nothing to detect. So the model never looks for the pill. It tracks the behavioral sequence around it and only accepts a dose when the whole sequence completes:
약을 토출하는 것만으로는 실제 복용 여부를 알 수 없습니다. 가장 먼저 떠오르는 접근 — 카메라로 알약을 검출하는 방식 — 은 바로 막힙니다. 알약이 손 안에 들어가는 순간 검출할 대상이 사라지기 때문입니다. 그래서 이 모델은 알약을 찾지 않습니다. 대신 알약 주변의 행동 시퀀스를 추적하고, 시퀀스가 끝까지 완성됐을 때만 복용으로 인정합니다.
HAND_TO_MOUTH— hand overlaps the mouth region for ≥ 3 frames (MediaPipe FaceMesh + 21-keypoint hand tracking)CUP_TO_MOUTH— a cup or bottle is detected near the mouth for ≥ 2 frames (YOLOv8n, ONNX Runtime)VERIFY— the cup leaves and the user opens their mouth wide to show the pill is goneINGESTION_COMPLETE— the sequence is logged as a confirmed dose
HAND_TO_MOUTH— 손이 입 영역과 3프레임 이상 겹침 (MediaPipe FaceMesh + 21개 키포인트 손 추적)CUP_TO_MOUTH— 컵·물병이 입 근처에서 2프레임 이상 검출 (YOLOv8n, ONNX Runtime)VERIFY— 컵이 입에서 떨어진 뒤, 입을 벌려 약이 남아있지 않음을 확인INGESTION_COMPLETE— 복용 완료로 기록
Failure modes matter more than successes here. Repeated failed attempts, a hidden face, or a skipped verification step raise a suspicion score, and once it crosses a threshold the system sends a Slack alert to the caregiver — the state machine is the mechanism that makes a missed dose visible to someone who can act on it.
이 문제에서는 성공보다 실패 패턴이 더 중요합니다. 반복적인 실패, 얼굴 가림, 확인 단계 건너뛰기 등은 의심 점수를 올리고, 임계값을 넘으면 보호자에게 Slack 알림을 전송합니다. 상태 머신은 결국 '놓친 복용'을 대신 조치해줄 사람에게 보이게 만드는 장치입니다.
Pill Identification알약 자동 인식
The second model removes setup burden: instead of asking an elderly user to type in what each medication is, the device recognizes the pills itself. I trained a YOLO detector on the MFDS public pill-image dataset (22 medication classes), with a preprocessing and augmentation pipeline for the lighting and background the device actually sees, then exported to ONNX for CPU inference on the device.
두 번째 모델은 설정 부담을 없애기 위한 것입니다. 고령 사용자가 약 정보를 일일이 입력하는 대신, 기기가 알약을 스스로 인식합니다. 식약처 공개 알약 이미지 데이터셋(22종)으로 YOLO 검출기를 학습했고, 기기가 실제로 마주하는 조명·배경 조건에 맞춘 전처리·증강 파이프라인을 구성한 뒤, 기기 CPU 추론을 위해 ONNX로 변환했습니다.
Making It Fit on a Raspberry Pi라즈베리파이에 얹기
The device target was a Raspberry Pi 4 (4 GB) with CPU-only inference, ≥ 5 FPS and ≤ 200 ms latency.
Measured on a Mac, the three models cost about 19 ms per frame; scaled to the Pi that is roughly 171 ms —
right at the budget. Getting there meant YOLOv8n at imgsz=320 through ONNX Runtime, running
cup detection every 3rd frame and hand tracking every 2nd, and a benchmark mode to re-measure after each change.
목표 하드웨어는 라즈베리파이 4(4GB), CPU 추론만으로 5 FPS 이상·200ms 이하 지연이었습니다.
Mac에서 측정한 3개 모델의 프레임당 추론 시간은 약 19ms였고, 파이 기준으로 환산하면 약 171ms로 예산에 겨우 들어옵니다.
이를 맞추기 위해 YOLOv8n을 imgsz=320으로 ONNX Runtime에서 실행하고,
컵 검출은 3프레임마다·손 추적은 2프레임마다 수행하도록 조정했으며, 변경할 때마다 재측정할 수 있는 벤치마크 모드를 넣었습니다.
I ran the same question for the voice interface. A fully local stack on the Pi (Vosk + a small local LLM + Piper) answered in 10–25 s, which is unusable for a reminder that has to feel like a person speaking. A streaming speech-to-speech API answered in 1–3 s, so the Pi's job shrank to recording, streaming and playback — the trade-off being connectivity, per-minute cost and privacy, which is exactly the decision a medical device has to make deliberately.
음성 인터페이스도 같은 방식으로 검토했습니다. 파이에서 전부 로컬로 처리하는 구성(Vosk + 소형 로컬 LLM + Piper)은 응답까지 10~25초가 걸려, 사람이 말을 거는 느낌이어야 하는 복약 알림에는 쓸 수 없었습니다. 스트리밍 음성-음성 API는 1~3초에 응답해, 파이는 녹음·전송·재생만 담당하면 됐습니다. 대신 인터넷 연결·분당 과금·프라이버시를 감수해야 하는데, 의료기기라면 반드시 의식적으로 내려야 하는 결정입니다.
Market Validation시장성 검증
In January 2026 the team ran a three-day market test with a startup consultancy: three MVP landing pages at ₩800,000, ₩600,000 and ₩40,000/month, advertised to the same audience, with a real "buy" button measuring purchase intent. The ₩600,000 one-time price converted best (6.32%), and the strongest segment was women aged 55–64 — not the adult children we had assumed would be buying for a parent. That result, plus a survey ranking the five features, is what set the priority order for the AI work above.
2026년 1월, 팀은 창업 컨설팅사와 함께 3일간 시장성 테스트를 진행했습니다. 80만원 / 60만원 / 월 4만원 세 가지 MVP 랜딩페이지를 같은 타겟에 노출하고, 실제 '구매하기' 버튼으로 구매 의향을 측정했습니다. 일시불 60만원 안의 구매전환율이 6.32%로 가장 높았고, 반응이 가장 강한 세그먼트는 부모를 위해 구매할 것이라 가정했던 자녀 세대가 아니라 55~64세 여성이었습니다. 이 결과와 5개 기능에 대한 중요도 설문이 위 AI 작업의 우선순위를 정하는 근거가 됐습니다.
What I Built구현 내용
- Ingestion-verification pipeline: mouth-ROI tracking (FaceMesh, EMA-smoothed with fallback), hand tracking, cup detection and a swallow/mouth-open estimator feeding a finite state machine
- Suspicion scoring and Slack alerting for missed or faked doses
- Pill recognition: dataset preprocessing, augmentation, YOLO training and evaluation pipeline, ONNX export
- On-device performance work: frame-skipping schedule, ONNX Runtime CPU inference, benchmark mode with Raspberry Pi 4 projections
- Voice-interface feasibility study comparing fully local, hybrid and streaming-API stacks on a Pi 4
- Test suite covering FSM transitions, mouth-ROI tracking, the swallow estimator and the alert manager
- 복용 확인 파이프라인: 입 ROI 추적(FaceMesh, EMA 스무딩 및 폴백), 손 추적, 컵 검출, 삼킴·입벌림 추정기를 상태 머신에 연결
- 복용 누락·가짜 복용에 대한 의심 점수 산정 및 Slack 알림
- 알약 인식: 데이터 전처리, 증강, YOLO 학습·평가 파이프라인, ONNX 변환
- 온디바이스 성능 최적화: 프레임 스킵 스케줄, ONNX Runtime CPU 추론, 라즈베리파이 4 환산치를 포함한 벤치마크 모드
- 라즈베리파이 4에서 풀 로컬 / 하이브리드 / 스트리밍 API 구성을 비교한 음성 인터페이스 타당성 검토
- 상태 머신 전이, 입 ROI 추적, 삼킴 추정기, 알림 매니저에 대한 테스트 코드