本記事では、ClipSegと呼ばれる機械学習手法を用いてテキストに応じたImage segmentationを行う方法をご紹介します。
ClipSeg
概要
ClipSegは、任意のテキストプロンプトに基づいた物体を検出するセグメンテーション技術です。
従来のセグメンテーションは検出対象のオブジェクト、および対応したクラスが固定されてトレーニングされます。このため、クラスの追加には再トレーニングが伴うため追加コストが発生します。
ClipSegでは、CLIPをバックボーンとしTransformerベースのデコーダーを拡張することにより、任意のプロンプトに基づいてゼロショットのセグメンテーションを実現しています。
詳細はこちらの論文をご参照ください。
本記事では上記手法を用いて、任意のプロンプトに基づいたImage Segmentationを行っていきます。
デモ(Colaboratory)
それでは、実際に動かしながらImage Segmentationを動かしていきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
環境セットアップ
それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
初めにGithubからソースコードを取得します。
次にライブラリをインストールします。
最後にライブラリをインポートします。
以上で環境セットアップは完了です。
学習済みモデルのセットアップ
ここでは、論文発表元が公開する事前学習済みモデルをGoogle Colaboratoryにダウンロードします。
Image Segmentation using Text
それでは、実際にテキストに応じたセグメンテーションを試してみます。
まずダウンロードしたモデルをロードします。
続いて、入力する画像をセットアップします。
以下の画像をセグメンテーションに使用します。
最後にセグメンテーションを実行します。
出力結果は以下の通りです。
レモンや女性などうまくセグメンテーションできていそうです。wood
に関しては、そもそも人間の目視でも判別しにくいオブジェクトなので木製に見える窓枠を検出しているだけでも十分だと言えそうです。
まとめ
本記事では、ClipSegを用いて任意のテキストに応じたImage Segmentationを行う方法をご紹介しました。
自然言語表現によるセグメンテーションにより活用の幅が広がりそうです。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
0 件のコメント :
コメントを投稿