Mercedes-Benz、ディープ ニューラル ネットワークでハードウェアセンサーをシミュレーション
課題
ディープ ニューラル ネットワークによる車載ハードウェアセンサーのシミュレーション。
ソリューション
MATLAB、Simulink、Deep Learning Toolbox、Fixed-Point Designer を使用して、QKeras のディープラーニング モデルを車載 ECU に展開可能なコードに変換。
結果
- CPU、メモリ、性能要件を達成
- 柔軟なプロセスを確立
- 開発スピードが 600% 向上
多くの自動車メーカーでは、問題の診断や設計の調整を行うために、開発車に追加のハードウェアセンサーを多数搭載してデータを収集しています。車が量産に移行すると、これらのセンサーのほとんどはコスト削減のために取り除かれます。しかし、場合により、ハードウェアセンサーは仮想センサーに置き換えることができます。仮想センサーはソフトウェアで実現できる、より安価な選択肢であり、安全性、効率性、およびドライバーの快適性をさらに向上させることができます。
Mercedes-Benz は近年、MATLAB® および Simulink® を使用して、仮想センサーを展開する新しいワークフローを確立しました。それらは、ピストン圧力センサーの機能などをシミュレーションすることができます。これらのセンサーはディープラーニング ネットワークをベースにしており、リソースに制限がある ECU マイクロコントローラー上で実行できるよう設計されています。この自動化されたワークフローは、トライアンドエラーの手法に依存する、時間のかかる手作業のワークフローに取って代わりました。
Mercedes-Benz の AI 開発者である Deuschl 氏は、次のように語ります。「MathWorks のチームは、ニューラル ネットワークを作成して車両コントローラー ユニットに統合できる、使いやすいパイプラインの開発を支援してくれました。このパイプラインを使用すれば、仮想センサーや他の多種多様な用途向けにさまざまな種類のニューラル ネットワークを作成および展開することができます。」
課題
ディープ ニューラル ネットワークの多くは、車載 ECU よりも処理能力とメモリ容量の面ではるかに優れたコンピューターで実行するよう設計されています。さらに、ECU は、TensorFlow™ や PyTorch® などの一般に使用されるディープラーニング フレームワーク、またはそれらが必要とする浮動小数点演算をサポートしていません。
これらのフレームワークに基づくモデルを ECU 上で実行するには、開発者は最初に Python® コードを C 言語に変換し、モデルパラメーターと計算を固定小数点演算に変換する必要があります。Mercedes-Benz では、このプロセスの完了に数週間を要し、信頼性の低い結果が生成され、新しいチームメンバーに教えるのも困難でした。
同社は、Python からモデルへの変換に必要な数々の手作業のステップを踏みながら、C 言語で実装したモデルが ECU の限られたメモリスペース内に収まることを担保する必要がありました。またそのモデルは、ピストン圧力の検知など時間的制約のある動作に対しても、リアルタイムで推論できる必要があります。そのため、より信頼性が高く、より自動化されたプロセスを確立したいと考えていました。
ソリューション
Mercedes-Benz のチームは MathWorks のエンジニアと協力して、Python のディープラーニング モデルをコードとパラメーターに変換できるよう最適化されたワークフローを実装し、ECU インテグレーション パイプラインに転送できるようにしました。
このワークフローでは、QKeras ライブラリを使用し、量子化された長・短期記憶 (LSTM) ニューラル ネットワークを Python で学習させます。
そして Deep Learning Toolbox™ を使用して、学習済みネットワークを MATLAB にインポートします。その後、カスタムの MATLAB スクリプトを実行して、インポートしたニューラル ネットワークを Simulink モデルに変換します。
次に、車載 ECU に展開する準備段階において、Fixed-Point Designer™ を使用して、モデル内のすべてのパラメーターを浮動小数点データ型から固定小数点データ型に変換します。
Simulink でのシミュレーションにより検証済みの固定小数点モデルを、サードパーティのソフトウェア インテグレーターに引き渡し、他のソフトウェア コンポーネントとともに ECU 上に実装してもらいます。
初めての事例となるピストン圧力用仮想センサーの実装に成功した後、Mercedes-Benz のチームは、同じプロセスを別のセンサーや ECU ターゲット向けの他のディープラーニング アプリケーションにも応用しています。
結果
- CPU、メモリ、性能要件を達成。Deuschl 氏は次のように語ります。「MATLAB および Simulink を使用して、ECU に適合し、ベンチマーク要件を満たす仮想センサーのニューラル ネットワークを実装しました。従来のソフトウェア開発では、同様の仮想センサーは作成できなかったでしょう。」
- 柔軟なプロセスを確立。Deuschl 氏は次のように語ります。「私たちは既に、MATLAB および Simulink で作成し、自動化されたワークフローを他のユースケースでも使用しています。2 つの異なるパワートレイン コントローラーへの展開をサポートするために少し改変を加えました。このワークフローは、ゲート付き回帰型ユニットや全結合ニューラル ネットワークなど他の種類のディープラーニング モデルにも適用可能です。」
- 開発スピードが 600% 向上。Deuschl 氏は次のように語ります。「Deep Learning Toolbox および Fixed-Point Designer を使用して、以前の手作業による開発プロセスに比べて開発スピードを約 6 倍高速化できました。そして、手作業での開発が減ったことで、モデルとコードの作成においてエラーを低減することができました。」