見出し画像

そうだ!AI画像生成をちゃんと勉強しよう💡9章:Image to Image

※勉強しているのは、Stable Diffusion、SeaArt系になります。

Text to Imageのお勉強が一区切りついたという事で、やっと次に進めます。
今日は画像から画像を生成するらしいImage to Imageについて勉強していきたいと思います!

本日も変わらず等身大の私でいきますよろしくお願いします(*⩌⩊⩌*)



Image to Image とは


基の画像とテキストの説明を組み合わせて新しい画像を生成できる技術。
プロンプトと参照画像の情報を両方考慮して描写するプロセスで構成されている。
要するに画像から画像に変換する技術です。

SeaArtではプロンプトを自動的に推測してくれたり、画像に一致するモデルも選出してくれるインテリジェント分析という機能があるようです。優秀✨
※自動のプロンプトは完ぺきではないので必ず自分でも確認するようにしましょう。
また、この機能を利用して好きな絵のプロンプトを出してもらい参考にする使い方もできそうです ♪


Stable Diffusion の img2img


Stable Diffusionのimg2imgは元の画像をベースに画像を生成することを指します。
細かい修正や指示ができたり、大きいサイズの画像を作ることができます。

試しにtxt2imgで生成した画像をimg2imgに入れて、パラメータなど何もいじらずに「Generate」を押してみたいと思います。

txt2imgで作った元画像 ↑
パラメータをいじらず img2img ↑

シュッとしたお姉さまが出てきました。
髪型が変わったりピアスが足されてたりしますね。


Image to Image のパラメータ


それではパラメータを見ていきます。
img2imgの画面はこのような感じ。txt2imgと同じパラメータは飛ばして、赤枠のはじめましてのものを学んでいきます。

三角定規📐のアイコン

自動的に参照元の画像サイズに設定します。


Resize mode


元の画像より大きいサイズに生成しなおすときに、どのように修正するかを選択することができます。

Resize mode4種類

  • Just resize:元の画像のままサイズだけ変える

  • Crop and resize:生成したいサイズに合わせて元の画像をトリミングする

  • Resize and fill:サイズ変更した時の余白部分を新しく生成した画像で補填する

  • Just resize(latent upscale):サイズを変更+画像の解像度を上げる


実際にリサイズしてみる


Resize modeの4種類を実際に試してみます。
4種類ともシード値を固定して、他のパラメータはデフォルトのままにします。

サイズだけ変えるJust resize

768×768 の画像を 1120×768 に変えてみたいと思います。

サイズに合わせて描きなおされました。
検証したい結果と違うので、Denoising strength(デノイジングストレングス)の値を0にして、ディテールを保持した状態で再びリサイズしてみたいと思います。
この後の3つについてもDenoising strengthは0にします。

横幅だけ大きくしたので引き延ばされた画像が出力されました。
条件によってはこのように不自然な画像になってしまうので注意です!


トリミングされるCrop and resize

次にクロップアンドリサイズを試してみます。
さきほどの512×512の元画像を使って768×512のサイズにトリミングしてみたいと思います。
元より大きくなるのにトリミングされるって…どうなるんだろう?

元画像

どうなるかと思ったら、拡大されて上下がトリミングされていますね。
拡大の基準点は画像の中心のように見えます。

余白を埋めてくれるResize and fill

この機能は凄いと思うのですが、実際にはない部分を新しく描いてくれる機能。
再び 512×512 の元画像から 768×512 のサイズにしてみましょう。

背景が書き足され生成されました。少し不自然さがあります。
試しにDenoising strengthを0.75に戻してみます。

顔は変わってしまいましたが、さきほどより自然な感じで部屋を描いてくれました。

サイズと解像度Just resize(latent upscale)

最期にサイズと解像度を同時に大きくする Just resize(latent upscale) を試してみたいと思います。

元画像

画像がぼけてしまいました。
これもDenoising strength(デノイジングストレングス)を0.75に戻してみたいと思います。

ぼけていない画像ができました。
Denoising strength 0.7も試してみました。

こっちのほうがいいかも?
やはり実際使うときは色いろ試してみる必要があるみたいです。



sketch機能


この機能は手描きのスケッチや線画から、よりリアルで精密な画像を生成してくれる機能。

使い方

  1. スケッチを用意する: まず、スケッチや線画を用意します。このスケッチは簡単な輪郭や形だけを描いたものでも構いません。

  2. スケッチをアップロード: img2imgのスケッチモードにスケッチをアップロードします。

  3. 設定を調整する: スケッチの詳細をどの程度反映させるか、細部の描写をどのようにするかを調整する設定を行います。通常、「強度」や「詳細度」などのパラメータがあり、これを調整することで出力画像のスタイルを制御できます。

  4. 変換を開始する: 設定が完了したら、生成を開始します。AIがスケッチをベースにして詳細な画像を作成します。


という事でまずは基になる画像を用意します。
どの人のパソコンにも入っているであろう「ペイント🎨」のソフトを使って
大雑把なスケッチを描きました。

ペイントソフトで作成

これを img2img の sketch機能にアップロードして「Generate」してみます。

おー🎵人になったらいいなと思ってマッチ棒描きましたが、ちゃんと人になってくれました。
そういえばプロンプトにずっと「1girl」と入っていたので当然かもですね😅

このままだと顔があいまいなので、img2imgに移って
シード値固定、解像度2倍、Denoising strength0.6 で出力してみました。
人物がもう少し良くならないかな~と思って。

img2imgでサイズを変更

女の子のディティールや遠くの背景などが加わって、最初よりは良くなりました。


次はStable Diffusion上でペイントして何か追加してみたいと思います。

ブラシで白い動物を追加

はい、上のように白い動物(犬のつもり)を書き足してみました。
一応プロンプトにも「1dog」とネガティブプロンプトに「easynegative」を追加しました。

どんな結果になるのか?!


犬っぽい動物が出てきてくれましたw
元の絵があまり上手くないせいで頭でっかちなワンちゃんになりました🤣

でも全体的には良くできてるのではないでしょうか。女の子の持っているものはリードに見えなくもない?

しかしなぜグレート茶色にしたのか…どんよりとした絵になってしまって後悔。


inpaint機能


この機能はブラシで選択された画像の一部を描き替えたり修正したりできる機能です。

使い方

  1. 画像を用意する: 編集したい画像を用意します。

  2. 修正箇所を指定する: img2imgのインペイントモードに画像をアップロードした後、修正したい部分をマスクで指定します。これにより、その部分が変更・補完の対象となります。

  3. 設定を調整する: 修正後のスタイルや、どのように補完するかを設定します。マスクした部分をどう描き直すか、元の画像とどの程度一致させるかなどを調整できます。

  4. 変換を開始する: 設定が完了したら、生成を開始します。AIが指定された部分を修正・補完して、新しい画像を生成します。

inpaintのパラメータ

Mask blur

マスク指定した部分と元の画像の境い目をどの程度ぼかすか。

修正したい部分の境界線をはっきりさせるか、ぼかして自然に見えるようにするかを選べます。ぼかしが少ないと、修正部分が目立ちやすくなります。逆に、ぼかしが多いと、修正部分が自然に溶け込んで見えます


Mask mode

マスクモードでは、修正するために画像のどの部分を選ぶか決めます。たとえば、「修正したい部分だけマスクする」か「修正しない部分をマスクする」かを選べます。これにより、どの部分が修正されるかを指定できます。

  • Inpaint masked:修正したい部分だけマスクする

  • Inpaint not masked:修正しない部分をマスクする


Masked content

マスクした部分に何を置くかを決めるパラメータ。

修正を始める前に、マスクした部分に元の画像を残すか、色や模様で隠すか、あるいは透明にするかを選べます。例えば、元の画像を残しておくと、それを参考にして修正されます。

・fill(塗りつぶし):マスクした部分を一色で塗りつぶす。
マスクされた部分を単色で塗りつぶし、その上から新しい画像を作成します。例えば、黒や白などの色で塗りつぶした状態から修正を始めます。これにより、AIがその部分を新しい情報で埋める際、元の画像に依存せずに作成します。

・original(元の画像):マスクした部分に元の画像をそのまま残す。
マスクされた部分に元の画像がそのまま残ります。この設定を使うと、元の画像を基にして修正が行われます。例えば、顔の一部を修正したいときに、元の顔の情報を参考にしながら修正を加えることができます。

・latent noise(潜在ノイズ):マスクした部分をランダムなノイズで埋める。
マスクされた部分にランダムなノイズ(不規則な点や模様のようなもの)を追加します。AIはそのノイズを基にして新しい画像を生成します。これは、完全に新しい情報を生成したいときに使う設定です。元の画像から離れて、全く新しいものを作り出したい場合に便利です。

・latent nothing(何もなし):マスクした部分を空白(透明)にする。
マスクされた部分を完全に空白にします。この場合、AIは何もない状態から画像を作り出します。元の画像の影響を全く受けずに、新しい要素を生成したいときに使います。

これらの設定を選ぶことで、修正部分がどのように生成されるかをコントロールできます。それぞれの設定を試してみて、自分の求める結果に近づけることができます。


Inpaint area

修正をどの範囲で行うかを決めるパラメータ。

  • Whole picture:マスクした部分だけを修正する。

  • Only masked:マスクした部分とその周囲を修正する。


Only masked padding, pixels

マスクした部分の周りにどれくらい余白を追加するかを決める。
修正部分が元の画像と自然につながるように、マスクされた部分の周りに余白を作ることができます。
この余白を設定すると、修正部分と元の画像がスムーズにつながって自然に見えるようになります。

値が小さいと、修正部分と元の画像の境目がはっきりして、修正した部分が目立つことがあります。
逆に値が大きいと、修正部分が元の画像とスムーズにつながり、全体的に自然な仕上がりになります。


inpaintを使ってみる


では実際にinpaintを使ってみましょう。
Masked contentの4種類を試してみたいと思います。
元にする画像はこちら。

モデル:AWPainting

元画像

それぞれのパラメータは、

・Resize mode:Justre size
・Mask blur:4
・Mask mode:inpaint masked
・Masked content:4種類試す
・Inpaint area:Whole picture
・Only masked padding, pixels:32(デフォルト)

Masked contentの4種類比較

fill(塗りつぶし)
original(元の画像)
latent noise(潜在ノイズ)
latent nothing(何もなし)

それぞれ全然違う結果になりましたね。
どれをどういう時に使うかは、私にはまだわかりませんが、よければ何かの参考にしてください。


Inpaint Sketch機能


「sketch」と「inpaint」の要素を組み合わせたモードです。
この機能は、既存の画像の一部をスケッチや線画を使って編集したり修正したりできるものです。

使い方

  1. 元の画像を用意する まず、修正したい画像を選びます。これは写真やイラストでも大丈夫です。

  2. 修正したい部分を選ぶ 次に、画像のどの部分を修正したいかを選びます。この部分を「マスク」と呼びます。たとえば、人の顔の目を変えたいときには、目の部分をマスクします。

  3. スケッチを描く マスクした部分に、新しく描きたい絵や修正したいデザインをスケッチします。たとえば、目の形を変えたり、背景に新しい建物を追加したりできます。

  4. マスクの透明度を調整する(オプション) マスクの透明度を調整すると、元の画像がどれくらい見えるかを決められます。透明度を高くすると、元の画像が少し見えるので、スケッチがその画像に合うように調整されます。透明度を低くすると、元の画像が見えなくなり、スケッチが主な要素になります。

  5. 画像を生成する 最後に、設定が終わったら「生成」ボタンを押して、AIが新しい画像を作ります。AIは、あなたが描いたスケッチを元にして、マスクされた部分を新しく作り直します。

使い方の例

  • 写真の背景に何かを追加したいときに、インペイントスケッチを使って新しい要素を加えられます。

  • キャラクターの顔の一部を変えたいときに、その部分だけをスケッチして修正できます。

元画像

「inpaint sketch」を試す前にまずはマイクを消します。

img2imgの「inpaint」を使いました。

それでは「inpaint sketch」を使って背景を変えてみたいと思います。

と思って背景に車のようなものを描いてみたのですが生成できませんでした;;
今の私には使い方がわかりませんでした…どなたか分かる方いたらぜひ教えていただきたいです。
使えるようになったら追記したいと思います。



最後すっきりしない感じで終わってしまいましたが、img2img はめちゃくちゃ実用性高そうですね🤩

今日は少しだけお世話になったガイドブックです👇




今日のサムネ生成過程(ChatGPT,DALL-E 3)

私「「そうだ!AI画像生成をちゃんと勉強しよう💡9章:Image to Image」というタイトルのnote記事を書きました。 このタイトルに合うような画像を作ってください。 要望は、夏服を着たロングヘアーの美少女、日本の少女漫画のようなタッチで、水彩画のようなカラーリングで16:9で描いてください。」

ChatGPTくん「こちらが「そうだ!AI画像生成をちゃんと勉強しよう💡9章:Image to Image」のタイトルに合うイラストです。ご確認ください。」

私「👍」

以上です。


📢お知らせ


さて、日頃から勉強の様子をお届けしていますが、その中で実際に生成した画像たちを、せっかくなので記事の最後に「おまけ画像」として掲載していこうかと思います。ちょっと恥ずかしい気もしますが、成長の過程やリアルな実情として皆さんの参考になればいいなと思います。

また、マネタイズを目指している身として、せっかくなのでこうした「おまけ画像」は有料にしてみようかなとも思います(笑)
でも、あくまでおまけの部分なので、有料部分は見なくても支障が出ることはないと思いますのでご安心ください(*⩌⩊⩌)♡

っとはいえいきなりのことなので、とりあえず今日までの分はどんな画像が見られるかのサンプルとして、いつも通り無料でみれるようにしています。過去の「そうだ!AI画像生成をちゃんと勉強しよう💡」の記事にも遡って追記しましたので、興味がある方はぜひチェックしてみてくださいね!



おまけの成果ギャラリーvol.9

リアル系に挑戦してみた

私は2次元が好きなのでリアル系は手を出してきませんでしたが、スキルの幅を広げるためにもどんなジャンルでもやってみようと思って、今回の記事でチャレンジしてみました。
理想の女子を作れるようになりたいです😎✨


ミスってネガティブプロンプトにgirlを入れた結果

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?