こんにちは、AI開発部で機械学習の技術開発をしている松尾です。
私たちは「CLIP on Actcast」というアプリを開発しました。このアプリは、OpenAIが提供する「CLIP」を活用し、簡単なテキスト入力だけで任意の物体を画像分類できます。本記事では、CLIP on Actcastの開発背景と特徴についてご紹介します。
目次
1. AIモデル開発の課題2. CLIP on Actcastとは何か
3. CLIPをエッジで動かす理由
4. Hailo-8とRaspberry Piで実現するエッジAI画像分類
5. 今後の課題
6. 終わりに
7. お問い合わせ先
AIモデル開発の課題
CLIP on Actcastを開発した背景に、AIモデル開発の課題があります。課題の話に入る前に、まずは一般的な機械学習プロジェクトにおけるPoC(Proof of Concept、実証実験のこと)の流れを見てみましょう。
下図のようにPoCは、AIモデル開発の後にアプリ開発、実地評価をする流れになります。そのうちAIモデル開発の段階では、データ収集、教師データ作成、AIモデル学習、AIモデル評価が行われます。データ収集や教師データの作成だけで1カ月以上かかることは珍しくありません。
PoCの流れ
例えば、人物を分類するAIモデルを作成する場合、人が写った画像を収集し、人に関する教師データを作成します。教師データの作成とは、例えば検出したい対象物(以降「クラス」という)が人の場合、人が写った画像を収集してから最小の矩形領域(下図の人を囲む枠)で「人」を指定します。その後、GPUを搭載した高性能なコンピュータでAIモデルを学習させます。
このときに、もし途中で新たに「携帯電話を持っている人」も分類する必要が生じると、追加のデータ収集(携帯電話を持っている人とそうでない人)と再学習が必要になるのです。つまり、分類するクラスに変更があると、AIモデル開発に追加の期間やコストが発生します。とはいえ、最初から様々なクラスを分類しようとすると、データ取得や教師データ作成、AIモデル学習時の計算リソース利用費などでコストが増大してしまいます。これがAIモデル開発における課題であり、AIの導入における大きな障壁となっていました。
この課題への対処方法の一つに、大規模データ学習済みAIモデルの活用があります。今回開発した「CLIP on Actcast」もOpenAI社のCLIP(詳細は後述します)という大規模データ学習済みAIモデルを活用してアプリを開発しました。CLIPを使用するとAIモデル開発に必要なデータ取得や教師データ作成、AIモデル学習が不要になります。先ほどの例では「携帯電話を手に持っている人」をテキストで登録さえすれば、事前に準備した複数の説明文の中から、どれがもっともらしいか推定してくれるのです。
CLIP on Actcastとは何か
「CLIP on Actcast」は、Actcastプラットフォーム※と繋がっているエッジデバイス上で動作します。簡単なプロンプト入力(テキストを入力する)だけで物体を分類できます。このアプリを活用すれば、従来のAIモデル開発で必要だったデータ収集や教師データの作成、AIモデル学習など、一連のプロセスをスキップできるため、PoC開始までの期間を大幅に短縮できるようになります。
CLIP on Actcastのデモ動画
※Actcastは、エッジAIシステムの導入・運用に必要なインフラ等の機能を提供する弊社のサービスです。詳しくはこちらをご参照ください。
大規模データ学習済みAIモデルを活用した弊社の別アプリに「LLM App on Actcast」(このアプリについてのブログ記事はこちら)があります。CLIP on Actcastは、LLM App on Actcastと比較すると、事前に準備した選択肢の中でもっともらしいものしか回答できないというデメリットがあります。一方で、CLIP on Actcastはエッジ内で処理が完結するため、従量課金によるコストが発生しないメリットがあります。そのため、CLIP on Actcastで特定のシーンを検出したときのみ画像をLLMへ伝送して画像認識すれば、運用コストの低減が期待できます。
ここで、CLIPについて簡単に紹介します。CLIPは2021年にOpenAI社が発表した、画像とテキストの類似度を測ることができるAIモデルです。画像とそのキャプション4億ペアのデータで学習されたCLIPは、追加の学習なしに様々な画像の分類に利用できます。CLIPには画像の特徴を抽出するimage encoderとテキストの特徴を抽出するtext encoderがあり、それぞれのencoderで抽出した特徴の類似度を計算しています。下図の例では、ペットボトルが写った画像とテキスト”a photo of bottle”を含むいくつかのテキストとの類似度を測っています。複数のテキストのうち最も類似度が高い”a photo of bottle”を、画像を説明するテキストとして採用します。このようにしてCLIPで画像を分類します。
CLIPをエッジで動かす理由
エッジでCLIPを動かそうとしたモチベーションは、学習済みのCLIPを利用するとスピーディにAIモデルを用いたアプリの試行ができるからです。
CLIPを利用して大量の画像データを仕分けするアプリ(高性能なコンピュータ上で動くもの)を作った際は、プロトタイプ作成から仕分けを試すまで1日とかかりませんでした。従来のAIモデルのように、仕分けしたいカテゴリごとの画像を集めてAIモデルを学習していたら、仕分けを試すまでに1週間以上※はかかっていたと思います。(※手元に学習に利用できるデータが大量にあって、そこから抽出してAIモデルを学習する前提だとして)。このスピード感をエッジのアプリ開発でも実現したく、CLIPをエッジで動かす取り組みに着手しました。
Hailo-8とRaspberry Piで実現するエッジAI画像分類
AIプロセッサHailo-8とRaspberry Piを使って、エッジでCLIPを動かして画像を分類する流れを下図に示します。カメラで取得した画像に対して、Raspberry Piで画像正規化等の前処理(CLIPで処理可能なデータ形式への変換)をします。その後、Hailo-8でCLIPによる画像特徴の抽出を行い、Raspberry Piで画像特徴と事前に設定したテキスト特徴の類似度を計算して画像を分類します。
高性能なコンピュータ上でしか動かせなかったCLIPですが、現在ではHailo Model Zooで公開された量子化済みのCLIPを使用することで、容易にエッジ上で動かすことができるようになっています。
CLIPで実現される新しいPoCの形
※1 https://github.com/hailo-ai/hailo_model_zoo/blob/master/docs/public_models/HAILO8/HAILO8_zero_shot_classification.rst
※2 https://www.idein.jp/ja/blog/20230221-aicast
今後の課題
エッジ上で動かしているCLIPには以下のように、いくつかの課題が残っています。
- 実行速度:エッジデバイス上での推論に約1秒かかる
- 改善案:より軽量化されたCLIPの活用(例:Apple社のMobileCLIP)
- 分類精度:CLIPの学習データになかったり少なかったりした対象物の分類精度が低下する(例:蚊取り線香は分類できなかった)
- 改善案:LLM App on Actcastの活用や高精度なAIモデル開発(CLIPの性能改善や特定の分類に特化したAIモデル開発)により精度向上を図る
- プロンプトの最適化:プロンプト中のある単語のわずかな違いで分類精度が大きく変動するため、プロンプトの試行錯誤が必要になる
- 改善案:1つの単語ではなく、複数の同義語を用いて分類し、単語選択の影響を減少させる
終わりに
エッジデバイスでCLIPのような汎化性能(学習なしに様々な分類ができる性能)が高いAIモデルを利用することで、PoC期間の短縮や効率的な実験が可能になりました。迅速にアプリを試し、その効果を実感しながら本番導入に向けた取り組みに移行できます。課題はあるものの短期間でAIアプリを試せるメリットは非常に大きいといえるのではないでしょうか。
お問い合わせ先
Ideinでは、AIモデルの開発技術を持つ企業様、およびAIを活用したサービス提供やコンサルティングを行う企業様などを対象に、エッジAIの社会実装を共に推進いただけるパートナー企業様を随時募集しております。
ご興味・ご関心をお持ちになった企業様は是非、以下のお問い合わせフォームよりお気軽にご連絡ください。お問い合わせいただいた内容に沿って、担当よりご連絡いたします。
こちらもあわせてお読みください
▶「EdgeOps(エッジオプス)」とは? AI時代はエッジでのソフトウェア「運用」が企業競争力に差をつける