電子レンジで食品を加熱する際、加熱時間の設定は食品の種類や量、容器の形状などによって大きく変わります。従来の電子レンジでは、ユーザーが手動で加熱時間を設定する必要があり、適切な加熱時間を見つけるのは難しい場合があります。
この製品は、一般的なカメラで撮影された画像から食品の種類や量を自動的に認識し、適切な加熱時間を推定するシステムです。ユーザーは食品の画像を撮影するだけで、システムが自動的に加熱時間を計算し、ユーザーに最適な加熱時間を提案します。これにより、食品の過熱や未加熱のリスクを減らし、より安全で効率的な加熱が可能になります。また、まだ使える電子レンジをムラがあるといった理由などでわざわざ買い替えたり、現在利用している電子レンジを廃棄する必要もなくなるため、環境にも優しいです。
食品にレンピタのカメラを向けるだけで食品の種類や量を自動的に認識し、適切な加熱時間を推定します。
結果を出力するのに時間がほとんどかかりません。
感覚に頼っている電子レンジの加熱時間設定を、科学的に推定できます。どのような電子レンジでも(新しさ、機能性にかかわらず)対応が可能です。
- デバイス単体で動作するように軽量化および最適化を行う
- さまざまな々な画像で動作検証
- さまざまな食品で動作検証
- ターンテーブルではない電子レンジにも対応
- 装置本体にボタンを追加し、レンピン本体で画像が撮影できるようにする
- 装置本体にスイッチを追加し、電源のON・OFFや熱いのが苦手な方のために少し低めの目標温度で残り加熱時間を表示する
- 現実的な速度で推論できるようにしたこと
- 現実的に問題がない部分は大胆に近似したこと
- 操作がきわめて単純なこと(食品に向かってカメラを向けるだけ)
- 単眼カメラだけでものの大きさを推定できるようにしたこと
- Python(プログラミング言語)
- ONNX(機械学習モデルの形式)
- OpenCV(画像処理ライブラリ)
- NumPy(数値計算ライブラリ)
- FastAPI(Webフレームワーク)
- Uvicorn(ASGIサーバー)
- uv(Pythonのパッケージ管理ツール)
- YOLOv8-seg(食品の検出とセグメンテーション)
- Depth Anything(深度推定)
- M5Stack AtomS3R CAM(単眼カメラ搭載の小型マイコン)
- MLX90640(赤外線センサー)
- Arduino IDE(マイコンの開発環境)
- ターンテーブルを検出する画像処理
- 単眼カメラでものの大きさを推定するアルゴリズム
- 赤外線センサーで測った現在の表面温度を初期温度として加熱時間推定に反映する仕組み
以下がインストールされていること。
- uv
- git
- Arduino IDE(M5Stack AtomS3R CAMのプログラムを書き込むため)
# このリポジトリをクローンして、uv syncを実行する。
git clone https://github.com/jphacks/kz_2602.git
cd kz_2602
uv sync
# APIサーバーを起動する。
uv run python src/main.py \
--serve \
--yolo-model path/to/food.onnx \
--class-names rice meat vegetable bread \
--depth-model models/depth-anything-v2-small.onnx \
--host 127.0.0.1 \
--port 8000Arduino IDEを使って、hardware/renpin_camera.ino をM5Stack AtomS3R CAMに書き込みます。Wi-FiのSSIDとパスワードは、hardware/renpin_camera.ino の先頭で設定してください。
AtomS3R CAMの電源を入れ、Wi-Fiに接続されることを確認します。接続されると、LCDにIPアドレスが表示されます。
# レンピンから画像を取得して、APIサーバーに送信する。
python renping_bridge.py \
--node-ip <LCDに表示されたIPアドレス> \
--server http://127.0.0.1:8000/ \
--diameter-cm 25詳細はdocs/を参照してください。

