皆さんは、AIで画像生成や画像認識ツールを使ったことがあるでしょうか?おそらく使ったことがある方は、精度やクオリティの高さに驚いたことでしょう。
しかしながら、AIは画像の中でどこまでを認識できているのだろうという疑問が浮かびます。例えば、画像の中の距離感。画像の中でどの物体が手前にあってどの物体が奥にあるのかということをAIは理解しているのでしょうか?
今回紹介するAIツールDeep Anythingは画像の深度マップを出力することができるツールとなっています。深度マップとは、画像の中の奥行き・手前の距離感をサーモグラフィのようにカラーマップに表したものとなります。このツールについてはあまり実用性があるものではないですがぜひご覧ください。
ちなみに、画像生成AIのrunwayでも深度マップを作成するツールがありますので、そちらでもぜひ使ってみてください!
1章 「Deep Anything」の使い方
Deep Anythingはオープンソースのツールとなっており、Githubにてコードが公開されています。そのため、ダウンロードした上でローカル環境でDeep Anythingを動作させることが必要です。
Deep Anythingの導入
Deep Anythingを使う前に、Deep Anythingを使うための準備をしていきましょう。Deep Anythingは基本的にPythonで動作させますが、その前にGithub上に公開されているコードを取得していきましょう。
macユーザの方はターミナル、windowsユーザの方はコマンドプロンプトから以下のコードを実行しましょう。
git clone https://github.com/LiheYoung/Depth-Anything
cd Depth-Anything
pip install -r requirements.txt
これにて必要なファイルをダウンロードできた上で、ファイル実行するディレクトリへと移動しています。
続いて実行に移っていきましょう!実行は、以下のフォーマットで行います。
python run.py --encoder <vits | vitb | vitl> --img-path <img-directory | single-img | txt-file> --outdir <outdir> [--pred-only] [--grayscale]
こちらをそのまま実行しても動作はしないので注意が必要です!このフォーマットの説明をします。
- -encoder <vits | vitb | vitl>:
-encoder
は必須の引数で、使用するエンコーダのタイプを指定します。<vits | vitb | vitl>
の部分には、エンコーダの種類が入ります。選択肢として以下が用意されています:vits
: ViT Smallvitb
: ViT Basevitl
: ViT Large
- -img-path <img-directory | single-img | txt-file>:
-img-path
も必須の引数で、処理する画像のパスを指定します。<img-directory | single-img | txt-file>
の部分には、以下のいずれかを指定します:img-directory
: 画像が含まれるディレクトリsingle-img
: 単一の画像ファイルのパスtxt-file
: 画像のパスが列挙されたテキストファイル
- -outdir <outdir>:
-outdir
は必須の引数で、出力ディレクトリを指定します。<outdir>
の部分には、結果を保存するディレクトリのパスが入ります。
- [–pred-only]:
-pred-only
はオプションの引数です。これを指定すると、予測結果のみを出力します。
- [–grayscale]:
-grayscale
もオプションの引数です。これを指定すると、入力画像をグレースケールで処理します。
このようにそれぞれの引数の中で自分に必要なものを選んで実行してみてください!
実際の使用例をいくつかパターンごとに紹介します!
- ViT Small エンコーダを使用して単一の画像を処理し、結果を
output
ディレクトリに保存する場合:
python run.py --encoder vits --img-path /path/to/image.jpg --outdir /path/to/output
- ViT Base エンコーダを使用してディレクトリ内の画像を処理し、予測結果のみを
results
ディレクトリに保存する場合:python run.py --encoder vitb --img-path /path/to/images/ --outdir /path/to/results --pred-only
- ViT Large エンコーダを使用して画像パスが列挙されたテキストファイルを処理し、結果をグレースケールで
output_gray
ディレクトリに保存する場合:python run.py --encoder vitl --img-path /path/to/images.txt --outdir /path/to/output_gray --grayscale
Deep Anythingを使ってみる
また、Deep Anything をデモで気軽に試したい方は、ブラウザ上のデモを使うこともできます。ブラウザ上のデモはこちらから利用することができます。
このブラウザ上では、画像のパスを指定する必要がなくシンプルにデバイスから画像をインポートすることで利用することができます。
試しに画像を入力してみて深度マップを出力してもらいましょう。
こちらのプラミッドの画像を試してみます。
このように画像を画面の左側に画像をアップロードします。「submit」をクリックすると深度マップの生成が開始されます。
10-秒ほど待つとこのように深度マップが作成されました。画像の右側のみが深度マップに変化しました。右側のピラミッドの部分はしんどマップ的には遠すぎて真っ黒になってしまっていますね。もう少し、近い距離の写真を使う必要があるかもしれません。
2章 Deep Anythingの料金・商用利用
Deep Anythingは先ほど述べたようにGithub上で公開されており、誰もが無料で使うことができます。
Github上で公開されているAIツールは基本的にオープンになっており、無料で使うことができますがその全てが利用に制限があるわけではありません。例えば商用利用や作品の公開などが制限されている場合などがあります。そのため。Github上でしっかりと確認する必要があります。
画面内赤枠の「Apache 2.0 license」からライセンスを見ることができます。ライセンスには、著作権や特許のライセンスについて詳しく書いてあります。
今回の場合、Deep Anythingでは、商用利用を含むあらゆる利用を許可しています。具体的には、ソフトウェアを複製、修正、配布、表示、実行、サブライセンス、および販売することができます。
しかし、DeepAnythingを元に作ったソフトウェアを配布をする際にはオリジナルのDeepAnythingを明記することが必要です。詳しい内容は、実際に公式サイトをご覧ください。
3章 まとめ
今回は、画像から奥行きを認識して深度マップを出力してくれるDeepAnythingというツールについてご紹介しました。実用性はあまりないかもしれませんが、AIが画像をどこまで理解してるか気になる方はぜひ使ってみてください!
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント