PPG(光電容積測定法)× 機械学習の紹介

Naohiro Kaide
MICIN Developers
Published in
10 min readApr 22, 2021

初めまして、MICINのデータデータソリューション部の kaide です。社内の Tech Blogを書くのは初めてなのですが、直近でECGの紹介記事が上がっていたので、それに関連したPPGという手法と機械学習のアプローチについて紹介しようかと思います。

PPG の紹介

PPG とは、、

PPG (photoplethysmography)は、photo(光) + plethysmography (臓器または全身の体積変化を測定するための機器)を合わせた単語となっており、光を利用した脈拍の変動(血液量の変化)を観測する手法です。日本語だと、光電容積測定法と呼ばれています。ECGは電気で、PPGは光ですね。

ppg.png
Wikipedia からの引用

PPGは端子を装着する必要がないことや測定自体がが簡便なことから、スマートウォッチでは日常的な心拍数測定手段としてPPGが採用されてたりします。

PPG 取得の基本的な流れ

大まかに説明すると、基本的に以下の流れで取得します。

  1. LEDを利用した光源(可視光もしくは赤外光)を計測対象部位に当てる。
  2. 光源から出た光が皮膚下の組織を通過し、その一部が動脈の血液に存在するヘモグロビンに吸光される(← PPG信号が変動する原因)。
  3. 計測対象部位を通過した透過光もしくは反射光を受光器から検出する。
  4. 受光器から検出した光の強さを時系列データとして記録し、PPG信号として取得する。

ただし、PPG信号自体には体動や呼吸によるノイズが含まれているので、解析前に filtering や smoothing などの前処理の適用する例が多いです。

ノイズが含まれる理由としては、光源が通過する箇所には動脈以外に静脈、皮膚や皮下組織(骨・肉)があり、それらが呼吸などの体動により変化するなどがあります。

ロームWebサイトでの紹介が図解もついてわかりやすかったので、良かったらこちらも見てみてください。

PPG の取得方法の種類

PPGには以下のが存在しています。

  1. 非接触な手法 (remote-ppg, r-ppg): 顔の一部(額、頬など)、手
  2. 非侵襲だが接触する手法(パルスオキシメータはこの手法): 指先、耳たぶ、額、手首

1.は光源に環境光を利用する手法で、2.の手法と比べるとノイズが含まれやすく不安定なため、推定脈拍数の精度が下がる傾向にあります。本記事では、2.の手法で取得したPPG信号に焦点を絞って紹介しております。

PPG の活用例

  • 脈拍数や脈拍サイクルのモニタリング(パルスオキシメータ)
  • 脈拍サイクルを利用した脈拍数以外の推定(例: 呼吸数、血圧、睡眠の深さ、ストレス評価、…など)
  • 心疾患の予兆検知

などなど。

また、異なる波長の光源(赤 と 赤外線など)を利用したPPG信号データを利用して酸素飽和度(SpO2)の推定も活用例としてありますが、今回の投稿では触れてません…。

PPG の注意点

PPGは取得環境や取得条件によって正確なデータが取得できない例があります。例えば、

  1. 体温が低い場合は、末梢部位で血管収縮が起こり指先の血液量が低下するため、PPGが正確に記録できないケースがある。
  2. スマートウォッチでの脈拍数計測をする用途などで使う場合、日常生活での脈拍数取得が発生するが、運動時には体動の影響からうまく脈拍数が推定できないなどがある。

機械学習のPPGへの応用例

機械学習の応用例はいくつかあるのですが、今回は2つの取り組みについて紹介します。

Deep PPG: Large-Scale Heart Rate Estimation with Convolutional Neural Networks

こちらは、心拍数の推定を PPGとtri-accelerometer(3次元の加速度センサー) の singal からCNN系のモデルに適用することで精度向上を検証した論文です。tri-accelerometer は体動によるPPGへの影響を補正する目的で利用されています。

既存研究では hand-crafted なルールによって心拍数を推定する手法(SpaMaPlusなど)が提案されてきましたが、こちらの研究では end-to-end な 1dCNN系のmodel を用いた手法が提案されており、比較的大きなデータセット(WESAD)に関して、従来の手法( SpaMaPlus )と比べて21%の改善(MAEが9.45bpmから7.47bpmに減少)を実現しています。

従来のデータセットは「(1) 計測時間が短い、(2)動作パターンの種類が少ない、(3) 実験室的環境でデータ取得している」ことから、日常生活環境下での学習・精度検証に不十分であるため、本論文では従来のデータセットだけでなく、新たに作成したPPG-DaLiA というデータセットも用いて精度検証しています。この新たなデータセットでも、従来の手法と比べて31%の改善(MAEが11.06bpmから7.65bpmに減少)を実現しています。

※ 従来のデータセットとして、WESAD以外にも、IEEE_Training、IEEE_Test も比較に使用されていますが、各データセットの詳細については本論文をご参照ください。

ちなみに、1dCNN系のmodelのinputデータには、以下の前処理を実施しています。

  1. PPG と tri-accelerometer の時系列データを、 window 幅 8 秒間、window shift 2秒 の segment で切り出す。また、ECGから2秒ごとに心拍数が取得できるので、同じ segment で平均心拍数を正解データとして定義する。
  2. 切り出したPPGとtri-accelerometer の segment に対してそれぞれ FFTを適用し、4つのチャネル(N_ch = 4)の時間周波数スペクトルに変換する。
  3. 時間周波数スペクトルはそれぞれ、0~4Hz(0~240bpm)の範囲のみ残してカットする。結果、segment ごとの FFTポイントは1025(N_FFT = 1025)となる。 → 8秒間の計測で、周波数分解能が 4Hz / 1025 となる理由は不明…。
  4. 3. で作成した N_FFT * N_ch (チャネル)のmatrixを標準化し、そのデータをinputデータとする。

Ambulatory Atrial Fibrillation Monitoring Using Wearable Photoplethysmography with Deep Learning

こちらは、PPGとtri-accelerometer の信号データから心房細動(Atrial Fibrillation: AF)の症状の有無を分類する手法について提案した論文です。心房細動とは不整脈の一つで、心房が小刻みに動き、けいれんするような病状を指します。こちらの国立循環器病研究センターの記事がわかりやすかったので、詳しくは参照ください。

自由行動下で記録された 4000h以上のPPGデータ(81人の患者から収集)を収集・アノテートし、CNN (resnext の bottleneck を利用した1dCNN) 系のモデルを用いてテストデータで95%のAUCを達成し、また、そのモデルが体動(motion artifact)にロバストであることも示しています。比較のためのbaselineモデルには、IBI algorithm (Lee et al., 2012) を使用していました。

使用したデータセットを具体的に記載すると

  • 医師がアノテートした clinician-annotated dataset (対象者: 29人)と NSR(対象者: 53人の健常人) を学習およびテストデータに使用した。clinician-annotated dataset の内訳として、「(1)持続的に心房細動を記録する:13人 (2)健康: 2人 (3)時間帯によって心拍リズムのパターンが変動する:14人」となっている。NSRは自己申告性で不整脈の症状はなかったものとしている。
  • PPG信号データとtri-accelerometer の収集には、サムスン製の手首に装着するウェアラブルデバイスを用いた。
  • 正解データには、同時計測した1端子のECGの結果を利用した。その連続した信号データに対して、ECGの専門家が10種類の心拍リズム(8種類の不整脈、1種類の通常リズム、ノイズ)を割り当てた。
  • PPG・tri-accelerometerのデータおよびECG信号データを30秒間に切り取り、そのデータごとに10種類の心拍リズムの多クラスラベル割り当てた。743 の連続したPPG信号データから、510,566 のsegmentを作成した。ノイズのデータについては除外した。
  • train(42人)・val(10人)・test(30人) データについて、それぞれ同一患者のデータがオーバーラップしないように振り分けた。

さきほどの論文とは違い、こちらのmodelのinputデータは時間領域の信号データ(30秒のsegment)を使用しており、時間周波数領域への変換はしておりませんでした。

こちらの研究では、AUCについて体動の強度による影響も分析しており、baseline model に比べてロバストであることを示しています。

最後に

PPGは様々な情報が取得できる可能性があるため、医療アプリケーションのinputデータとして魅力的です。また、PPGのオープンデータが UCI machine learning repository (PPG-DaLiA)や PhysioNet で、公開されてますので、時間がある方は触ってみてはいかがでしょうか。

※ あと、スマホのカメラとLEDを利用して、PPGの元となる動画を取得できたりもするのでそれもありです。

MICINでは、共にAIやテクノロジーを駆使して日本の医療を良くしていく仲間たちを募集しています。フルタイム、インターンの募集要項はこちら。

フルタイム https://hrmos.co/pages/micin/jobs/15

インターン https://hrmos.co/pages/micin/jobs/61

参考文献

--

--