投稿日

クラウド型カメラとAIで画像にキャプション付けをするサンプル公開

こんにちは、ソリューションアーキテクトの内田(ニックネーム: jet)です。

最近のアップデートで無料トライアルで購入前にオンラインで体験できるようになったクラウド型カメラサービス「ソラカメ」ですが、この無料トライアル中のカメラでももちろんAPIが利用できます。

今回新たに追加したソラカメ API の活用サンプルでは、ソラカメで撮影されたイベント画像をAPIを使って取得し、AIを使って画像のキャプション(画像の説明文)を付けたり、画像に対して自然言語で質問できる Visual Question Answering (VQA) を体験できたりします。

たとえば、出入り口や搬入口にカメラを設置して、イベント発生時の画像や動画で、何が記録されているかを確認を取りたい場合があるとします。 その際、手作業で確認する場合は、検知したイベントの数に比例して多くの時間を使ってしまいます。AI を利用して、画像や映像の内容からキャプション (画像の説明文) が得られれば、何が記録されているかをキャプションの文字列から確認するようなユースケースで活用できるかと思います。

サンプルを体験するには

サンプルを体験するには、これまで公開しているものと同様にまずは以下のページを確認してください。

そのあとは、今回のサンプル用のガイドページを開いて サンプルコード の項目に記載されているリンクをクリックするだけで体験できます。

今回のサンプルで利用しているのは、Salesforce が提供している LAVIS というライブラリを利用しています。LAVIS は、LAguage-and-VISion(言語とビジョン)の研究およびアプリケーションのためのPython用ライブラリです。

今回は LAVIS に含まれている language-vision models の中から BLIP を使って、画像にキャプションをつけるサンプルを作成しています。BLIP は現時点では BLIP-2 という最新のモデルも存在しますが、サンプルを実行している無償の環境ではリソースが不足するため、BLIP を利用しています。

今回 LAVIS を利用することにしたのは、まず簡単にセットアップができてすぐに試せることです。複雑なセットアップは必要なく、pip を利用してセットアプできます。また、ライセンス的に BSD 3-Clause License で公開されているため取り扱いしやすく、体験の後のステップでも利用しやすく体験したことを活用できるからです。

このような、画像に対してAIを活用していく流れは、みなさんご存知のChatGPT でも 最近のアップデートで追加 されている機能です。この機能は順次公開されているようで、現時点では私が利用している環境では利用できませんでした。残念です。利用できる様になったら、ソラカメAPI経由で取得した画像で実際に試してみたいと思います。

イベント画像にキャプションを付ける

イベント発生時の画像を、APIを利用して取得します。その取得したイベント画像に対してAIを利用して、画像についてのキャプション付けを実行できます。例えば、上記の画像に対してキャプション付けを行ってみると以下のようなキャプションとなりました。キャプションは実行時に動的に作成されているた
め、同じ画像を利用しても同じキャプションになるとは限りませんので、あくまでも一例になります。

# The description of the image =
[‘shelves that have different types of snacks’,
 ‘an orange box next to a black case with some food on it’,
 ‘a couple of shelves of cereal, chips and other snacks’]

今回はサンプルとなるので、キャプション自体のバリエーションを確認できるように 3行のキャプション が出力されています。なんとなくですが、画像の状態を説明しているような文章が出力されていることがわかるかと思います。

イベント画像に Visual Question Answering (VQA) を行う

VQA は、対象の画像についての質問を自然言語で入力すると、AI が画像の内容を読み取って質問に対して文字列で返答を行います。 今回利用しているライブラリでは、質問は 英語 で入力する必要がありますが、画像に関する質問に AI が回答するため、前述のキャプション付けと異なり自由に質問内容を変更できるので、ぜひいろいろと試してもらえると嬉しいです。

キャプション付けと同じイベント画像に対して、「Please describe the image.」という質問をなげかけてみました。回答として「food items」というテキストが返ってきました。他にも色々と写ってるとは思いますが、写ってるものは回答されているかと思います。

# question =  Please describe the image.
# Generated answer =  [‘food items’]

まとめ

今回追加したサンプルでは、画像に対してAIを活用することで自然言語で画像の内容を取得したり、画像の内容について質問したりできる内容でした。

ソラカメを使ってクラウドへ録画し、ソラカメAPIを活用することで録画データを他のサービスやAIに対してのインプットとして利用できます。これにより、より柔軟に色々な可能性を試すことができますのでぜひソラカメAPIを利用してみてください。

また、ソラカメAPIのサンプルは他にも公開されていますので、合わせてそちらもぜひ体験してみてください。


― ソラコム内田 (jet) @uchimanajet7