歯の健康年齢は、口元の写真からAIが歯の状態を読み取り、見た目の若々しさを「年齢」というわかりやすい指標に変換するシステムです。歯の検出・色(シェード)・比率・歯列をコンピュータビジョンで解析し、健康診断のように「気づき」を提供します。
「気づき」が、行動のきっかけになる
歯の白さや歯並びは、笑顔の印象や見た目年齢を大きく左右します。けれど毎日見ている自分の口元は、変化に気づきにくいもの。数値や年齢として示されて初めて、ケアへの一歩を踏み出せます。
歯の健康年齢は、撮影した口元の画像をAIが解析し、歯の色・比率・歯列などから「歯の健康年齢」と、白さ・歯型のランク(A〜E)を提示します。
ブレない撮影 — Face-api.js のガイド撮影
解析の精度は、入力画像の質でほぼ決まります。そこで Web版では Face-api.js による顔・口元検出(100msごと、スコア閾値0.5)でリアルタイムに構図を判定し、条件が揃った瞬間に自動撮影します。
口の幅が120px以上、正面向き、口がしっかり開いている、画面中央30〜70%に位置、歯が見えている——これらをすべて満たすと撮影。口元を512×512にトリミングして解析へ送るため、誰が撮っても安定した入力が得られます。
- Face-api.js で顔・口元をリアルタイム検出(100ms / スコア0.5)
- 解像度・向き・口の開き・位置・歯の可視性の5条件で自動撮影
- 口元を512×512にトリミングして解析サーバーへ送信
解析パイプライン
解析は専用の推論サービスが担います。YOLOv8 ベースの歯検出モデル(teeth.pt)で歯を検出し、前処理のうえで複数の分析器が並行して働きます。
歯の比率(proportion)、VITAシェードに基づく色判定(撮影画像のLAB色を基準シェード値と照合)、歯列(alignment)、位置(position)を解析し、それらを統合して「歯の健康年齢」と白さ・歯型ランクを算出します。サービスはアップロード受付(Flask API)と、キュー方式(in→out、完了/エラーを分離)のバックグラウンド推論で構成されています。
- YOLOv8(teeth.pt)で歯を検出
- VITAシェード照合(LAB色)+ 歯の比率・歯列・位置を分析
- Flask API+ファイルキュー方式のバックグラウンド推論で安定処理
Web と オンデバイスアプリ
Web版は Laravel 12 / Filament 3.3 上に構築し、マルチテナント対応。年齢入力・注意事項・撮影・結果までの体験フローと、精度に応じた再撮影を備えています。
さらに、推論サーバーに送らず端末内で完結する Flutter 製のオンデバイス版(YOLOv8 をデバイス上で実行)も開発。通信が不安定な会場や、画像を外部に出したくないケースに対応します。
技術スペック
- 撮影(Web)
- Face-api.js ガイド撮影(5条件で自動撮影)→ 512×512 トリミング
- 検出
- YOLOv8 ベースの歯検出モデル(teeth.pt)
- 解析
- VITAシェード照合(LAB色)+ 歯の比率・歯列・位置 → 歯の健康年齢/白さ・歯型ランク(A〜E)
- 推論サーバー
- Flask API + キュー方式のバックグラウンド推論
- フロント
- Web:Laravel 12 / Filament 3.3・マルチテナント / オンデバイス:Flutter(端末内でYOLOv8実行)
このデモのポイント
撮るだけ・数秒
スマホやタブレットで口元を撮影するだけ。専用機器は不要です。
わかりやすい指標
「年齢」という直感的な形で提示し、ケアへの気づきを促します。
集客から来院へ
体験を入口に、歯科・美容サービスへの相談・予約導線を設計できます。