xckb的雑記帳

身の回りにあったことを雑多に語ります。

PhotoshopのAI「生成塗りつぶし」:聖地巡礼写真やドローンのパノラマ写真修正などにも神機能だぞ

(2023年6月28日追記)Photoshop (beta)をアップデートしたところ、機能の名称が「ジェネレーティブ塗りつぶし」から「生成塗りつぶし」に変更になったようなので、用語を置き換えた。

久しぶりにお絵描きAI系の記事を書いてみようと思うのだが、今回は割と最近話題になっているAdobe Photoshopの生成AI機能「生成塗りつぶし」だ。これはPhotoshop自体の使い方を大幅に変えるかもしれない凄い新機能になっている。

今回の目次はこちら。

「生成塗りつぶし」を使うには?

2023年6月現在、現行バージョンのPhotoshopは「生成塗りつぶし」をサポートしていない。「生成塗りつぶし」を利用するには、Photoshopの入ったAdobe Creative Cloudのプランに加入した状態で、Creative Cloudアプリの「ベータ版アプリ」のところから「Photoshop (Beta)」とあるベータ版のPhotoshopをインストールする必要がある。

ベータ版も割と普通に安定して使えるので、ふと常用したくもなるのだが、現行バージョンでサポートされていない機能(当然「生成塗りつぶし」を含む)を用いたPSDファイルを生成すると、現行バージョンで開くとエラーが発生する場合があるようなので、その点は注意が必要だ。

ということで、他人に渡すPSDファイルを作成するような環境では安易に利用しない方が良い。またPhotoshopは2つ以上のバージョンを同時に起動することをあまり想定していないようなので、現行バージョンとベータ版を同時に起動することは避けた方が良いようだ。気をつけたい。

ベータ版では「生成塗りつぶし」は「編集」メニュー中にもあるし、ベータ版だと選択範囲を選択すると、コンテクストメニューの目立つ場所にもボタンが表示される。

本来の使い方は、範囲を選択して「生成塗りつぶし」機能を選択し、プロンプトを入力すると選択範囲にAIで生成された結果の入ったレイヤが生成されるものだ。たとえばこの画像ファイルは「サマータイムレンダ」の聖地巡礼に行った時に万年青浜のモデルとなった場所で撮った写真なのだが…。

適当に海岸あたりを選択して、「サマータイムレンダ」への連想から、プロンプトとして「Giant whale adrift」(漂着した巨大な鯨)とか入力してポチりとすると…。

それっぽい画像が生成されて出てくる(基本3つ生成されるので好きなものを選択するのだが、気に入らなければ再生成も可能)、というものだ。この際、割と色味とか背景とかを既存の背景に合わせてくれるところが実によくできている。

まあ、昨今のペンタゴンのフェイク映像のような悪用を想定してか、煙や爆発などが生成できないし(火事はギリギリいけそう)、上の鯨にしてもマッコウクジラは英語名が禁止語句に引っかかって生成できないんだよね。そういう制限はちょっと悩ましい。

ともあれ、「サマータイムレンダ」はいいぞ。

プロンプトを入れずに使うと、超賢い「コンテンツに応じた塗りつぶし」になるぞこれ!

しかし自分としてはより注目している機能があるのだ。それが、プロンプトなしでこの機能を使うことである。これによって「生成塗りつぶし」は、しばらく前からPhotoshopにあった「コンテンツに応じた塗りつぶし」機能の超強力版にもなる。

たとえば上の画像ファイルの左端にある建物や道路を丸ごと囲んで、プロンプトなしで「生成塗りつぶし」を実行してみる。

そうするとこんな画像が生成されてきたりするのだ。囲んだ中にある建物などの人工物や綺麗さっぱり消えて、自然の風景になっている。

同じことを(以前からあった)「コンテンツに応じた塗りつぶし」でやろうとすると、ちょっと頑張ってもせいぜいこんな感じが関の山だ。

基本的に「コンテンツに応じた塗りつぶし」は、とても賢いスタンプツールであり、スタンプツールでそこそこなんとかできそうな題材は割と綺麗に半自動でやってくれるのだが、「生成塗りつぶし」はソースの絵を見た上で範囲内を再度AIで描き直すものなので、出来が全く違うのは仕方がない。

「コンテンツに応じた塗りつぶし」は、画像ファイルを拡張した際や回転させた時に生じた余白を埋める作業などにはかなり効果的である(というか、これがメインの適用対象の機能だと思う)。

次の例は、これもサマータイムレンダの聖地巡礼で訪れた和歌山県の友ヶ島で撮影した空撮写真のカンバスサイズを120%に拡張したものだ。

この拡張によって生じた余白を「コンテンツに応じた塗りつぶし」で無調整で塗りつぶした例が次の写真である。

右下の海面での反射の部分に一部目立つ問題はあるが、あとはスタンプツールを使って拡張したものと考えれば、なかなか上々である。とはいえ、細かく見ると同じ形状が複数回繰り返し出てくるなどの、スタンプツールにありがちな状況が生じていることはすぐにわかる。

同じことを「生成塗りつぶし」(プロンプトなし)で行った次の画像と比較してみると、スタンプツールの大量繰り返しで作ったような上の写真とは全く質が異なることがわかるだろう。

「コンテンツに応じた塗りつぶし」は余白を埋めるのには十分に役に立つが、「生成塗りつぶし」はそれ以上に役に立つのだ。

人や車を消すのに使ってみよう(聖地巡礼に使える?)

さて、こういうことができるとわかってくると、やりたいことができてくるのだ。まず、このブログには結構聖地巡礼の記事が多いのだが、その際以前から課題になっているとのが、人や車のいない写真を撮りたいのだが、なかなかそんな都合の良いタイミングはやってこない…というジレンマだ。

人や車が少なくなるタイミングがそこそこあるような場所ならいいのだが、それでも待つのが大変だったりするし、そもそもそんなタイミングねーぞ、という場所は多い。かといってその全てをPhotoshopで潰して回るのは手間がコスト的に見合わない。要するに今までは適当に妥協してきた。

だが、「生成塗りつぶし」を使えば、この長年のジレンマが解決する上に、さらに昔撮ったが出来に不本意だった写真からも人や車をさくっと消せるのでは、と考えるのは、このブログ的には真っ先に出てくるべき発想だろう。早速やってみよう。

まずは手始めに漫画「新しいきみへ」の聖地巡礼で撮ってきたこの小田原城前の写真。こういう望遠アングルで人がいなくなるのを狙うのは本当に大変(一応人の顔はガウスぼかしで隠してる)。

人を消して、ついでに右側の標識みたいなやつを消して、さらに地面に戯れに水溜りを配置してみた。

初めてやったのにも関わらず、この加工に数分しかかかってない。すごい。

これまた「新しいきみへ」の聖地巡礼で何度も来たのに、今まで一度も人がいなかったことがないこの灯台(人と犬をガウスぼかしで隠してる)。しかも灯台の土台のところにも、いつも何かしらの荷物(釣具とか)が置いてあったりする。

これまた数分の操作でこれだ。特に、綺麗に荷物だけ消えて、灯台の土台に接合する赤いパーツの部分はしっかり残っているところが素晴らしい。さらに背後の釣竿のようなものもまとめて消せているが、凄いなこれ。

今まで30年営々と使われてきたPhotoshopの邪魔なオブジェクト消去のテクニックを、ごっそりと時代遅れの技術にしてやがるぞこのAI様…。

もっと難易度を上げてみようか。これも「新しいきみへ」の聖地巡礼で撮ってきた平日昼間の新宿南口駅前だ(人の顔とナンバープレートをガウスぼかしで隠している)。

こいつを何度か生成塗りつぶしにかけるとこうだ!こんな垂直に陽がさす時間帯に、見渡す限り無人で車もない新宿南口だぞ。

ちなみに俺がこの画像で見どころだと思うのは、左車線一番手前のミニバンを、ちゃんと手前の棒は残した状態で車だけを消してくれているところだ。正直、この棒は車と一緒に消えると思っていたのに、なんでちゃんと残せるんだよこのAI様。プロンプトに何も与えてないんだぞ。

よし、次は新宿駅構内だ。平日18時過ぎ、帰宅時間帯の新宿駅南口構内。ここから人を消してみる(人の顔はガウスぼかしで隠してる)。

というわけでこうだ! 群衆の代わりに変なオブジェを多数生成してしまっているが、これもさらに個別に消すことは可能だ。

この画像の見どころはやはり床のタイルだな。何も指定していないのに結構ちゃんとタイルのパターンを再現して埋めてくれている(一部変な場所はあるがそれでも頑張っている)。

首都高湾岸線。これも「新しいきみへ」の聖地巡礼で撮った写真だ。こちらの左側の車線から車を消し去りたいとする(漫画本編ではそうなっているんだよな)。本線を走る車程度なら何分か待てば車がいないタイミングも来そうではあるが、左に駐車しているトラック群は当分動きそうにない。

そんな時もちょいちょいでこれだ。まあちょいと偽のオブジェクトを捻り出しているがそれでもこれが15〜20分程度で作れるのは凄いと思うぞ。

で、右側の道路に「traffic jam」とか適当なプロンプトを与えるだけで車が増えたりするぞ(これも漫画本編でそうなっているんだよな)。まあ細かい車種や画質やナンバープレートの形状などの細かい問題はあるが、それらの細かい問題も修正は可能だろう。少なくとも一から全部やるよりは、はるかに簡単だ。

新しいオブジェクトの生成には色々問題があるが、消去とその辻褄合わせに関しては今のバージョンでもとてもよくできている。これはちょっと、聖地巡礼勢には強力な味方だぞ。聖地巡礼の場合はほぼ消すだけだしな。1人2人程度人がが写り込んだ程度では、あまりにあっさりと補正してくれる。いくら待っても車がやってきてしまう場所でもかなり簡単に消すことが可能だ。

ちなみに「新しいきみへ」は俺が最近超お気に入りの漫画である。無茶苦茶面白いぞ。

ドローンのパノラマ撮影写真の修正にも有用そう?

もう一つ、自分の趣味的にここで「生成塗りつぶし」が使えるのではないかと思ったのが、ドローンによるパノラマ撮影だ。

最近のDJIのコンシューマ向けドローン(Air系やMini系)にはパノラマ撮影モードがついており、これはドローンがぐるぐる回転しながら多数の写真を撮影し、そこから超広角写真を合成するものだ。特にMini 3系はプロペラの間の隙間から上方も余さず撮影できるので、このモードが非常に有用である。

ちなみに、この記事のドローン写真は全て、DJI Mini 3 Proで撮影したものだ。実に良いドローンだぞ。

サンプルとして、夜明けの剱崎(神奈川県)の360度写真。マウスやタップで上下左右の視点移動とズームの操作が可能だ。

ところがこの撮影法、非常に多くの写真から合成されるので、少し風が吹いたりして1枚でも修正可能範囲を超えてしくじると、全体としては失敗作品となってしまうのだ。特に水平線が上下にずれたり斜めに傾いたりすると非常に目立つのだが、これが失敗したかどうかを確認するには、着陸させてPCに転送しないと確認できないため、家や宿に帰って初めて失敗に気づくようなパターンも多い。

実は上にサンプルとして載せた夜明けの360度写真は、そのような失敗作から生成塗りつぶしを使って復活させたものである。修正前のオリジナル状態はこちらだ。これは失敗作としか言いようがないだろう。

360度写真に展開前のオリジナルファイルはこういうものだ。おそらく360度撮影中の1回だけ、派手にしくじっている。強風などの揺れが原因となった可能性がある。このような問題をここではスティッチングのずれと呼ぶ。

失敗部分を拡大するとこんな感じになる。ちょっとした修正で補正できる範囲を外れて傾いてしまっている。

さて、この問題箇所を適当に四角く囲って「生成塗りつぶし」を適用してみようじゃないか。あくまで適当に。

はっ? マジ? 一発でこれ? 完璧じゃねーか。このAI有能すぎん? まあ、雲の形は変わっているけれども所詮雲だよ? 違和感もほぼない。

そんなわけでこの修正結果をそのまま載せたのが最初の360度写真のサンプルだ。凄すぎる。これでどれだけお蔵入りしているパノラマ写真失敗作が日の目を見ることができるのか。

というわけで、もう少し複雑なやつを紹介してみたい。これも「サマータイムレンダ」の聖地巡礼時に寄った香川県の男木島でのパノラマ写真(ボツ)だ。うまく行っていない点をテキストで解説した360度写真はこちら。

この写真の主な3つの問題を1画面に収めた状態でキャプチャした画面は以下の通り。

改めて箇条書きにすると、次のような感じになる。

  • 漁港で一番左の船が2つに分解している。船以外の周囲がそれほど破綻していないことを見ると、船が風に揺れて物理的に位置が動いてしまった可能性があると考えられる。
  • 背景の航跡の先にある船が。ちょうど画像の境界に位置しており、前半分が切れてしまっている。これも撮影時間の差によって生じたものと考えられる。
  • 背景の南備讃瀬戸大橋を含む水平線付近がわずかに縦方向にずれてしまっている。このスティッチングのずれは角度にすると0.5度反時計回り程度である。

このような場合は生成塗りつぶしのみで全てを修正することは不可能である(というより、プロンプトによる新オブジェクトの生成は可能な限り避けたい)。

ということで、まずは時間軸の問題で泣き別れになった可能性のある船の前後を接続してみる。

コピーアンドペーストで、ずれた船の中間地点で、できる限り自然に船が接合するように自由変形ツールで修正した。背景はとりあえず放置。

前後の船の接合部が不自然になっていたのでその部分を生成塗りつぶしで補間。

右の接合部がそれでも不自然なカーブだったので、これはスタンプツールで軽く修正。

次に、いったん貼り付けた自由変形、生成塗りつぶし、スタンプツールで修正したレイヤーを全部不可視にして、元々あった船を生成塗りつぶしで完全に消去した。

そして、船のレイヤーを復活させ、周囲の海を生成塗りつぶしで綺麗に整えた。

ということで、船の修復完了!

次は水平線の修正だ。丸ごと生成塗りつぶしでもなんとかなりそうなんだけれども、そうするとうっすらと見える瀬戸大橋が消えてしまいそうなので、水平線付近を横に細長く選択し、それを変形機能でわずかに回転させて、そこで発生した周囲との隙間や重複部分を生成塗りつぶしで整える、という方針とした。

まずは0.5度時計回りに回転して移動させ、両端の水平線の位置を合わせる。

で、周囲との接合部を生成塗りつぶしで補間すると、瀬戸大橋を保ったままで、スティッチングのずれをほぼ補正できた。

次はその手前の船の前半分がなくなっている問題。これは船全体をAIで生成させたほうが綺麗にできそうということで、その方針で。

プロンプトには「small boat」と入れて、手頃な船を生成した。

よく見るとその手前の部分の海にもスティッチングの不自然さが残っていたので、ここも生成塗りつぶしで若干修正を入れた。

微妙ではあるが補正済み。

ということで完成だ!

修正箇所が全て写るアングル。前後に分離した船、前半分がなくなった船、スティッチングずれを起こしていた水平線が全て解決している。

ちなみに、このようなスティチング問題が起こるのは360度のパノラマ撮影に限らず、「広角」と呼ばれている9枚の写真から1枚の超広角写真を合成する機能でも発生する。写真は千葉県の野島崎の夜明け(これは別に聖地巡礼で行ったわけではないが、あえていえば「戦翼のシグルドリーヴァ」の舞台ではあるな)。

上の写真は全体的に反時計回りに傾いている上に、右側の水平線に軽いスティッチングのずれを発生させている。画像全体を時計回りに回転を行った上で、それで生じた余白を生成塗りつぶしで外挿して描き、さらに生成塗りつぶしでスティッチングのずれを修正する。

修正後の画像がこちらとなる。

さらに、Photoshopの通常のテクニックでHDRライクなレベル補正を加えたのがこの状態。太陽の周りに見えている輪も強調されて、なかなかいい感じになったな。ほんのりとイラスト風で、気に入っている。

この写真も元々ボツにしていたのに、復活で日の目を見られるようになったのがとても嬉しい。「生成塗りつぶし」のAI様様である。

というわけで…

おそらくもうしばらくすればメインストリームのPhotoshopにこの「生成塗りつぶし」の機能は落ちてくるものと思われる。これはPhotoshopというツール自体の使い方を大きく変える可能性のある恐るべき新機能である。この機能の導入前と後ではPhotoshopは別のソフトとなる、と言っても過言ではない大変化となるかもしれない。

こういう新技術を、30年の歴史を持つ自社のフラグシップ製品に見事に統合して出してくるAdobeはまあ、流石であると思う。いろんな思い出から好きになれない会社だし、何よりAdobe税は自腹で払うには高いしと色々不満は多いのだが、それでもAdobe製品を使い続けてしまうのは、まあそういうところなんだよな、という感じだ。

一方で日本国内では生成AIを取り巻く状況は、一部の過激な否定派の意見が目立つようになっているのが実に残念である。ポシャったクリスタの生成AI機能なんて、今後育てていけば良いツールになったかもしれないのにね…と、このPhotoshopの新機能を使ってあらためて思った。

まあ否定派の意見もある程度は理解するが、先日ネットで見かけた「日本は著作権でAIに有利というが何も製品が出てこないじゃないか」という意見だけは受け入れられない。製品が出てこようとするたびに集団で攻撃して潰して回っている本人たちがそれを言うのはあまりにも醜悪であると思うので、それだけは言わないことをお勧めしたい。

ぜひ逆風に負けず日本の企業には頑張っていただきたいものだ。