この記事は、Medium に公開されている「Food Waste Deceleration with AI Acceleration」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
この記事の PDF 版はこちらからご利用になれます。
著者: Anisha Udayakumar インテル コーポレーション AI エバンジェリスト
毎年約 2,300 億ドルの食品が廃棄され (英語)、その 5 分の 1 が食用の農産物であることをご存知でしたか? 我々は皆、家庭内で何らかの食品ロスを経験していますが、スーパーの生鮮食品や青果コーナーでは、はるかに多くの廃棄物が発生しています。
この大量の食品廃棄物は、私の長年の懸念事項でした。インテルに入社する前、私はイノベーション・コンサルタントとして、世界中の小売業者と、業務の改善および顧客満足度の向上に取り組みました。その時初めて、私は各店舗で大量の生鮮食品が廃棄されていることに気付きました。これは、包装された食品とは異なり、生鮮食品はいつ傷み始めるか予測することが非常に困難であり、明確な賞味期限がないためです。
AI などのテクノロジーを使用して持続可能性 (サステナビリティー) を実現することは私の夢であり、小売業者がこの問題に対処できる、生鮮食品の廃棄を削減する優れた方法が必要であると考えていました。そこで私は、トマトやバナナなどの農産物の鮮度を判断できるコンピューター・ビジョン AI モデルを構築しました。しかし、この AI モデルをリアルタイムで動作させることは困難だったため、モデルのパフォーマンスを向上させることがデプロイメントそして最終的なスケーリングにとって重要であることに気付きました。
この記事では、インテル® ディストリビューションの OpenVINO™ ツールキットを使用して AI モデルを最適化し、推論時間を短縮した方法を説明します。
モデルの構築
カメラを使用してスーパーの棚を監視し、物体検出と物体認識を使用してその画像をスキャンし、AI モデルを使用して青果コーナーの個々の商品を識別しました。
物体検出と物体認識アルゴリズムは、ラベル付けされた画像から、農産物がまだ新鮮か、傷んでいるか、腐りかけているかどうかを判断できました。この情報を利用して、農産物の交換が必要な場合や価格を下げる必要がある場合に店長や小売業者に通知する自動アラートを設定することにより、農産物の無駄な廃棄を減らすことができます。
OpenVINO™ の助けを受ける
私の鮮度認識モデルは、上の図で示したような単品の生鮮食品の画像を分析できます。現実のシナリオで使用するには、大きな棚にあるすべての農産物を迅速かつ正確に識別してラベルを付ける必要があります。
モデルの構築には、Open Model Zoo (英語) の SSDLite MobileNetV2 (英語) を使用し、この Jupyter* Notebook (英語) で説明されている物体検出と物体認識 (OD/OR) プロシージャーに厳密に従いました。私は食品廃棄物のために使用しましたが、このプロシージャーは特定のユースケースに限定されません。開発者は、詳細なソースコードに従って、独自の OD/OR シナリオに適用できます。
すでに述べたように、最初の OD/OR モデルは正確でしたが、生鮮食品の画像をリアルタイムで検出するには遅すぎました。モデルを微調整したり、別のモデルに切り替えたりしましたが、パフォーマンスはあまり向上しませんでした。そこで OpenVINO™ を使用したところ、推論時間を 10 秒から 1.5 秒に短縮することができました。
OpenVINO™ を使用するもう 1 つの利点は、両方のモデルの移植性が高くなることです。私の鮮度モデルは TensorFlow* 上に構築しましたが、このモデルと OD/OR モデルの両方で、PyTorch*、Caffe*、ONNX* などの複数のフレームワークを簡単に使用でき、さまざまな異なるハードウェアでモデルを実行できました。
皆さんが自分で試す場合のヒントを 2 つ、次に示します。
- OpenVINO™ ランタイムをロードして初期化し、目的のハードウェアでモデルをコンパイルし、その出力層を呼び出して推論エンジンをアクティブ化し、イメージを渡して結果を得るために必要なのは、この後に示すわずか 6 行のコードです。
- コードの「device_name」セクションに注目してください。OpenVINO™ を使用すると、多くのデバイス (CPU、GPU、ビジョン・プロセシング・ユニット (VPU)、または FPGA) の中から、スループットやレイテンシーなど、設計の目標に最も適したデバイスを柔軟に選択できます。
from openvino.runtime import Core img = load_img () core = Core() compiled_model = core.compile_model(model=model, device_name=”CPU”) output_layer = compiled_model.output[0] results = compiled_model([input_img])[output_layer]
次のステップ
ご覧のとおり、AI アプリケーション向けのソフトウェアの構築は難しいことではありません。重要なのは、それらをリアルタイムで動作させることです。OpenVINO™ を使用することで、AI モデルのパフォーマンスが向上し、食品廃棄物削減アプリケーションを現実のものにできました。
このプロジェクトから得られた 2 つの大切な教訓を説明してまとめとします。
- OpenVINO™ はすべての一般的なフレームワークで動作するため、わずか数行のコードで既存のモデルを最適化できます。
- この記事で説明したモデルは、食品廃棄物を削減するだけでなく、AI 開発者が日々直面する多くの同様の問題を解決できます。
AI と OpenVINO™ を使用して現実世界の問題を解決する方法を詳しく知りたい場合は、AI Dev Team Adventures のビデオ (英語) の詳しい説明とチュートリアルを確認し、Open Model Zoo (英語) にアクセスして事前トレーニング済みの最適化されたモデルを活用してください。
皆さんが OpenVINO™ を使用してどのような問題を解決されるのか楽しみにしています。
OpenVINO™ ツールキットとは
AI を加速する無償のツールである OpenVINO™ ツールキットは、インテルが無償で提供しているインテル製の CPU や GPU、VPU、FPGA などのパフォーマンスを最大限に活用して、コンピューター・ビジョン、画像関係をはじめ、自然言語処理や音声処理など、幅広いディープラーニング・モデルで推論を最適化し高速化する推論エンジン / ツールスイートです。
OpenVINO™ ツールキット・ページでは、ツールの概要、利用方法、導入事例、トレーニング、ツール・ダウンロードまでさまざまな情報を提供しています。ぜひ特設サイトにアクセスしてみてください。
https://www.intel.co.jp/content/www/jp/ja/internet-of-things/openvino-toolkit.html
法務上の注意書き
インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。
絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。
実際の費用と結果は異なる場合があります。
© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。