アナログメーターやデジタルメーターの値を生成AIで読み取る
製造現場のDX化の一案として、以下のような構成が考えられます。
- 工場内のメーターの値を生成AIに読み取らせる
- 遠隔地からこれらの値を監視できるようにする
- 値が閾値を超えた場合、アラートを発報する
今回この構成の一部の検証実装をする機会がありましたので、レポートいたします。
検証内容
上記3工程のうち、今回は 「1. 工場内のメーターの値を生成AIに読み取らせる」の部分のみ検証しました。システムの動作概要は以下の通りです。
- 画面左のWebカメラからメーター画像を取得します。
- 画面右下プロンプトを入力します。
- 取得した画像とプロンプトを、マルチモーダルモデル(テキストと画像を同時に処理可能なAIモデル)に入力します。
- モデルの回答を画面右上に出力します。
メーターに関しては、実際に工場で使用されているものを用意することができませんでしたが、
代わりに、簡単に入手できるアナログ式とデジタル式のメーターをそれぞれ1つずつ用意しました。
アナログメーター
以下の子供向け電子工作教材を利用しました。
デジタルメーター
デジタル温度計です。
AWS構成図
本PoCは、AWSジャパンの方が作成された「生成 AI 体験ワークショップ」のアプリの一部を利用しています。
AWSサービスの構成は、Webアプリケーションをサーバーレスで実装する際の一般的なパターンに基づいています。
▲参照元: https://catalog.workshops.aws/generative-ai-use-cases-jp/ja-JP/overview/architecture
「一般的なパターン」は、具体的には上記構成図の真ん中の列あたりのことを指します。静的コンテンツはCloudFrontとS3を使用して配信し、動的処理部分はAPI GatewayとLambdaで実装しています。この基本構成に加えて、Lambdaの後段に図の右下に記載されているAmazon Bedrockを配置しています。これにより、前述の生成AIを活用した画像分析機能を持つアプリケーションを実現しています。
デプロイ
具体的なデプロイ方法はワークショップのドキュメントをご参照ください。今回はCDKを使用した手順を行ないました。
アカウント作成
(このあたりもワークショップのドキュメントに書かれていますが、)CDKデプロイが完了するとOutputsとして表示される GenerativeAiUseCasesStack.WebUrlの値のURLにWebアクセスします。
すると以下の様な画面が表示されます。「アカウントを作る」タブからアカウントを作成します。
登録したメールアドレスに確認コードが送信されます。確認コードを入力して「確定」をクリックし、ログイン完了です。
今回利用するのは、ログイン後トップページに表示される「ユースケース一覧」内の「映像分析」です。
アナログメーターの読み取り
まずアナログメーターです。前述のとおり今回はアナログメーターは以下のような温度計を模した電子工作教材を使います。
右側がアナログメーターになっています。赤い針は印刷されているハリボテなので今回は使用しません。黒い針を動かすことができますので、黒い針の値を生成AIに読み取らせます。
中央にてデジタルで温度表示もするようになっているのですが、今回は使用しません。
今この温度計は22℃あたりを指していますが、これを生成AIに解析させます。
プロンプトには以下を使用しました。
0℃から40℃を測れるアナログ温度計です。現在の黒色の針の値を読み取ってください。目盛りは2℃単位で刻まれており、真下を指しているときは0℃、真上を指しているときは40℃です。
出力形式はJSONとし、温度を格納するキー名は tempretureとしてください。
プロンプト内で出力形式をJSONにするように指示しています。こうすることによって、今回はやっておりませんが、この生成AIアプリの後段にまた別のAWSサービスを連携させることも容易になります。例えば結果をデータストアに蓄積してダッシュボードを作成するだとか、アラートを設定するなどの利用が考えられます。
使用したモデルは Claude 3.5 Sonnet v2です。
さて、肝心の結果は以下です。
回答は {"tempreture": 18}
ということで、間違っていますね。。 この後も複数回試しましたが、たまに正解するがほとんど間違う、という結果でした。
このあと、基盤モデルをAmazon Nova Proに変更して再度試してみましたが、結果は同様でした。
こちらを実用レベルまで精度を上げていくためには、画像の前処理(不要な部分をカットする、針のエッジを目立たせる)やプロンプトの最適化、モデルのファインチューニングなどを検証する必要があるかと思います。
ただし、プロンプトの最適化以外の改善方法には、ある程度の工数が必要となります。しかし各AI企業が次々と高精度のモデルを発表しているため、現在のシステム構成を維持しながら新しいモデルに移行することで、精度の向上を期待することもできます。
デジタルメーターの読み取り
次にデジタルメーターのデモです。こちらは前述のとおりデジタルの温度湿度計を使います。
プロンプトには以下を使用しました。
デジタルの温度湿度計です。左上に温度、右上に湿度を表示しています。それぞれの値を読み取ってください。出力形式はJSONとし、温度を格納するキー名は tempreture、湿度を格納するキー名はhumidityとしてください。
温度は小数点 以下が一桁、小数点以上が2桁表示されています。小数点部分はやや小文字になっています。
湿度は小数点以上2桁のみが表示されています。
使用したモデルは Claude 3.5 Sonnet v2です。
結果は以下です。
正しく読み取れています。この後も数回試しましたがどれも正解しました。やはりデジタル値の方がアナログ値より読み取りやすいようです。
まとめ
アナログメーターやデジタルメーターの値を生成AIで読み取ってみました。デジタルメーター値の値は精度高く読み取ることができました。一方でアナログメーター値の読み取りの精度は低かったです。今後改善施策を試してみたいと思います。