비침습 센서 데이터 회귀 모델 개발환경

광학 센서 세 채널의 측정값에서 생체 지표를 추정하는 시험용 소프트웨어 환경을 만들고, 선형회귀부터 트리 계열까지 모델을 비교해 펌웨어 기준 모델로 다층 퍼셉트론을 제안했습니다.

연표로 돌아가기
문제
센서 측정값을 받아 생체 지표를 추정하는 과정을 반복 시험할 소프트웨어 환경이 필요했고, 입력으로 쓸 측정 항목과 펌웨어에 올릴 알고리즘도 아직 정해지지 않은 상태였습니다.
담당
원시 데이터의 종속성 분석과 학습·검증 분할, 회귀·분류 모델 비교, 마이크로컨트롤러 펌웨어 적용 의견서 작성을 맡았습니다.
설계 판단
비교 결과와 함께 펌웨어 이식 부담을 따져, 데이터가 바뀔 때마다 구조를 다시 옮겨야 하는 트리 계열 대신 층마다 곱과 합을 반복하는 다층 퍼셉트론을 기준 알고리즘으로 두고 가중치 파일 형식을 정했습니다.
검증 기준
같은 분할 조건에서 모델마다 학습 손실의 추이와 시험 데이터의 실측값 대비 추정값 오차·분산을 비교했고, 트리 계열은 중간 단계에서 5겹 교차 검증으로 확인했고 납품 노트북에서는 단순 분할로 학습·평가했습니다. 수치는 싣지 않습니다.
결과 범위
데이터 로거·전처리·모델 분석·시험용 GUI 네 모듈과 용역 보고서로 마무리했습니다. 펌웨어 구현은 의견서 단계까지이며, 진행한다면 모델을 하나로 좁혀야 한다는 의견을 함께 적었습니다.

광학 센서로 얻은 다채널 측정값에서 생체 지표를 추정하는 시험용 소프트웨어 환경을 만들었습니다.

원시 로그의 종속성을 분석해 학습·검증 분할 기준을 먼저 정하고, 선형회귀·1차원 합성곱·다층 퍼셉트론·트리 계열을 같은 조건에서 비교했습니다.

시험용 블루투스 클라이언트 GUI 를 함께 만들어 장치 검색, 연결, 서비스·특성 선택, 읽기 순서로 측정값을 받아 모델 추정을 반복해 볼 수 있게 했고, 종료 시점에 펌웨어 적용 의견서를 남겼습니다.

데이터 로거는 실제 센서 대신 측정값 묶음을 블루투스로 보내는 ESP32 기반 에뮬레이터 펌웨어로 만들었고, 시험용 GUI 는 받은 측정값 묶음을 다층 퍼셉트론·1차원 합성곱·랜덤 포레스트 모델에 넣어 추정값을 표시했습니다.

세 채널을 한데 섞지 않고 채널별 데이터로 나눠 같은 모델을 각각 학습시켜, 어느 채널이 지표와 관련 있는지부터 확인했습니다.

학습 데이터는 채널 단독 3종과 채널 사이의 관계를 담은 파생 3종, 모두 6종으로 구성하고 모델마다 따로 학습했습니다. 측정 4회분 가운데 한 회차는 다른 환경에서 측정되어 학습에서 제외했습니다. 전처리는 정답값이 0 이하이거나 주 신호가 0 인 행을 지우고, 표준화 스케일러를 학습 분할에만 맞춘 뒤 시험 분할에 적용해 시험 데이터가 학습에 새지 않게 했습니다. 신경망은 평균제곱오차 손실, Adam, 배치 8, 100 에폭의 같은 조건으로 학습했고 출력층에 시그모이드와 상수 곱을 두어 추정값의 범위를 제한했습니다.

모델 비교에는 정확도 외에 펌웨어에 올리는 부담이 들어 있습니다. 트리 계열 모델을 저장한 파일은 수십에서 수백 MB 였고 다층 퍼셉트론 가중치 파일은 수십 KB 였습니다. 평가는 실측 대 추정 산점도와 학습 손실 곡선을 채널과 모델 조합마다 그려 비교했습니다. 펌웨어 의견서는 대상을 STM 계열 SoC(C/C++)로 보고, GPU 병렬 연산을 단일 스레드 저수준 언어에서는 모두 절차 연산으로 바꿔야 하고, 트리 모델은 규모가 데이터셋마다 달라 가중치 병합 방법이 필요하며, 신경망은 층을 절차화하면 단순 반복 작업이 많다는 점을 근거로 들었습니다. 결론은 불가능한 수준은 아니지만 모델을 하나로 좁히거나 별도 사업화가 필요하다는 것이었고, 가중치 파일 형식은 머리말 뒤에 층마다 층 크기와 활성 함수 종류(ReLU·시그모이드) 코드를 두고 가중치와 편향을 잇는 구조로 정했습니다. 입력 매개변수 수가 확정되어야 모델 구조도 확정된다고 적었습니다.

시험용 GUI 는 모델마다 별도의 BLE 특성 하나에 대응시켜, 읽을 때 받은 단정밀도 실수 묶음을 해석해 해당 모델로 추정값을 계산합니다. 데이터 로거 에뮬레이터는 기록된 측정값 20묶음을 읽기 요청마다 순환하며 보내고, 연결이 끊기면 광고를 다시 시작합니다. 용역의 요구 사항은 다중 프로토콜 데이터 로거, 다중 입력 전처리, 세 가지 이상 알고리즘 비교, 추정값을 보이는 시험용 소프트웨어, STM32 기반 환경 분석의 다섯 덩어리였고, 납품 소스에서 확인되는 것은 BLE 로거와 전처리, 모델 비교, 시험용 GUI 입니다.

화면

왼쪽에 장치 연결 목록, 오른쪽에 채널 3개의 실시간 선 그래프와 현재 값이 있는 블루투스 클라이언트 화면왼쪽에 장치 연결 목록, 오른쪽에 채널 3개의 실시간 선 그래프와 현재 값이 있는 블루투스 클라이언트 화면
블루투스 클라이언트 구성을 보이는 목업. 장치를 골라 연결하고 읽으면 채널별 측정값을 표시합니다.

더미 데이터로 채운 그림입니다. 실제 화면과 배치·문구가 다를 수 있습니다.

구조와 흐름

네 모듈의 흐름

BLE센서 측정값 3채널ESP32 에뮬레이터시험용 BLE 클라이언트 GUI읽기 · 모델별 추정원시 측정 파일약 2.5만 행전처리종속성 분석 · 분할선형회귀1차원 합성곱다층 퍼셉트론트리 계열RMSE · R² 비교펌웨어 적용 의견서
Pythonscikit-learnBLE회귀 모델