HuggingFace ブログ : 遠隔センシング (衛星) 画像とキャプションによる CLIP の微調整 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 12/20/2022
* 本ページは、HuggingFace Blog の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- Fine tuning CLIP with Remote Sensing (Satellite) images and captions (Authors : Artashes Arutiunian, Goutham Venkatesh, Mayank Bhaskar, Ritobrata Ghosh, Sujit Pal ; Published : 10/13/2021)
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
HuggingFace ブログ : 遠隔センシング (衛星) 画像とキャプションによる CLIP の微調整
今年 7 月 (訳注: 2021年7月)、Hugging Face は Flax/JAX Community Week を企画して、自然言語処理 (NLP) とコンピュータビジョン (CV) の分野で Hugging Face transformers モデルを訓練するプロジェクトの開始をコミュニティに勧誘しました。
参加者は Flax と JAX により Tensor 処理ユニット (TPU) を使用しました。JAX は (numpy のような) 線形代数ライブラリで自動微分 (Autograd) を行ない XLA にコンパイルダウンすることができて、そして Flax はニューラルネットワーク・ライブラリで JAX のためのエコシステムです。TPU 計算時間は、イベントの共同スポンサーである Google Cloud により無償で提供されました。
その後の 2 週間に渡り、チームは Hugging Face と Google からのレクチャーに参加し、JAX/Flax を使用して 1 つ以上のモデルを訓練し、それらをコミュニティと共有し、そしてモデルの機能を紹介する Hugging Face Spaces デモを提供しました。イベントにおよそ 100 チームが参加し、170 モデルと 36 デモという結果になりました。
私たちのチームは、たぶん多くのチームのように分散型で、12 のタイムゾーンにまたがっています。私たちの共通のスレッドは、TWIML Slack チャンネル に属することで、そこでは人工知能 (AI) と機械学習 (ML) トピックの共有される興味に基づいて集まっていました。
私たちは OpenAI の CLIP ネットワーク を RSICD データセット の衛星画像とキャプションで再調整しました。CLIP ネットワークは、インターネットで見つかった画像とペアリングされたテキストを使用し、自己教師あり流儀で画像とキャプションのペアで訓練することにより、視覚的コンセプトを学習しています。推論では、モデルはテキスト説明が与えられたときに最も関連する画像を予測し、あるいは画像が与えられたときに最も関連するテキスト説明を予測することができます。CLIP は日常的な画像に対してゼロショット流儀で使用されるほど十分に強力です。けれども、衛星画像は日常的な画像とは十分に異なり、それらで CLIP を再調整することが有効であると感じました。評価結果 (後述) が示すように、私たちの直感は正しいと判明しました。この記事では、訓練と評価プロセスの詳細とこのプロジェクトの将来的なワークのプランを説明します。
私たちのプロジェクトの目標は有用なサービスを提供して、実践的なユースケースのために CLIP を使用する方法を実演することでした。モデルは、テキストのクエリーを使用して衛星画像の大規模なコレクションを検索するアプリケーションにより利用できます。そのようなクエリーは画像を全体的に説明したり (例えば、ビーチ、山、空港、野球場、等)、画像内の特定の地理的 or 人工的な特徴を検索したり、述べたりすることができます。CLIP は、医用画像について medclip-demo チーム により示されたように、他のドメインに対しても同様に再調整できます。
テキストのクエリーを使用して大規模な画像コレクションを検索する機能は非常に強力で、社会的に有害な目的にも良い目的に利用できます。可能性のある応用は国防やアンチテロ活動、気候の変化の影響を手に負えなくなる前に察知し対処する機能等々を含みます。不幸なことに、このパワーは権威主義の国家による軍事と警察の監視のためのように悪用することもできますので、倫理的な問題も提起します。
私たちの プロジェクトページ でプロジェクトについて読み、訓練済みモデル をダウンロードして貴方自身のデータで推論するために使用したり、デモ を実際に見ることができます。
訓練
データセット
CLIP モデルを主として RSICD データセット で再調整しました。このデータセットは Google Earth, Baidu Map, MapABC と Tianditu から収集された約 10,000 画像から成ります。それは、Exploring Models and Data for Remote Sensing Image Caption Generation (Lu et al, 2017) を通して、遠隔センシング・キャプション作成を進めるために研究コミュニティに自由に提供されています。画像は様々な解像度の (224, 224) RGB 画像で、各々の画像はそれに関連する 5 つまでのキャプションを持ちます。
Some examples of images from the RSICD dataset
加えて、訓練のために UCM データセット と Sydney データセット を使用しました。UCM データセットは UC Merced Land Use データセットに基づいています。それは 21 クラス (クラス毎に 100 画像) に属する 2100 画像から成り、各画像は 5 キャプションを持ちます。Sydney データセットは Google Earth からのオーストラリアのシドニーの画像を含みます。それは 7 クラスに属する 613 画像を含みます。画像は (500, 500) RGB で各画像に対して 5 キャプションを提供しています。私たちはこれらの追加のデータセットを使用しました、RSICD データセットが CLIP を再調整するために十分大きいか確信がなかったからです。
モデル
私たちのモデルは以下で示されるオリジナル CLIP モデルの単なる再調整版です。モデルへの入力はキャプションのバッチと画像のバッチで、それぞれ CLIP テキストエンコーダと画像エンコーダに渡されます。訓練過程は 対照的学習 を使用して画像とキャプションの結合 (joint) 埋め込み表現を学習します。この埋め込み空間では、画像と対応するキャプションは、類似する画像や類似するキャプションのように、一緒に近くに押し込められます。反対に、異なる画像に対する画像とキャプション、あるいは類似していない画像とキャプションは、遠く離れて配置される傾向にあります。
CLIP Training and Inference (Image Credit: CLIP: Connecting Text and Images (https://openai.comclip/))
データ増強
データセットを正規化してデータセットサイズによる過剰適合を回避するため、画像とテキスト増強の両方を使用しました。
画像増強は Pytorch の Torchvision パッケージの組み込み transforms を使用してインラインで行われました。使用された変換はランダム・クロッピング, ランダム・リサイズとクロッピング, カラー・ジッター, そしてランダム水平/垂直反転です。
画像毎に 5 つ以下の独自キャプションを持つ、画像に対するキャプションを生成するために逆翻訳でテキストを増強しました。Hugging Face のモデルの Marian MT を使用して、既存のキャプションをフランス語、スペイン語、イタリア語、そしてポルトガル語に翻訳してから英語に逆翻訳してこれらの画像に対するキャプションを補完しました。
下の損失プロットで示されるように、画像増強は過剰適合を大幅に減らし、テキストと画像増強は更に過剰適合を減少させます。
Evaluation and Training loss plots comparing (top) no augmentation vs image augmentation, and (bottom) image augmentation vs text+image augmentation
評価
メトリクス
評価のために RSICD テストセットのサブセットを使用しました。このサブセットには 30 カテゴリーの画像があります。評価は、各画像を形式 “An aerial photograph of {category}” の 30 キャプションセンテンスと比較することにより行われました。モデルは最も関係性の高いものから低いものまで、30 キャプションのランク付けされたリストを生成します。top k スコア (for k=1, 3, 5 と 10) を持つキャプションに対応するカテゴリーが画像ファイル名により提供されるカテゴリーと比較されました。スコアは評価に使用された画像セット全体に渡る平均で、以下に示されるように、k の様々な値に対してレポートされました。
ベースラインモデルは事前訓練済み openai/clip-vit-base-path32 CLIP モデルを意味します。このモデルは RSICD データセットのキャプションと画像で再調整され、以下で示されるように、大幅な性能ブーストという結果になりました。
私たちのベストモデルは、バッチサイズ 1024 (128 on each of the 8 TPU コア)、そして学習率 5e-6 の Adam optimizer により画像とテキスト増強で訓練されました。2 番目のベストモデルは、Adafactor optimizer を学習率 1e-4 で使用した以外は、同じハイパーパラメータで訓練されました。You can download either model from their model repos linked to in the table below.
- ベストモデル – bs128x8-lr5e-6-adam/ckpt-11
- 2 番目のベストモデル – bs128x8-lr1e-4-imgaugs-textaugs/ckpt-42
デモ
CLIP-RSICD デモ にここでアクセスできます。それは以下の機能を提供するために再調整済み CLIP モデルを使用しています :
- テキスト-to-画像検索
- 画像-to-画像検索
- 画像内のテキスト特徴を見つける
最初の 2 つの機能は画像コーパスとして RSICD テストセットを使用しています。それらはベストな再調整済み CLIP モデルを使用してエンコードされ、近似最近傍探索ベースの検索を可能にする、NMSLib インデックスにストアされています、テキスト-to-画像と画像-to-画像検索についてはそれぞれ、クエリーテキストや画像がモデルでエンコードされて、コーパスの画像ベクトル空間に対して照合されます。3 番目の機能については、入力画像をパッチに分割してそれらをエンコードし、問い合わせテキスト特徴をエンコードし、テキストベクトルを各画像パッチベクトルと照合し、そして各パッチで特徴を見つける確率を返します。
Future Work
We are grateful that we have been given an opportunity to further refine our model. Some ideas we have for future work are as follows:
- CLIP エンコーダと GPT-3 デコーダを使用してシークエンス-to-シークエンスモデルを構築し、それを画像キャプション作成のために訓練します。
- 他のデータセットからのより多くの画像キャプションペアでモデルを再調整して、その性能を向上できるか調査します。
- 再調整が非-RSICD 画像キャプションペア上でモデル性能にどのような影響を与えるか調査します。
- 再調整済みモデルの (その上で調整された) カテゴリー以外を分類する能力を調べます。
- 画像分類のような別の基準を使用してモデルを評価します。
以上