2022年04月5日
PyTorchモデルを利用したVieurekaカメラアプリの開発
パナソニック システムデザイン株式会社の田頭です。弊社はVieurekaチームと共にVieurekaプラットフォーム拡充を進めて、様々なAIフレームワークを活用したアプリケーション開発に挑戦しております。
Vieurekaカメラ(VRK-C301)では、これまでも、TensorFlowLiteや、SageMakerNeoを利用してAI推論を実行できる環境が提供されてきており、ディープラーニングを活用したアプリ開発が可能となっています。そして、2022年4月にリリースされたファームウェアからは、新たにPyTorch(パイトーチ)の実行環境の提供を開始しました。
PyTorchとは、ディープラーニングに特化したPythonのフレームワークです。その開発のしやすさから人気が高く、名前を聞いたことがある、という方も多いのではないでしょうか。PyTorchについての詳細は公式HPをご覧ください。(https://pytorch.org/)
本記事では、このPyTorch用の推論モデルを利用してAI処理を行うVieurekaカメラアプリを開発する手順を、ご紹介します。
今回開発するのは、基本的な画像分類アプリです。PyTorchには学習済みの画像分類モデルである「MobileNet v2」が用意されているため、今回はこちらを利用します。
開発は以下の手順で進めていきます。
- 学習済みパラメータファイルをダウンロード
- アプリパッケージに学習済みパラメータファイルを追加
- 推論処理をPythonコードで実装
まず、「1.学習済みパラメータファイルをダウンロード」します。
推論モデルを容器の型だとすると、学習済みパラメータは、それを満たす中身のようなイメージです。モデルだけでは、画像を入力しても、期待するような推論結果が出力されません。モデルに学習済みパラメータをセットすることで期待する推論結果を得られるようになります。
今回使用する推論モデルは、PyTorchに含まれている「MobileNet v2」(https://pytorch.org/vision/stable/models.html#mobilenet-v2)です。
このモデルには学習済みパラメータが用意されていますので、予めこのパラメータファイルをダウンロードしておきます。
※Vieurekaカメラからインターネットに直接アクセスできる環境の方は、ソースコード内で学習済みパラメータをインターネットから直接読み込ませる実装を行うことも可能です。ですが、今回は事前にVieurekaカメラアプリ内に学習済みパラメータファイルを格納しておく方法で進めます。
学習済みパラメータのダウンロード元は、PyTorchの「torchvision」ライブラリのソースコード内に定義されているので、そこを参照します。
(https://pytorch.org/vision/stable/_modules/torchvision/models/mobilenetv2.html)
ソースコード内に記載のある、下記リンク先から「mobilenet_v2-b0353104.pth」をダウンロードします。
続いて、「2. アプリパッケージに学習済みパラメータファイルを追加」します。 アプリケーションパッケージの「data」ディレクトリ配下に、手順1で取得した学習済みパラメータファイル「mobilenet_v2-b0353104.pth」を配置します。
最後に、「3. 推論処理をPythonコードで実装」します。
PyTorchモデルを利用した推論周りの処理に絞って説明していきます。
①ライブラリのインポート
今回新たに導入されたライブラリ「torch」と「torchvision」をインポートします。
②推論モデルの準備
まず「torchvision」ライブラリから推論モデルを取得します。その後、その推論モデルにダウンロードしておいた学習済みパラメータを読み込んでいます。最後に推論モードに切り替えて、推論モデルの準備は完了です。
③推論実行
推論モデルの引数に、前処理済みの画像データを渡すと、推論を行います。推論結果は、リスト形式の返り値として出力されます。
ここまでが開発の手順です。
商用のAIカメラに、PyTorchをバンドルしていることは、開発者にとって非常にありがたいことだと感じました。自前で環境構築をする必要がないため、開発期間が短くて済みます。実際に、PyTorch初心者の私でも、3日で開発が出来ました。
それでは、実行結果を確認してみましょう!
画像分類モデルは、カメラ画像内の物や風景を推定します。
以下の例では、入力画像の左上に分類結果とその信頼度(0.00~1.00)を出力しています。
入力画像に対して、信頼度0.27の「desk」と分類されていることが分かります。
この例のように、Vieurekaカメラ上でPyTorch用の推論モデルを用いてAI処理を行うことができます。
ここまで、画像分類モデルを例にPyTorchを用いたVieurekaカメラアプリの開発方法の説明と、その実行結果を確認してきました。
PyTorchを搭載したことにより、例えばこれまで別の環境で実装していたPyTorchのソースコードも、移植がしやすくなりますので、より門戸が広がったのではないでしょうか!
弊社はVieurekaパートナーとして、様々なリアル空間のデジタル化に挑戦し、新たな価値創造を目指していきます。
パナソニック システムデザイン株式会社
https://panasonic.co.jp/cns/psd/
ソリューション
ご専門分野: システム開発、サービス開発
問い合わせ先:
〒222-0033 神奈川県横浜市港北区新横浜3丁目1番9号 アリーナタワー
TEL:(045)471-9160
(Webサイトの問い合わせフォームをご利用ください)
担当:Vieureka推進窓口
専門分野:システム開発、サービス開発