LoginSignup
91
77

画像生成AIを使った自分だけのおしゃれなQRコードの作成手法

Last updated at Posted at 2023-07-09

はじめに

今回ご紹介するのは最近流行りのQRコードに絵を描く技術です。タイトル通り、今回紹介する方法で自分だけのおしゃれなQRコードを作成できます。このQRコードはもちろん読み取ることができます。注:読み取ると弊社の採用ページに飛びます。(画面サイズにもよりますが、少し引き気味で撮るとうまく認識しやすいです)

00004-1847487018 (1).png

これは画像生成AIモデルのStable Diffusionを活用することで実現できます。
簡単にStable Diffusionについて解説したあと、方法を解説します。

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

Stable Diffusionとは

Stable Diffusionとは、入力されたテキストを元に画像を生成するAIモデルです。

例えば「Big mountains」と入力すると以下のような画像を生成してくれました。
00000-2392506131.png

このStable Diffusionを活用していきます。絵を埋め込んだQRコードの作成にはControlNetと呼ばれるStable Diffusionの拡張機能を使用します。今回はローカルのWindows環境(自分の手元のPCはNVIDIA GeForce RTX 3060が入ってます)を想定して生成を行います。手元のM1チップのMacbookAirではメモリ不足で生成できませんでした。Macで挑戦してみたい方は適宜補ってみてください。

Stable Diffusionの導入

Stable Diffusionを使用するにはまず、PythonとGitのダウンロードが必要です。Gitは必須ではありませんが、覚えておくと便利なので是非、使用してみましょう。

Pythonのインストール

Pythonのバージョンは3.10.6が推奨されているので推奨バージョンをダウンロードします。(3.11.xは動かないとか...)

ダウンロード時にはAdd 3.10にチェックボタンを入れましょう。(パスを通さずに操作していくとエラーを出します)
python_Qiita.png

Gitのインストール

バージョン管理システムのGitをダウンロードします。

Gitのダウンロードに不安のある方はこちらを参考にしてみてください。

Stable Diffusionのインストール

Stable Diffusion web uiをインストールします。Stable Diffusion web uiでは、ローカルサーバーをたて、Web上でStable Diffusionの操作を行えます。

コマンドプロンプト上で、展開したい場所に移動したら、以下を実行してください。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

ダウンロードが完了したら、stable-diffusion-webuiフォルダが作成されるので、フォルダ内にあるwebui.bat(Macはwebui.sh)を実行しましょう。実行完了まで時間がかかるので時間があるときに実行しましょう。30分くらいで終わるらしいですが、筆者は1時間ほどかかってしまいました。

実行が完了すると、コマンドプロンプト上に

Running on local URL: サイトURL

と表示されるのでURLを踏んだら、以下の画面となり、準備完了です。

stableUI.png

使用するモデル

絵を生成するモデルを選びます。今回はCounterfeit-V3.0を採用しました。モデルは適宜、好みなモデルを試してみてください。Hugging FaceCivitalからモデルを探すことができます。Civitalではどんな絵が生成されるのか表示されているのでおすすめです。モデルが多すぎて選べないという方はこのようにまとめられたサイトもあるので参考にしてみてください。

cicital.png

モデルのダウンロードが完了したら、stable-diffusion-webui/models/Stable-diffusion/に保存したファイルを置きます。これでモデルの導入は完了です。

ダウンロード方法の詳細はこちらを参考にしてみてください。

拡張機能の実装

QRコードに絵を描画させるにはControlNetと呼ばれる拡張機能を導入します。Stable Diffusion内にある「Extensions」を選択します。Extensions内の「install from URL」を選択しましょう。「URL for extension's git repository」にこちらのControlNetのURLをペーストしてinstallを押します。

extensions.png

Installが完了したら、「Extensions」/「Installed」のApply and restart UIをクリックしましょう。

ControlNetのモデルのインストール

絵を生成するモデルとは別で、ControlNetに使用するモデルを導入します。
こちらから、「control_v11f1e_sd15_tile.pth」をダウンロードします。↓ボタンを押すことで、ダウンロード可能です。
controlnet_mini.png

ダウンロードしたファイルをstable-diffusion-webui/extensions/sd-webui-controlnet/models/に配置します。これでもう一度、Stable Diffusionを再起動させましょう。

ここまできたらダウンロードはすべて完了です!
実際にQRコードを作成しましょう。

作成

QRコードの作成

まず、こちらのサイトからQRコードを作っていきます。

URLを選択して、QRコードを読み込んだときに、飛ぶ先のリンクを埋め込みます。
スクリーンショット 2023-07-06 12.58.24.png

Generateボタンを押して、QRコードを生成しましょう。
スクリーンショット 2023-07-06 13.01.13.png

最後に生成されたQRコードをPNGでダウンロードします。これでQRコードの準備は完了です。
スクリーンショット 2023-07-06 13.12.48.png

実際に弊社のリクルート採用のページをQRコードにしてみました。
リクルートQR.png

Stable Diffusionの操作

Stable Diffusionのパラメータをいじっていきます。

①絵の生成モデルの選択

画面最上部の「Stable Diffusion checkpoint」から導入したモデルを選択します。

②img2imgのタブを選択

img2imgタブを選択し、生成したい絵のプロンプトを張り付け、QRコード画像をアップロードします。
設定はCivitalなどを参考に調整してみてください。Civitalではこのように絵の詳細な設定が公開されています。冒頭のQRコードはこちらを参考にしました。

civital.png

③ControlNetの設定

img2imgの設定下にControlNetがたたまれているので、展開するとControlNetの設定ができるようになります。

new_controlnet.png
ControlNetにもimg2imgと同様に、QRコード写真をアップロードします。以下の画像のようにControlNetの設定を行います。
controlnet_syousai.png

あとは、主にControl Weight, Starting Control Step, Ending Control Stepの値を調整しながら画像の生成を行っていきます。(この作業がなかなか大変です)

実際の設定

冒頭のQRコードの設定をご紹介します。プロンプトは参考にした絵をそのまま入力し、img2imgとControlNetの設定をQRコードとして読み込まれるように調整しました。

img2imgの設定

Just resize
Sampling method:DPM++ 2M Karras
sampling steps:25
width:768
Height768
Batch count, size:1
CFG Scale:7
Denoising strength:0.85
Seed:1847487018

ControlNetの設定

Control Weight:1.75
Starting Control Step:0.33
Ending Control Step:1

結果

上記の設定で実行すると冒頭で紹介したQRコードが生成されました。これ以外にもプロンプトやパラメータをいじると様々な絵をQRコードに組み込むことができます。

この技術を使用して、自身のホームページなどのQRコードを作成して、名刺などに添えるのも面白いかもしれません。

00004-1847487018 (1).png

うまく生成するためのコツ

パラメータを調整するときのポイントをいくつか紹介します。生成する際に大きく影響するパラメータとして、Controle Weight, Starting Control Stepが大きく影響してきます。Controle Weightのイメージとしては入力画像に対する重み付けで、値が大きいほど入力画像であるQRコードの影響が強くなります。Starting Control StepはどのタイミングでControlNetを反映させるか、つまりQRコードを紛れ込ませるかの設定となります。この値が低い(入力画像をすぐ反映させる)とQRコードに近い画像が生成され、値が大きい(入力画像を遅めに反映させる)とプロンプトの影響が大きい絵が生成されます。実際に生成するとこのようになります。

Starting Control Step:0.1
00007-1847487018 (1).png

Starting Control Step:1
00006-1847487018 (1).png

この2つのパラメータを調整してもうまく行かない場合はimg2imgの「Denoising strength」と「Samplig steps」を調整してみてください。生成したい絵とは少し異なる画像にはなってしまう可能性が高いですが、とりあえずQRコードを生成したい方は参考にしてみてください。

英語にはなってしまいますが、こちらのサイトではQRコードの生成例が載っているので参考にしてみるのもよいと思います。このサイトでは 絵の生成モデルとしてGhostMixを使用しています。

他にもいくつか・・・

いくつか生成に成功したQRコードを納めときます。(読み込むと弊社のホームページに飛びます)
00008-3723099727 (1).png
参考

Control Weight:1.65, Starting Control Step:0.37


00009-582962177 (1).png
参考

Sampling steps:40
Control Weight:0.88, Starting Control Step:0.335


00001-1293666383 (1).png

参考

Control Weight:1.3, Starting Control Step:0.34

まとめ

今回は流行りの絵を埋め込んだQRコードの作成方法を紹介しました。ぜひみなさんも自分の手で動かして試してみてください!

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

91
77
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
91
77