大学プロジェクト演習 / PD Project

Smart Fridge Manager

「冷蔵庫の中身、あなたは把握できていますか?」食品ロスの約半分は家庭で発生しています。その根本原因は「冷蔵庫の中身の不可視化」にあると考え、写真一枚で食材を管理できるシステムを開発しました。

大学のプロジェクト演習で「家庭から出る燃えるゴミを減らす」というテーマから出発しました。 現状調査として市のデータを分析すると、燃えるゴミの約45%が生ゴミであり、そのうち食品ロスが燃えるゴミ全体の約13%を占めることが判明。 さらに学生116名へのアンケートでは、8割が賞味・消費期限切れで食品を廃棄した経験ありと回答しました。 食品ロスは「意識」で減らせる余地があると判断し、「撮るだけ」で始まる摩擦ゼロの食材管理を目指してシステムを設計・開発しました。

Python / FlaskYOLOv8 Custom TrainingTensorFlow / KerasGoogle Cloud Vision APIFirebase AuthMySQL / SQLiteWeb Scraping
冷蔵庫管理ダッシュボードのスクリーンショット
Problem Background

データが示した課題の構造

プロダクト設計の前に行った現状調査とニーズ調査。「どこに手を打つべきか」を数字で確かめてから開発を開始しました。

45%
燃えるゴミの内、生ゴミが占める割合
市の燃えるゴミ排出量内訳を調査。生ゴミが最大のカテゴリであることが判明。
13%
燃えるゴミ全体に占める食品ロスの割合
生ゴミの中でも手つかず食品・食べ残しなどの食品ロスに絞れば、意識的な行動で削減可能。
80%
食品を廃棄した経験がある(学生116名調査)
賞味・消費期限切れが最大の廃棄原因。つまり「期限管理」ができれば食品ロスは減らせる。

市のデータによると、家庭での食品ロスの最大原因は賞味・消費期限切れです。 この問題の本質は「冷蔵庫の中身を把握できていないこと」にあります。

手動での記録は続かない——これが根本的な課題です。 そこで「撮影するだけで登録が完了する」というゼロ摩擦の入力体験を設計しました。 人は続けられる仕組みさえあれば、自然と行動が変わると考えたからです。

写真撮影 → 自動認識 → 期限登録 → レシピ提案 → 買い物リスト生成という 一気通貫フローにより、ユーザーの認知負荷を最小限に抑えています。

Problem Definition

なぜ「手動入力」を捨てたのか

既存の食材管理アプリの最大の問題は『継続できない』こと。その原因は入力に摩擦があるからだと仮説を立て、UI設計の前にワークフロー全体を再設計しました。

📸 撮影→即登録という体験設計
入力ステップをゼロにする設計判断。
手動入力ではなく「冷蔵庫を撮る」という自然な行動をトリガーにした。 YOLOv8が24種類の食材をリアルタイムで検出し、ユーザーはボタンを押すだけで登録完了。
🥩 認識精度の限界を直視した判断
実験の結果、肉類の画像認識精度は24.2%に留まった。見た目だけでは種類を判別できないという制約を正直に受け止め、 「パッケージの文字を読む」アプローチに切り替えることで問題を解決した。
🍽️ 「何を作れるか」を自動提案
食材が登録された後の課題は「それで何を作るか分からない」こと。手持ち食材→レシピ自動マッチングにより、ユーザーの意思決定コストを削減しました。
🛒 無駄買いを防ぐ自動買い物リスト
食材が余る理由の一つは「買い物のダブり」。 不足食材を自動で買い物リストに追加する機能で、 購入計画から食品ロス削減のサイクルを完結させました。
User Journey
撮影 → 自動認識 → 食材DB登録 → レシピ提案 → 不足食材→買い物リストへ
ユーザーが意識的に操作するのは『撮影』と『料理の選択』のみ。その他は全て自動化。
User Journey

※画像はイメージです

Engineering

システムの仕組みと開発の過程

食材をどのように認識しているのか、その仕組みや開発中に工夫した点についてまとめました。

汎用モデルが使えない理由から始まった独自データ収集

YOLOの物体検出モデル(COCO学習済み等)は「人」「車」などを検出するものであり、 「トマト」と「にんじん」を区別するという細粒度認識には対応していません。 既存データセットも存在しなかったため、24クラスの食材について数千枚の冷蔵庫内の画像を自ら収集・手動アノテーションする判断をしました。 結果として、食材の検出精度は94.7%を達成しています。

学習クラス一覧 (24食材)
トマトにんじんじゃがいも玉ねぎピーマンかぼちゃなすねぎ大根アスパラガスれんこんレタスさつまいもほうれん草きゅうりブロッコリー青梗菜とうもろこし肉ヨーグルト納豆卵キャベツ白菜
Annotation Process
FastLabelを用いたアノテーション作業
24クラスの食材に対して、1枚ずつ正確にバウンディングボックスを付与しました。
Annotation Process

食材カテゴリ別のハイブリッドAI判定

開発中、肉類の画像認識精度が24.2%と低迷する壁に突き当たりました。 パッケージ越しでは人間でも判別しづらく、純粋な画像判定には限界があったのです。 そこで、無理に見た目で識別するのではなく、「ラベルの文字を読む」という発想の転換を行いました。 Google Cloud Vision API(OCR)でラベル情報を直接読み取るハイブリッド構成に切り替え、実用的な精度と利便性を確保しています。

🥬 野菜・果物:視覚的特徴が豊富
形・色・テクスチャで判別可能 → YOLOv8
精度: 94.7%
画像認識が本質的に有効なカテゴリ
🥩 肉類:視覚に頼れないカテゴリ
パッケージ越しでは判別不能 → OCRに転換
画像認識精度: 24.2% → ラベル読み取りで解決
種類&賞味期限を1回の撮影で取得
FOOD RECOGNITION Pipeline
Model: YOLOv8 Custom (24 classes)
Module: Object Detection
🍅
🥕
🧅
🥩
CAPTURE→DETECT→OCR SCAN→CLASSIFY→REGISTER

上のアニメーションは食材認識パイプラインの可視化です。YOLOv8で冷蔵庫内の食材を検出し、そのうち「肉類」と判定されたものについては、Cloud Vision APIのOCRを用いてパッケージのラベルから詳細な種類や賞味期限を自動で判別します。 最終的にこれらの食材情報はデータベースに自動登録されます。

食べたものを自動記録:栄養管理ダッシュボード

自動認識した食材や作成したレシピのデータをもとに、日々の栄養素の摂取状況を可視化します。カロリーやPFCバランスなどのグラフを通じて、ユーザーの健康管理を摩擦なくサポートします。

Nutrition Dashboard
栄養管理画面:直感的なグラフとアドバイス
摂取カロリー、PFCバランス、水分補給、体重推移などを一元管理。
Nutrition Dashboard

不足食材もひと目でわかる:レシピ提案画面

冷蔵庫にある食材から最適なレシピを提案します。作り方や必要な具材だけでなく、現在「手持ち」の食材と「不足」している食材が一目で分かるUIを採用。足りない食材はワンタップで買い物リストに追加できます。

Recipe Optimization
レシピ提案と買い物リストの連携
手持ちの食材を最大限活用しつつ、必要な買い足しをシームレスに支援します。
Recipe Optimization
Impact & Future Extension

このシステムが変えられること

技術的な達成だけでなく、社会課題への実装可能性と学習の転用を考えます。

📉 食品ロス削減への貢献

燃えるゴミの13%を占める食品ロスに対してシステム的なアプローチで介入する。 賞味期限の自動管理と使い切りレシピの提案により、「捨てる前に使う」サイクルを日常に組み込む。

🔬 技術的な発展可能性

現在はパッケージなし環境での精度94.7%。冷蔵庫内の実環境(照明変化・重なり)への対応、 マルチモーダルLLMによる一括認識への置換、スマート家電との連携など、今後の拡張余地が大きい。

🧠 このプロジェクトから得た思考

「精度が低い」という現象に対して、技術を変えるのではなく問題の性質を見直すことで突破口が開いた。 24.2%→OCR切り替えという経験は、問題定義を諦めずに問い直す姿勢を身につけた転機でした。

🌐 社会実装に向けた課題

実運用には、プライバシーに配慮した画像処理(端末内完結)、食材データベースの継続的更新、 多様な家庭環境(冷蔵庫レイアウト・照明)への対応が必要であり、それ自体が次の研究課題です。

Project Details

Category
大学プロジェクト演習(PD)
Role
Backend & AI Engineer
Team
Team Development
Duration
約6ヶ月
Status
開発終了