低コストで実現する!Raspberry Pi 5 × AWS IoT Greengrass による賞味期限印字検査システム

こんにちは。ソリューションアーキテクトの髙宮です。

今回は食品製造業のお客様向けに構築した、Raspberry Pi 5 と AWS IoT Greengrass で実現する賞味期限印字検査システムについて技術的な観点でご紹介します。

プロジェクトの背景と目的

本プロジェクトでは、これまで人が行っていた、食品パッケージの賞味期限印字確認をラズパイ&Greengrassを使ってリアルタイムに判定する仕組みを開発しました。

食品パッケージへの賞味期限印字は品質管理上の重要工程ですが、製造ラインでの印字漏れが発生した場合、商品回収コスト、廃棄コスト、交換用商品のコストが発生するだけでなく、ブランドイメージの低下や取引停止などの深刻な影響を招く恐れがあります。特に赤ちゃんの離乳食や介護食など、安全性が最重視される製品においては品質管理の徹底が不可欠です。

AWSにはマネージドサービスとして、Amazon Rekognitionという、文字認識サービスが用意されています。当初は、このRekognitionを使ってOCRを実行する方針でした。しかし1日に数百個のパッケージ商品を複数のレーンで検査するお客様にとって、画像1枚当たり¥0.2というコストがネックとなり、「1枚あたりのランニングコストを0円にしてほしい」というご要望をいただきました。その結果構築したのが、今回ご紹介するラズパイ&Greengrassを使ったシステムです。

本記事では、具体的に工夫したポイントや苦労した点を共有します。

ソリューション概要とアーキテクチャ

このソリューションでは、製造ライン上に設置したセンサーをトリガーにしてカメラでパッケージを撮影し、取得画像をその場で解析して印字の有無を判定します。画像解析にはオープンソースの画像処理ライブラリOpenCVを用いたテンプレートマッチング手法を採用し、クラウドに依存しないローカルのコンピュータビジョンアルゴリズムで判定を行います。ラズパイ上でこれら一連の処理が動作しており、ネットワークを介さず即座に結果を得ることができます。また必要に応じて判定結果や画像をクラウドに送信し、検査データの蓄積やアラート発報、可視化に役立てることも可能です。

全体のフローは以下のとおりです:

  1. センサー検知とカメラ起動: パッケージの所定位置に光電センサーを配置し、製品がカメラ前方に来たタイミングでRaspberry PiのGPIO経由でトリガー信号を受信します。これを契機に、ラズパイに接続されたカメラが起動し、パッケージ表面の賞味期限印字箇所を撮影します。
  2. エッジデバイスでの画像処理: 撮影された画像データは ラズパイ内の Greengrass コンポーネント上で実行されている画像解析プログラムに渡されます。ここで OpenCV のテンプレートマッチング手法を用いて、賞味期限の日付が適切に印字されているかを判定します(詳細は後述)。この処理はクラウドを介さず端末内で完結します。
  3. 判定結果の処理: 画像解析の結果、日付印字が確認できれば正常(OK)とみなし、印字が見当たらなければ不良(NG)と判断します。NG判定されるとブザーが鳴り、作業者に通知されます
  4. クラウドへの送信: 判定結果や必要に応じて画像そのものを AWS IoT Greengrass 経由でクラウドに送信できます。現在はS3に画像を送信、IoT Coreでの死活監視に限定していますが、Greengrass は AWS IoT Core とシームレスに連携できるため、将来的な拡張が容易にできます。例えば、デバイス側から MQTT メッセージで結果をパブリッシュし、Amazon SNS でアラート通知するといった拡張も容易に実装できます。

以上のように、本システムではエッジ側デバイス上でセンサー入力 → カメラ撮影 → 画像解析 → 判定までを一貫して実行し、必要な情報のみをクラウドに連携します。次章以降では、この実現に用いたラズパイおよび AWS IoT Greengrass、ならびにローカル画像処理アルゴリズムについて詳しく見ていきます。

Raspberry Pi 5 を採用した理由 – エッジでの高速画像処理

こちらの採用理由としては、以前掲載したAWS SageMaker × AWS IoT Greengrassで実現するリアルタイム異音検知 〜Raspberry Pi 5でエッジ推論〜の記事と同様です。本ソリューションでも、Raspberry Pi 5 の高い処理能力により OpenCV を用いたテンプレートマッチングをミリ秒単位で実行でき、ライン上を流れる製品一つ一つを遅延なく検査することができています。また、OpenCV はオープンソースで無償利用できるため、Amazon Rekognition のように画像ごとに料金が発生することもありません​。

AWS IoT Greengrass によるエッジデバイスの遠隔管理とクラウド連携

ラズパイ上には AWS が提供するエッジコンピューティング向けソフトウェアである AWS IoT Greengrass (V2) をインストールしています。こちらも以前の記事に採用理由を記載していますので、ご興味ある方は是非ご覧ください。

AWS SageMaker × AWS IoT Greengrassで実現するリアルタイム異音検知 〜Raspberry Pi 5でエッジ推論〜

本システムでも、カメラ制御と画像処理ロジックを実装した Python プログラムを Greengrass カスタムコンポーネントとして作成し、クラウド経由でラズパイにデプロイしました。

本件でも実感しているGreengrassのメリットは、例えば画像処理アルゴリズムに改良を加えた場合でも、工場現場に足を運ぶことなくAWSマネジメントコンソール上から新しいコンポーネントをデプロイするだけで、ラズパイ上のソフトウェアをシームレスにアップデート(いわゆる OTA 更新)できる点です。これにより、お客様負担となっていたサポート費用などのコストを大幅に削減することができました。また AWS IoT Greengrass によって、将来的な拡張性を考慮し、複数ラインや新工場への展開にも柔軟に対応できるようにしています。

テンプレートマッチングによる印字有無の検出

次に、ラズパイ上で動作する印字検査アルゴリズムについて説明します。本システムでは、印字された賞味期限の日付そのものを文字認識するのではなく、「所定の位置にインクジェット印字が存在するか否か」を検出することにフォーカスしています。具体的には、OpenCVのテンプレートマッチング機能を用いて、印字が行われる領域における画像パターンの有無を照合しています。

詳細はこちら:OpenCV: Template Matching

テンプレートマッチングとは、ある画像の中から指定した小さなテンプレート画像と類似する領域を見つけ出す手法です​。OpenCV では cv2.matchTemplate() という関数が用意されており、テンプレート画像を入力画像との比較を行うことで、画像中からテンプレートと似た箇所を探索できます​。本ケースでは、事前に用意した「正しく印字された日付文字列の一部」をテンプレート画像として登録しました。例えば日付の桁の一部(特定の数字や記号)を切り出した小さな画像をテンプレートとし、それが撮影画像内に存在するかを cv2.matchTemplate で検索します。マッチングの結果、テンプレートとの類似度(相関値)が高い領域が見つかれば「インクによる印字あり」と判断し、どの場所にもテンプレートがマッチしなければ「印字なし」(インク未印字)と判断します。判定にはマッチングスコアが一定以上かどうかを見る閾値処理を施し、ノイズや微小なインク飛散による誤検出を防止しています。なお、本アルゴリズムはあくまで印字の有無のみをチェックする簡易的なものですが、製造ライン上での印字漏れ検出には十分実用に耐えることが分かりました。

現場環境で直面した課題と対策

エッジデバイスとカメラを用いた印字検査を実装する中で、現場の環境特有のいくつかの課題に直面しました。主な課題は、センサートリガーのタイミング調整による撮影位置のばらつきと、照明条件による印字認識精度への影響です。それぞれについて発生した問題と施した対策を紹介します。

トリガータイミングと画像位置のばらつき

最初の課題は、センサーが製品を検知してからカメラで撮影するまでのタイミング調整です。製品が高速に搬送されるラインでは、センサーが反応した瞬間にカメラで撮影しても、写る範囲が早すぎたり遅すぎたりして、肝心の賞味期限印字箇所が画像の端にずれてしまう場合がありました。また製品個々の位置ばらつきやライン速度の微小な変動によっても、印字エリアがカメラ画角内で一定しない問題が発生しました。これに対し、以下のような対策を行いました。

  • 撮影ディレイの調整: センサーで製品を検出してすぐに撮影するのではなく、敢えて数十ミリ秒の遅延を設けてからカメラシャッターを切るようにしました。センサー位置を印字箇所の少し手前にセットし、製品がさらに移動して印字エリアがカメラ正面に来るタイミングを見計らって撮影する形です。遅延時間はライン速度から算出した値を初期設定とし、試運転で微調整して最適化しました。これにより毎回ほぼ中央付近に印字箇所を捉えた画像が得られるようになりました。
  • 画像のトリミング(ROI固定): 撮影画像から、賞味期限印字が施される領域(ROI: Region of Interest)のみを切り出して解析するようにしました。あらかじめカメラの設置角度と距離を調整し、正しいタイミングで撮影された場合には印字エリアが画像内の一定の座標範囲に収まるようにします。その範囲を ROI として定め、テンプレートマッチングの対象をその領域内に限定しました。ROI を固定することで不要な背景や周辺模様による誤検出が減り、処理時間も短縮されました。この手法は前述のタイミング調整とセットで有効となるもので、適切に撮影された画像だからこそ安定した切り出しが可能になっています。

これらの対策によって、製品ごとの位置ずれによる印字見逃しを防止し、常に安定した範囲を解析できるようになりました。現場ごとに最適なセンサー配置・ディレイ時間を割り出す必要がありますが、一度チューニングが完了すれば、後はその設定で安定稼働します。

照明条件と印字の視認性

二つ目の課題は、照明環境による印字視認性のばらつきです。工場内の照明や製品包装の材質によっては、撮影画像に照明の反射が生じて印字文字が全く確認できなくなることがありました。特に光沢のあるフィルム包装では、ライン上部からの強い照明が反射してしまい、黒インクで印字された日付が背景と区別しにくくなる現象が確認されました。また時間帯や周囲環境の明るさによっても撮影画像の露出が変動し、検出精度に影響を及ぼしました。

この問題に対しては、主に照明を制御する対策を講じました。カメラ付近に専用のLEDライトを設置し、常に一定の明るさ・角度から印字箇所を照らすことで、環境光の影響を抑えるようにしました。さらにLED照明は調光(明るさの調整)が可能なタイプを選定し、照明の反射が発生しない光量に設定しました。必要以上に強い照明はかえって印字を飛ばしてしまうため、カメラ画像を実際に確認しながら印字が最もはっきり見える明るさを追求しました。また照明の取り付け角度にも工夫を加え、できるだけ正面からではなく斜めから印字面を照らすことで反射光がカメラに入らないようにしました。この光量・角度の調整は何度も試行錯誤してようやく安定しました。

照明環境を整えることで、印字文字の背景との差が明瞭になり、テンプレートマッチングの安定性も向上しました。実際、照明調整前はかすかにしか認識できなかった薄い印字も、調整後にははっきりと検出できるようになりました。現場導入時には機器の性能だけでなく、物理的な光環境のチューニングも検査精度に直結する重要な要素となります。

まとめ

本記事では、Raspberry Pi 5 と AWS IoT Greengrass を組み合わせたエッジコンピューティングによって、製品への賞味期限印字を低コストに検査するソリューションについて紹介しました。予算に余裕があるプロジェクトでは、AWS Rekognitionを使用するのが一番かと思いますが、センサーの調整、照明の反射対策などは共通して工夫が必要なポイントだと思います。

トラストは、現場のニーズに合った形でクラウドとエッジを使い分けることで、コストと性能のバランスに優れたIoTソリューションの構築・開発を行っています。

「商品パッケージの印字漏れ検査自動化」を検討中の方は、お気軽にお問合せください。