mieki256's diary



2023/04/01() [n年前の日記]

#1 [nitijyou] 某所に行ってきた

電動自転車で某所まで。09:00-13:00頃まで居たけど、作業自体は11:00頃には終わってた気がする。詳細はGRPでメモ。

古いPC内のファイルを新しいPCから参照できるように作業。

#2 [nitijyou] 自転車用ヘルメットが見つからない

某所からの帰りに、ダイユーエイト須賀川西店と、ダイユーエイト須賀川東店に寄って、大人向けの自転車用ヘルメットを探してみたけど、どちらも店頭では売り切れ状態だった。キッズ用なら残ってるのだけど…。この調子だとしばらくは入手できないだろうな…。在庫が復活するのは何時になることやら…。

2023/04/02() [n年前の日記]

#1 [nitijyou] 調子が悪い

昨日ちょっと無理をしたせいか、とにかく眠い…。生活サイクルが崩れた状態で、少し遠くのホームセンターまで自転車を走らせたのが良くなかったのかも。すぐに帰宅して一眠りすれば違ってたかな…。

2023/04/03(月) [n年前の日記]

#1 [windows] Windows10で音声認識をしてみたかったけどダメだった

ここ最近、Andoridスマートフォン上でWeb検索する際、音声入力を使って検索キーワードを入力することが多くて、音声入力って便利だなと。同じことをWindows PC上でもできないものかなと思えてきたので実験。環境は Windows10 x64 22H2。

一応、PCで使えるヘッドセットは持っているのだけど、いちいち頭につけるのが面倒臭い。あらかじめPCの前に、マイクスタンドを設置しておけば快適になりそうだなと、PC用コンデンサマイク SONY ECM-PC50 を発掘して使ってみた。

Web検索について :

まず、Google検索に関しては、Google Chrome + Google検索で音声入力が可能らしい。入力欄の右端にマイクのアイコンがあるから、それをクリックすれば音声入力モードになってくれるし、ほぼ誤認識もされずに音声認識をしてくれた。

ちなみに、Firefox + Google検索では、マイクのアイコンが表示されなくて使えなかった。

Microsoft Edge + Bing検索も、音声入力が可能らしい。これもそこそこイイ感じに音声認識してくれた。

Windows10の音声認識は酷かった :

調子に乗って、Windows10 x64 22H2 の音声認識機能を利用してみようと思ったのだけど、これがまあ、なかなかの酷さで…。

コントロールパネル → コンピュータの簡単操作 → 音声認識、を選べば、音声認識関係のアレコレを呼び出せるようになる。「マイクのセットアップ」を選んでマイクの動作状態を確認してから、「コンピューターをトレーニングして認識制度を上げる」を選んで、表示される文章を読み上げてみたのだけど、全然認識されない…。

使ってるマイクが、「デスクトップマイク(机の上に置くタイプのマイク)」だからいかんのかなと、ヘッドセットを引っ張り出してきたけれど状況は改善せず。「音声認識の開始」を選んで、アレコレ喋ってみたけれど、まず認識されないし、何かが認識されても頓珍漢な反応をする。誤認識しまくりなんだろうな…。

ググってみたら、Windows10の音声認識はまともに使えないレベル、というのが一般的な評らしい。たしかに、これではなあ…。

ちなみに、Windows10 ではなく、Windows11 は、昨今のAI云々の成果を反映させているのか、結構改善されているとの話も見かけた。そういう部分では良くなっているのか…。

2023/04/04(火) [n年前の日記]

#1 [linux] rangerの画像プレビュー表示について動作確認

Ubuntu Linux や Debian Linux 上で、ranger という、CUIで操作できるファイラーを使っている。

_CLI で Linux ファイルマネージャ ranger を使うことのメモ | Jenemal Notes
_ターミナル型ファイルマネージャーranger [インフラエンジニアのPC環境]
_ranger - ArchWiki
_ターミナルで使えるファイラrangerを使ってみる - Qiita

この ranger は、以下の作業をすれば画像プレビュー表示ができる。 しかし、どうやら端末? ターミナルエミュレータ? によって、画像プレビューが使えたり使えなかったりするようで、そのあたりを調べてた。

動作確認環境は、Ubuntu Linux 20.04 LTS + xubuntu-desktop。
ranger + w3m-img
termnal emuratorresultversion
xfce4-terminalwork0.8.9.1-1
rxvt-unicode (urxvt)work9.22-6build3
xtermwork353-1ubuntu1.20.04.2
sakurawork3.7.0-1
roxtermwork3.12.1-1ppa1focal1
gnome-terminalnot work3.36.2-1ubuntu1~20.04
lxterminalnot work0.3.2-1
lilytermnot work0.9.9.4+git20150208.f600c0-5
terminatornot work1.91-4ubuntu1
tildanot work1.5.2-0ubuntu1

動かない環境が、意外に多かった…。

動かない理由は、以下のやりとりで書かれていた。環境変数 WINDOWID が絡んでいて、w3m-img に対応させるのは難しいらしい。

_Images in w3m on lilyterm. / Newbie Corner / Arch Linux Forums
_FrameBuffer images in w3m - Issue #61 - Tetralet/LilyTerm - GitHub
_Guake does not display images when w3m-img is installed - Issue #1806 - Guake/guake - GitHub

ROXTermについて :

ROXTerm は、Debian Linux や Ubuntu Linux 上で公式パッケージが用意されてない。
  • Ubuntu 16.04 LTS の頃はあったけど、18.04 LTS 以降ではパッケージが無くなった。
  • Debian Linux も、wheezy (Debian 7)、jessie (Debian 8) の頃はあったけど、stretch (Debian 9) の頃に無くなってしまった。

_ROXTerm
_Has roxterm been removed from Debian 9 (stretch)? - Unix & Linux Stack Exchange
_Roxterm PPA : Tony Houghton

Ubuntu の場合、PPA とやらを利用すればパッケージの入手ができなくもないらしい。Ubuntu Linux 20.04 LTS では動作してくれた。
sudo add-apt-repository ppa:h-realh/roxterm
sudo apt update
sudo apt install roxterm
roxterm

Debian上でインストールする方法は不明。ググっても情報が出てこなかった。

余談。設定ダイアログの縦幅長過ぎ問題 :

自分の手元には液晶画面の解像度が 1024x600 のネットブック機があるのだけど、この画面解像度で、ターミナルエミュレータの設定画面を開くと、どれもダイアログの縦幅があり過ぎて、設定画面の下のほうが操作できなくて困ってしまう。どうしてどれもこれもそんなに縦幅を長くしてしまうのか…。横方向に伸びてくれる分には問題無いのに…。

#2 [linux][debian] xrandrで仮想的な画面解像度を変更

手持ちのネットブック機、Lenovo IdeaPad S10-2 で、Debian Linux 11 bullseye i686 + LXDE を動かしているけれど、液晶画面の解像度が 1024x600 なので、アプリによっては画面内に設定ダイアログ等が収まらなくて、ちょっと困ってしまう時がある。

何か手は無いものかとググっていたら、xrandr を使って画面の拡大縮小率を設定できると知った。これを使えば解決するのでは…?

_xrandr オプション --scale - Monkey's hobby
_xrandr | 穏やかな日々

xrandr と打って、現在の画面設定を確認。
$ xrandr
Screen 0: minimum 8 x 8, current 1024 x 600, maximum 32767 x 32767
LVDS1 connected primary 1024x600+0+0 (normal left inverted right x axis y axis) 220mm x 130mm
   1024x600      59.97*+
   1024x576      59.90    59.82  
   960x540       59.63    59.82  
   800x600       60.32    56.25  
   864x486       59.92    59.57  
   640x480       59.94  
   720x405       59.51    58.99  
   640x360       59.84    59.32  
   512x300       60.00  
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
この環境では、xrandr の output に LVDS1 とやらを指定すればいいのだろう。

以下のように打ったところ、仮想(?)の画面解像度を、実際のディスプレイに拡大縮小して表示してくれた。素晴らしい。
xrandr --output LVDS1 --scale 1.28x1.28
仮想の画面解像度は、1311x768になっている。文字も一応なんとか読めそうな印象。

元に戻す時は以下。
xrandr --output LVDS1 --scale 1x1

頻繁に使うかもしれないので、alias に登録しておいた。scaling もしくは resetscale で、このあたりを変更できるようになる。
vi ~/.bash_aliases
alias scaling='xrandr --output LVDS1 --scale 1.28x1.28'
alias resetscale='xrandr --output LVDS1 --scale 1x1'

1024x600の縦横比がよくわからない :

1024x600の縦横比って、16:9、16:10、どちらに近いのだろう…?

1024x600 だと、128:75 のようだな…。
  • 1920/1080 = 1.77778
  • 1024/600 = 1.70667
  • 1920/1200 = 1.6
16:9 と 16:10 の間ではあるんだろうけど…。

128:75 = 16:9.375、だとすると、16:10 より 16:9 に少しだけ近いのだろうか。

Alt+左ドラッグも使えそう :

1024x600の画面解像度だと、LXTerminal の設定画面/設定ダイアログすら画面からはみ出してしまう。

設定ダイアログの下のほうで、Alt+左ドラッグをして、ダイアログ全体を上のほうに移動してみたところ、下のほうを表示することができた。もちろん上のほうは隠れてしまうけど、とりあえずコレでどうにかするのもアリだなと…。

#3 [linux][debian] sakuraターミナルをインストールしてみた

ググってたら、sakura というターミナルエミュレータが軽くていいらしいと知り、試用してみることにした。

Lenovo IdeaPad S10-2 + Debian Linux 11 bullseye i686 上でインストール。
sudo apt install sakura

画面を右クリックすると設定メニューその他が開く。これなら設定ダイアログが画面をはみ出してしまって操作できないということはなさそう。

軽い代わりに低機能とのことらしいけど、タブ機能はついているし、これで十分な場面も多そうだなと…。

2023/04/05(水) [n年前の日記]

#1 [linux][ubuntu] kittyターミナルエミュレータを試用

仮想端末/ターミナルエミュレータについてググっていたら、kitty というターミナルエミュレータが気になってきた。

_Alacrittyからkittyに移行している - ぶていのログでぶログ
_高速で機能的なGPUベースのターミナルエミュレーターkittyを使ってみる
_GPUベースのターミナルソフトKittyの使い方

GPUを積極的に使って描画が高速になってるソフトらしい。試用してみたい。

環境は Ubuntu Linux 20.04LTS。apt でインストールできる。
sudo apt install kitty
kitty 0.15.0-1ubuntu0.2 がインストールされた。

起動した直後、文字表示がおかしな見た目になってしまって困った。このソフト、利用できるフォント種類が、かなり限られるらしい…。普段使ってるIPAゴシックやHackGenは、横方向に間延びしてしまってダメだった。Ubuntu Mono なら表示がまともになった。

Ctrl + Shift + F2 を叩くと別ウインドウで設定ファイルの雛形が表示されるので、そこから設定をカスタマイズしていくといいらしい。~/.config/kitty/kitty.conf が設定ファイル。とりあえず、弄ったところだけメモ。
font_family      ubuntu mono
bold_font        auto
italic_font      auto
bold_italic_font auto

font_size 16.0

scrollback_lines 65536

copy_on_select yes

remember_window_size  yes

background_opacity 0.8

dynamic_background_opacity yes

一般的なターミナルエミュレータは、Shift + (PageUp|PageDown) 等でスクロールできた気がするけど、この kitty でそういうキーを叩くと謎の文字が表示されてしまう。Ctrl + Shift + (Up|Down|PageUp|PageDown) ならスクロールするのかな…。たぶん。

ranger + w3m-img で画像プレビューはできたけど、画像が背景の透過率を引き継いでしまうっぽい。

#2 [anime] 「ドキュメント「シン・仮面ライダー」ヒーローアクション挑戦の舞台裏」を視聴

NHK BSプレミアムで放送されてたソレを録画していたので視聴。「シン・仮面ライダー」の撮影現場はこんな感じでしたと紹介してくれる番組、という説明でいいのだろうか。

面白かった。いや、コレを面白かったと言ってしまっていいのかどうかちょっと悩むけど…。さすが庵野監督だぜ、現場の空気がみるみる澱んでいくぜ、期待を裏切らない監督さんだなあ、みたいな。

殺陣が殺し合いに見えないというあたりは、なるほどたしかにと思ってしまったりもして。ネットで誰かが言ってたけど、最近のソレは殺陣と言うよりダンスに見える、みたいなところはあるよな…。つまりは、アクションから殺気が感じられないということなのだろうか。素人考えで思ったけれど、アクション撮影中に「ライダー、死ねやあ!」「殺す殺す殺す、ぶっ殺ォス!」「うっせえ! グチャグチャにしてやる!」「来いよオラァ! かかってこいやあ!」と各人好きなように怒鳴らせながらアクションさせてみたらちょっとは変わったりしないかなと…。アクションシーンの音声は後からアフレコで入れ直すのだろうから何を叫んでも問題無いだろうし。でもたぶん、それでもモニタ経由で映像見たら「違うんだよなあ…」となりそうな予感。生で目にするソレと、モニタ画面に映し出されたソレは、伝わってくるものがなんか違うし…。というか庵野監督のことだから、「ショッカー戦闘員は『イーッ』しか言いません。『死ね』だの『殺す』だの言い出すのは本物じゃないです」とか言われちゃうかな…。

それはともかく。スタッフからアイデアを出させて、それを片っ端から否定して没にしていくやり方だと、スタッフのモチベは上がらないだろうなと…。とは言え監督さんの中では「違う。コレジャナイ」となっちゃってるから通すわけにもいかないし。スタッフのモチベを維持しつつ、監督にとっての正解に近づけていく上手い方法はないものだろうか。あるわけないか。

togetterで番組の感想を眺めてみたら、この番組で紹介してたほとんどのカットが本編では没だったそうで…。あんなに苦労して撮影したのにカットされちゃうとか、ツラい…。

主役の方が「ベストはどれなんだ…」と呟いてたけど、つくづく、娯楽作品の制作って大変だなと…。

2023/04/06(木) [n年前の日記]

#1 [pc] ミニPCについて調べてた

たまたまWeb上で、手のひらサイズのミニPCの広告を目にしてしまって、「このくらいのサイズのPCに、Linuxを入れて動かせたら…」などと妄想してしまって、ついつい関連情報をググり始めてしまった。

Celeron J4125 や Celeron N5105 等が載ってるミニPCが良さそうではあるなと…。Atom系のCPUらしいけど、大昔のノートPCに載ってた 省電力タイプの Core i3 や i5 と同等の処理能力はあるらしいし。今のミニPCはSSDを積んでるから、そこそこ快適に使えそうでもある。何より、消費電力が圧倒的に少ないし、お値段も安い。小さいから、場合によっては持ち歩くこともできそう。いやまあ、持ち歩いてどうするんだという気もしてくるけど。何にせよ、中古PCを購入して動かすより、今時のミニPCを購入して使ったほうがメリットはありそうだなと。

Linuxが動かせるかどうかをググってみたけど、Ubuntu Linux あたりは動作するっぽい。ただ、FreeBSD は、それらミニPCが使用してるデバイスが新し過ぎて動かなかった、という話も見かけた。無線LANが使えないならまだしも、有線LANすら使えなかったという話もあって、それはさすがにちょっと厳しい。いやまあ、Windows11 がしっかり動くんだからソレ使ってればええやん、という気もするけど。

そんなわけでちょっと物欲が湧いてしまったけれど、部屋の中で視線を横にチラリとずらしてみれば、普段滅多に電源を入れないPCが5〜6台並んでる光景が目に入るわけで…。コイツラを有効活用できてないのに、これ以上PC買ってどうするの、落ち着け自分…。

2023/04/07(金) [n年前の日記]

#1 [linux] rangerで画像プレビューができない

Raspberry Pi Zero W + Raspberry Pi OS buster 上で ranger を使おうとしたのだけど、画像プレビューができないことに気づいた。w3m, w3m-img はインストールしてあるはずなのだけど…。

ranger で .png ファイルにカーソルを合わせると、以下のメッセージが表示されてしまう。
('Failed to execute w3mimgdisplay',[])

Raspberry Pi OS buster の場合、w3mimgdisplay は /usr/lib/w3m/ の中にあるので、~/.bashrc で以下の指定も追加したのだけど、効果は無い模様…。
export PATH=$PATH:/usr/lib/w3m
export W3MIMGDISPLAY_PATH=/usr/lib/w3m/w3mimgdisplay

which w3mimgdisplay と打つと、以下が表示される。パスは通っているようだが…。
$ which w3mimgdisplay
/usr/lib/w3m/w3mimgdisplay

w3mimgdisplay 単体で動作するのか確認したいと思ったものの、w3mimgdisplay hoge.png といった感じで打っても何の反応も返ってこない。どうやらフツーのツールのような指定をして動かすプログラムでは無さそうだなと…。

解決策は今のところ不明。とりあえず、Raspberry Pi + ranger で画像プレビューは諦めよう…。他の環境なら問題無く動いてるし…。

#2 [tv][comic] 「浦沢直樹の漫勉neo (18)島本和彦」を視聴

NHKで放送されている「漫勉」の島本和彦先生の回を録画していたので視聴。「漫勉」は、漫画家さんの仕事場にカメラを設置して、作業の様子を紹介していく番組。

面白かった…。何より、島本和彦先生が面白い…。仕事場に到着早々、「NHK! どうだ!? 準備はできているか!?」とカメラを指差しながら叫ぶ漫画家さんはシリーズ初なのではなかろうか。

擬音等は日本字ペン、キャラはGペンの使い分けが興味深かった。浦沢先生も日本字ペンを使ってると発言していたけど、結構日本字ペンを使う漫画家さんは多いのだな…。いやまあ、今の若い漫画家さんはデジタルで描くからアレだろうけど。もっとも、デジタルの場合も、パラメータを調整して描き味を自分好みに調整していくわけで、カスタマイズ可能な部分の多さと言う点ではデジタルのほうが際限が無いのかもしれない。

#3 [anime] 「劇場版『SHIROBAKO』」を視聴

期間限定で、「劇場版『SHIROBAKO』」がYouTube上で無料配信されてると知ったので視聴。アニメ制作スタジオを舞台にしたTVアニメ「SHIROBAKO」の劇場版、ということらしい。

ネット上ではあまり評判が良くなかったらしいので少し不安だったけど、見てみたらフツーに面白かった。もっとも、TVアニメ版を未視聴の人がいきなりこれだけ見ても、登場人物がどんなキャラなのかさっぱり分らないだろうし、そう考えると完全にファン向けの作りだった気もする。とは言え、ファン向けだとしたらコレはどうなのと思ってしまう部分もたしかにあって…。

話を盛り上げるために、 悪意を持った人間を登場させたあたりは、もうちょっとどうにかできなかったかなあ、という気もする。皆がちゃんと頑張ってるけどそれでもトラブルが起きる時はやっぱり起きちゃうもんで、みたいな展開なら印象が違ったのだろうけど…。もっとも、だったら何かアイデア出してみてよと言われたら頭を抱えてしまいそう。キャラを動かして問題を起こすのが一番確実ではあるんだろうな…。

TVアニメ版後半でも「変な話」のキャラが登場したあたりで不評になった印象があるのだけど、 戦犯が制裁を全く受けないあたりもスッキリしないよなと…。いやまあ、それが現実だろう、リアルだろうと言われたら、それはまあそうかもしれませんが、と返すしかないけれど。つまるところ、制作した P.A.WORKS のプロデューサーがどこかで発言していたように、リアルとファンタジーの比率をどの程度にするか、みたいな話に繋がっていくのだろうか。

そういった、ちょっと気になる部分はありつつも、全然フツーに楽しめるアニメシリーズになってるのだから、たいしたもんだなと。例えばコレがもし、押井守監督あたりがアニメ業界を舞台にした何かを作ったとしたら、殺人事件が起きたり、監督が逃亡したりと、「そんなの客に見せてどうすんの…」とゲンナリするモノが平気で出てくるわけで。アニメ業界人がアニメ業界を舞台にすると必ずダークなものが出てくる…。そういったアレコレと比べたら、このシリーズはバランス感覚があるほうだよなと…。

2023/04/08() [n年前の日記]

#1 [cg_tools] 画像生成AIを動かせないか試しているところ

メインPC(Windows10 x64 22H2)上で画像生成AI、Stable Diffusion web UI を動かせないか試しているところ。

とりあえず動かせる状態になった。後で手順をメモするつもり。

2023/04/09() [n年前の日記]

#1 [cg_tools] 画像生成AI Stable Diffusion web UIを試用

画像生成AI、Stable Diffusion web UI を試してみたい。できれば、ローカル環境、手元のWindows10 x64 22H2上で動かしたい。

環境は以下。 (※ 2023/04/19追記。関連ファイルの総容量は120GBになった。HDDにそのぐらいの空き容量が必要、ということになるのだろうか。)

巷の解説記事を眺めると、「ビデオカードのVRAMは 12GB以上を推奨」と書かれてるけど、自分の環境、VRAM 6GB で、はたして動くのかどうか…? 結果を先に書いておくけど、現行版の Stable Diffusion web UI なら VRAM 6GB でも動いてくれました。

一応ざっくりとインストール手順をメモ。ちなみに、「Stable Diffusion web UI インストール」でググれば解説記事がたくさん出てくる。ありがたや。

Python と git が必要 :

Stable Diffusion web UI のインストールには、最低限、Python と git が必要らしい。Python 3.10.6 と git は既にインストール済み。

_Download Python | Python.org

Python 3.10.6 は、python-3.10.6-amd64.exe を入手して実行すればインストールできる。

今現在の Python の最新版は 3.11.x だけど、Python 3.10.6 で各種プログラムの動作確認が行われているらしいので、一応ソレに合わせておいた。

_Git for Windows

Git for Windows は、Git-2.40.0-64-bit.exe を入手して実行してインストール。

CUDAをインストール :

NVIDIA CUDA toolkit 11.8 も一応インストールしてみる。今現在の Stable Diffusion web UI なら、最初にbatファイルを実行した際に自動でインストールしてくれるという話も見かけたけれど、CUDA関連のファイルサイズが大きいので、自分で状況を把握しつつインストールしてみることにした。

以下のページを参考にしつつ作業を進めた。ありがたや。

_WindowsへのNVIDIA CUDAのGPU環境構築 | 鷹の目週末プログラマー

_CUDA Toolkit 11.8 Downloads | NVIDIA Developer
_CUDA Toolkit Archive | NVIDIA Developer

cuda_11.8.0_522.06_windows.exe (3.0GB) をDLして実行。サイズが大きいので、DドライブのHDDにインストールした。インストール場所は以下。
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\

環境変数 PATH に以下を追加。
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp

CuDNNもインストール。入手には NVIDIAアカウントが必要らしい。このあたり、Stable Diffusion web UI のbatファイルで自動インストールする時はどうなるのだろう…?

_CUDA Deep Neural Network (cuDNN) | NVIDIA Developer

cudnn-windows-x86_64-8.8.1.3_cuda11-archive.zip (667MB) を入手して解凍。中には、bin, include, lib の3つのフォルダが入ってる。CUDA のインストールフォルダにコピーする。

環境変数を追加。
CUDA_PATH = D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
CUDA_PATH_V11_8 = D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
CUDNN_PATH = D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8

DOS窓(コマンドプロンプト, cmd.exe)を開いて、nvcc とやらが動きそうかどうかを確認。
> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

Stable Diffusion web UI をgitでクローン :

Stable Diffusion web UI を導入。以下の記事を参考にさせてもらってインストールした。

_Stable Diffusion webui(AUTOMATIC1111版)の導入解説|感想日記

_GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI

今回は、D:\aiwork\ というディレクトリを作成して、その中に入れることにした。エクスプローラ上で D:\aiwork\ を右クリック → Git Bash。Bash のウインドウが開くので以下を打ち込む。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

github から、Stable Diffusion web UI がクローンされて、D:\aiwork\stable-diffusion-webui\ に一式が入った。

モデルを入手 :

学習モデルデータを入手。コレが無いと画像を生成できない。

色んな種類の学習モデルデータがあちこちで配布されているけれど…。Stable Diffusion web UI の、インストールフォルダ\models\Stable-diffusion\ 以下に、.safetensors もしくは .ckpt ファイルを置けばいいらしい。

.safetensors のほうが、新しくて、高速に処理できて、危険性が少ないフォーマット、らしい。.ckpt は、中にスクリプトが入っていて実行できたりするそうで、身元不明のデータは何をするのか分からなくて危険だから注意するべし、と説明されてた。

ちなみに、1ファイルに付き、2〜7GBのファイルサイズ。あっという間にHDDの空き容量が減っていく…。

今回は、v2-1_768-ema-pruned.ckpt と、chilloutmix_.safetensors を入手させてもらった。後者は、Civitai というサービスにアカウントを作らないと入手できない。

_stabilityai/stable-diffusion-2-1 at main
_ChilloutMix | Stable Diffusion Checkpoint | Civitai


巷の解説記事によると、ほとんどの場合、Hugging Face、もしくは Civitai でモデルデータの入手はできるとのこと。

_Hugging Face - The AI community building the future.
_Civitai | Stable Diffusion models, embeddings, hypernetworks and more


どんなモデルが存在しているのか、そのあたりは以下のまとめ記事が参考になった。ありがたや。

_リアル系モデル比較・雑感 - NovelAI 5ch Wiki
_モデルについて - としあきdiffusion Wiki*

Stable Diffusion をインストール :

中に入ってる、webui-user.bat を編集して、ビデオカードのVRAMが少ない環境でも少しは高速に処理ができるようになるという、xformers なるものをインストールするように指定。
set COMMANDLINE_ARGS= --xformers

xformers を導入すると処理時間が短くなるけれど、その代わり、処理の再現性が犠牲になるらしい。同じ呪文(プロンプト、と呼ばれているらしい)を打ち込んでも少し違う画像が生成されるようになるのだとか。

webui-user.bat をダブルクリックして実行。DOS窓が開いて、自動でインストール処理が進む。Python でAI関係の何かを処理できる、PyTorch (torch) というライブラリその他がインストールされる。

ちなみに、PyTorch は2GB以上のファイルだったので、処理が終わるまでそこそこ待たされる。

使ってみる :

インストール処理が終わると、DOS窓上に、以下の文字列が表示される。
http://127.0.0.1:7860/
ローカル環境でWebサーバが立ち上がって、上記のURLにアクセスすれば使えるよ、と伝えてくれている。

Google Chrome で上記URLを開く。ちなみに、Firefox で試そうとしたら、なんだかちょっと反応が妙な感じで…。おそらくこういうアレコレは、Google Chrome を使うことを前提にして作られているのだろうなと。

txt2img という、呪文を打ち込むと画像が生成されるツールで動作確認してみた。とりあえず、「Prompt」と表示されてる入力欄に、「1girl, cute」と打ち込めば、女の子の絵が生成されるらしい。

手元の環境は、Geforce GTX 1060 6GB ―― VRAMが6GBしかないからエラーが出るのかなと思ったけど、ちゃんと画像を生成してくれた。512 x 512 の画像一枚を、30秒以上かけて生成してくれている。

ちなみに、GeForce RTX 3060 12GB あたりを使えば、1枚6秒ぐらいで生成してくれるらしい…。まあ、お値段が5万円前後らしいけど…。

左上のリストボックス?で、モデルデータを切り替えることができる。自分の環境では、切り替える際に数分ぐらい待たされる。

拡張機能をインストール :

拡張機能(Extensions)をいくつかインストールしてみた。UIを日本語化したり、キーワードの補完ができるようになるらしい。

_GitHub - journey-ad/sd-webui-bilingual-localization
_GitHub - Katsuyuki-Karasawa/stable-diffusion-webui-localization-ja_JP
_GitHub - DominikDoom/a1111-sd-webui-tagcomplete

Extensions → Install from URL、を選択して、URL for extension's git repository の欄に github の URL をコピペして、Installボタンをクリック。Installed タブを選択して、インストールした拡張にチェックを入れて有効化。

2023/04/10(月) [n年前の日記]

#1 [cg_tools] 画像生成AI Stable Diffusion web UIを試用中

画像生成AI、Stable Diffusion web UI をローカル環境にインストールできたので、英単語や英文を打ち込むと画像を生成してくれる txt2img に色々な単語を打ち込んで試していたのだけど。狙った感じの画像を生成するのが難しいなと思えてきたので、画像から別画像を生成できるらしい img2img について調べ始めているところ。コレを使えば生成画像の修正ができるらしいのだけど…。

とりあえず、今現在の雑感をメモ。

8bit PC時代のアドベンチャーゲームっぽい :

txt2img を試用しているうちに、8bit PC時代のアドベンチャーゲームを思い出してしまった。

当時のアドベンチャーゲームは、動詞や名詞をキーボードから打ち込んで遊ぶスタイルだったのだけど…。大体以下のような感じのプレイスタイルで…。
> ドウスル?
look

> ナニヲ?
door

> カギガカカッテイル。
> ドウスル?

そのゲームの中に、どんな単語が登録されているか分からないから、とりあえず思いついた単語を手当たり次第に打ち込んでみて、当たりが出たら先に進める、てな感じで…。「デゼニランド」というゲームで、attach という単語が思いつかなくて、そこから先に進まなかったりしたっけ。

画像生成AIのプロンプトも、学習モデルデータにどんな単語が登録されているのか、どの単語がどんな効果を発揮するのか、そのあたりが今一つ分からないものだから、思いついた英単語を打ち込んで様子を見て、また別の単語を打ち込んで、という感じになっちゃうなと。

21世紀に蘇ったattach族だよなと…。動かしているハードウェアのスペックも、AIが行っている処理も、当時とは比較にならないゴイスなレベルなのに、コンピュータの前に座ってる人間は、当時と変わらず、attach族…。

ちなみに、アドベンチャーゲームは、動詞や名詞を一々打ち込むスタイルから、後に、メニューから動詞や名詞を選んだり、画面上に描画された絵のどこかしらをクリックすると状況が変わる、というスタイルに変化していったのだけど。それを考えると、こういった画像生成AIも、メニューから単語を選んだり、生成画像に対してマウス操作をすると結果が変わる、といったスタイルに変化していくのだろうなと。いやまあ、ポーズを指定できる ControlNet や、画像から別画像を生成できる img2img がそのあたりに相当するのかもしれないけれど。

学習してないモノは出てこない :

当たり前だけど、学習していない画像に関しては生成結果に出てこないので、なんだか残念だなと感じる瞬間があるなと…。例えば、「ガンダム」や「ドラえもん」と打ち込んでみたら、「ガンガル」や「うまえもん」にすら近づけていない珍妙画像が出てきてしまって、なんというか…。

でもまあ、人間だって、「ガンダムを描け」「ドラえもんを描け」と言われたら、フツーの人は珍妙な謎キャラクターを描いちゃうわけだから、そう考えると、AIも人間と同じ、なのかもしれない。しっかり学習してないものは、AIも、人間も、出力できないよな。

2023/04/11(火) [n年前の日記]

#1 [cg_tools] img2imgについて勉強中

画像生成AI、Stable Diffusion web UI に含まれている、img2img というツールの使い方について勉強中。

Stable Diffusion web UI は、大別して、2種類の画像生成ツールを持っている、ように見える。
txt2img で欲しい画像が得られなかった際に、その生成画像を img2img に渡して、何かしらの修正を加えてから生成処理をすることで、目的の画像に近づけていくことができなくもない、らしい。

とりあえず、Webブラウザ上で表示されている Stable Diffusion web UI のページで、img2imgタブをクリックして、キャンバスに画像をドラッグアンドドロップ後、Denoising strength を設定してから Generate をクリックすれば、元画像から類推できる別の画像を生成してくれる、ところまでは分かった。Denoising strength が小さければ元画像に近く、大きければ元画像から離れる、らしい。たぶん。

また、Sketch と inpaint も、なんとなく分かってきた。
それはともかく、inpaint sketch の使い方が分からない…。inpaint + sketch の機能を持ってるということだろうか…?

そのあたりの使い方が分からないので、以下のような流れで作業してしまっている。
  1. 元画像を読み込み。
  2. Sketch に転送。
  3. 不要な部分を色で塗り潰し。
  4. inpaint に転送。
  5. 塗り潰した部分にマスクを作成。
  6. マスクの中だけ画像生成。
inpaint sketch の使い方が分かれば、こんなことをしなくても済むのだろうか。

余談。img2img の画像を表示するキャンバスが小さ過ぎて、細かい指定ができないあたりがツライ。もしかすると GIMP等で画像を開いて修正してから渡してしまったほうが楽なのでは…。いやまあ、細かく描き込んでみても全然違う画像が出てくるのだから、ざっくり指定ができれば充分やろという気もするけれど。

2023/04/12(水) [n年前の日記]

#1 [windows][pc] メインPCがBSOD

メインPC、Windows10 x64 22H2機が、久々にブルースクリーン(BSOD)になった。画面には、「停止コード : SYSTEM_THREAD_EXCEPTION_NOT_HANDLED」「失敗した内容 : Ntfs.sys」と表示されてる。

先日、DドライブのHDDを交換して以来、BSODはずっと発生してなかったので、さては以前使ってたHDDが壊れかけていて、それが原因でBSODになっていたのかなと予想していたのだけど、どうやらその予想は外れていたらしい。HDDは関係無さそうだな…。となると、SSDが怪しいとしか思えない…。

これはあくまで想像だけど、SSD上にGB単位の巨大なファイルが作られて、かつ、何かのサービスが、その巨大なファイルをサーチし始めると、SSDの反応というか転送速度が、ある条件下で極端に遅くなって、「SSDが返事をしてくれない。これはおかしいぞ」とBSODになるのではないか、という気がしている。Windows Defender とか、Microsoft Compatibility Telemetry とか、そのあたりが妙なアクセスをしているのではないかと疑っているのだけど…。BSOD になる直前にどんなサービスが開始されているのか、確認する方法が思いつかなくて…。

そもそも、サービスどうこう以前に、使っているSSD、crucial MX500 CT500MX500SSD1/JP がダメなのではないか…。初期不良品か、ファームウェアがバグってるんじゃないのか…。でも、かなり数が出てる製品だから、仮にファームウェアのバグなら、同種の事例が頻繁に目に入ってもおかしくないような気もするし…。となると初期不良品なんだろうか…。でも、普段はフツーに使えているし。何かの条件が揃った時だけ不具合を起こす気配がするわけで。

2023/04/13(木) [n年前の日記]

#1 [cg_tools] img2imgを試用中

画像生成AI、Stable Diffusion web UI の、img2img を使って、画像から別画像を生成する作業の流れを確認中。

img2img は、元画像を渡すと、そこから類推される別画像を生成してくれるツール。プロンプトと呼ばれる呪文も与えることで、生成する画像の傾向を変化させることもできる。

せっかくだから実験結果もメモしておこう…。いやまあ、先人達がもっと役に立つ情報を随分前から多々公開してくれてるので、今更こんな情報をアップしても意味は無さそうだけど。

実験その1 :

とりあえず、Poser Pro 11 を使って、512 x 512 の、女の子の画像をレンダリングして、それを元画像にして実験。元画像は以下。

00000-orig_image_output0002.png

実にキモいですね…。

学習モデルデータは、v2-1_768-ema-pruned.ckpt を使ってみた。

img2img に元画像をドラッグアンドドロップで渡して、プロンプトには「1girl」と入力。以下の画像が生成された。

00137-1972562182.png
parameters

1girl,
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 1972562182, Size: 512x512, Model hash: ad2a33c361, Model: v2-1_768-ema-pruned, Denoising strength: 0.75

00138-1972562183.png

00139-1972562184.png

00140-1972562185.png


たしかに画像が生成された。生成されたけど、これのどこらへんが「girl」やねん? AI君には「girl」ってこう見えてるの?

実験その2 :

Denoising strength の値がデフォルトの 0.75 で処理させると上記のような結果が出てくるけれど、数値を下げれば元画像に沿った生成処理になってくれるらしい。0.5 まで下げてみると、生成される画像が変わってきた。

00141-1147899033.png
parameters

1girl,
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 1147899033, Size: 512x512, Model hash: ad2a33c361, Model: v2-1_768-ema-pruned, Denoising strength: 0.5

00142-1147899034.png

00143-1147899035.png

00144-1147899036.png

00145-3887564871.png

00146-3887564872.png

00147-3887564873.png

00148-3887564874.png


今度は少しだけ「girl」らしい生成画像になってきた。もっとも、ジョジョのスタンドの出来損ないみたいな見た目だなと…。というかコレ、バトルで敗北していくときのスタンドじゃないかな。

実験その3 :

高画質化を狙えるらしいプロンプトを打ち込んでみる。
  • Postivie prompt : masterpiece, best quality, photo realistic, realistic,
  • Negative prompt : painting, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowers, normal quality, ((monochrome)), ((grayscale)),

ざっくり説明すると…。
  • Positive Prompt には、「こういう画像を出してくれ」的なキーワードを列挙する。
  • Negative Prompt には、「こういう画像は避けてくれ」的なキーワードを列挙する。
  • Postitive prompt に "masterpiece, best quality, " を指定すると、高画質化が狙える。らしい。たぶん。
  • "photo realistic, realistic, " を指定すると、写実的な見た目に寄せてくれる。らしい。たぶん。
  • Negative prompt に "painting, sketches, " を指定すると、おそらく手描き風を避けてくれるのかな。たぶん。
  • "(worst quality:2), (low quality:2), (normal quality:2), lowers, " を指定すると、最低画質、低画質、通常画質、低解像度を避けてくれるっぽい。たぶん。
  • "((monochrome)), ((grayscale)), " を指定すると、白黒画像、グレースケール画像を避けてくれるのだろう。たぶん。
  • (hoge:1.4) とか (hoge:2) とか (hoge:0.5) といった記述をすると、どの程度効果を利かせるのか数値で指定できる。らしい。大きくても 1.4 - 2.0 ぐらいにしたほうがいい、という話も見かけた。
  • hoge で1.0倍、(hoge) で1.1倍、((hoge)) で約1.2倍の効果にしてくれる、らしい。
  • 余談。Stable Diffusion web UI のプロンプト(入力欄)で、(hoge:1.0) と書かれたところにカーソルを合わせて、Ctrl + Up(↑)、Ctrl+ Down(↓) を叩くと、数値を0.1単位で変化させられる。

加えて、Denoising strength を 0.4 に弱めてみた。

また、CFG scale を、7 から 5 に減らしてみた。CFG scale は、数値が大きいとプロンプトの内容に従おうとするけれど、その分無理な感じの合成をするので画像の破綻が増え始めて、数値が小さいとプロンプトの内容から離れてAIが自分勝手に合成するけど、その分破綻しにくい画像が生成されやすくなる、らしい。

「らしい」「たぶん」ばかり書いてあるけど、どれも本当に効果が出てるのか、そういう解釈でいいのか、ちょっと自信が無い…。

00149-4219038187.png
parameters

girl, masterpiece, best quality, photo realistic, realistic,
Negative prompt: painting, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowers, normal quality, ((monochrome)), ((grayscale)),
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 4219038187, Size: 512x512, Model hash: ad2a33c361, Model: v2-1_768-ema-pruned, Denoising strength: 0.4

00150-4219038188.png

00151-4219038189.png

00152-4219038190.png


かなり改善されてきたけど…。夢の中に出てきたら、うなされそうです…。

実験その4 :

学習モデルデータ、v2-1_768-ema-pruned.ckpt には限界があるのかもしれない。学習モデルデータを、話題の、chilloutmix_.safetensors に変更してみる。

00153-1534430406.png
parameters

girl, masterpiece, best quality, photo realistic, realistic,
Negative prompt: painting, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowers, normal quality, ((monochrome)), ((grayscale)),
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 1534430406, Size: 512x512, Model hash: a757fe8b3d, Model: chilloutmix_, Denoising strength: 0.4

00154-1534430407.png

00155-1534430408.png

00156-1534430409.png

00157-2198513447.png

00158-2198513448.png

00159-2198513449.png

00160-2198513450.png


おお…。これならたしかに「girl」の画像だ…。Poser の、あのキモ画像から、こんな画像にしてくれるとは…。

そんなわけで、どんな学習モデルデータを使うかで、全く違う画像が生成されるのだなと。ここまで違ってくるとは。

ちなみに、「russian child」「asian child」といったキーワードも反応してくれる模様。

00161-209150273.png
parameters

russian child, girl, masterpiece, best quality, photo realistic, realistic,
Negative prompt: painting, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowers, normal quality, ((monochrome)), ((grayscale)), nsfw,
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 209150273, Size: 512x512, Model hash: a757fe8b3d, Model: chilloutmix_, Denoising strength: 0.6

00163-509918546.png
parameters

asian child, girl, masterpiece, best quality, photo realistic, realistic,
Negative prompt: painting, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowers, normal quality, ((monochrome)), ((grayscale)), nsfw,
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 509918546, Size: 512x512, Model hash: a757fe8b3d, Model: chilloutmix_, Denoising strength: 0.6

00164-2995637674.png


なるほど、たしかに、ロシアとアジアな感じに分かれた。

2023/04/14(金) [n年前の日記]

#1 [cg_tools] img2imgをまだ試用中

画像生成AI、Stable Diffusion web UI の img2img を試用中。

実際に触ってみてなんとなく分かってきたアレコレと言うか、雑感をメモ。

CG画像を元画像にするとよろしくないのかもしれない :

とある3DCGゲームのキャプチャ画像を元画像にして実験していたけれど、生成画像内の人間の顔の種類が全く変化しなくて、これは妙だなと。

ふと気付いた。CG画像内の人体モデルの顔パーツのバランスが現実の人間から離れてしまっていて、人間の顔として認識されていないのでは?

試しに元画像をレタッチして、頭の長さを少し短めにしてみたら、生成される顔つきにバリエーションが出てきた。なるほど、そういう罠もあるのか…。現実の人間を映した写真と、モデラーさんの好みの形状にデザインされたCG人間の画像では、画像生成AIの認識具合が違ってくることもあるのだなと。

もっとも、現実の人間だって色んな顔があるわけで、そうなると、AIに認識されやすい人、されにくい人の両方が実在してそうな気もしてくる。おそらく、パーツの配置が平均値に近い顔は認識されやすくて、そこから離れた顔は、AIが、「コレ、人間の顔じゃないでしょ? え? 人間なの? 嘘だろ。俺の学習データからするとそんなわけないんだけど」と失礼なジャッジを…。

画像を回転させると良い結果が得られる場合もありそう :

人がのけぞった感じの元画像を渡して処理させたら、生成画像内の顔がとんでもないことになった。これもまた、顔として認識されてない気がする…。

試しに、元画像を、左や右に90度回転させて渡してみたら、それっぽい顔を生成してくれた。その代わり、体のほうはぐちゃぐちゃになったけど。

考えてみたら、自分達が人間の写真を撮る際、大体は目が上にあって口が下にある状態の写真を撮るわけで。当然、学習モデルデータも、そういう写真で学習しているわな…。

であれば、img2imgに、元画像を90/180/270度回転させてから処理をして、生成画像は元の角度に戻す、といった機能があると随分違った結果を出してくれるようになるのかもしれない。実はそういう機能があったりしないのだろうか。

img2imgと雑コラ職人スキル :

ここからは雑感。思考メモ。

img2img を使ってると、生成画像に対して、もうちょっとどうにかならないかと思えてくる場面が結構あって。こっちの画像のこの部分と、そっちの画像のこの部分が一緒に入ってたら理想の画像になるのだけどなあ、どうにかならんかなあ、みたいな。

そこで、img2img だけで全てを解決しようとするのは面倒臭いから GIMP で合成してしまおうかと思いついてしまった。

しかし、GIMP を立ち上げて、画像を読み込んで、レイヤーを重ねて、ちょこちょこと修正しているうちに、修正/レタッチ作業で延々時間を費やしてしまって、アレアレ? 自分は一体何をやっているのだろう? という気分に…。

画像生成AIを触ると、最終的には、雑コラ職人スキルを磨きたくなってくるなと…。いやまあ、理想の画像が欲しいなら、不満を持った部分を、自分の手を動かして修正しちゃうのが早いので、おかしいことではないのだろうけど。

最終的な編集は既存の画像編集ソフトで行うとして、画像生成AIは素材画像を大量生成するのに向いているツールなのだと捉えてしまえば楽かもしれないなと。お前に多くは望まない。素材さえ作ってくれれば後はこっちでどうにかしてやんよ。みたいな。

法律がブレーキをかけてきそう :

画像生成AIを、素材画像生成ツールとして捉えた場合、権利関係をクリアにするのが大変そう…。今後、ライセンス面で完全に問題無いことが保証された学習データに価値が出てきそうな気もする。でも、どこかで何かがひっそり混ざってしまいそうでもあるな…。

昔は問題無かった学習データが、法律改変で問題のあるデータに変わってしまうこともあり得るだろうなと。例えば、かつては人の顔に権利なんて認められなかったけど、今は肖像権云々が言われてしまうわけで。未成年の裸体も同様か。昔は問題視されてなかったし。

法律でブレーキをかける国より、ブレーキをかけない国のほうが技術が発達して、前者は世界から取り残されていくんだろうなあ…。

例えば昔の日本では、法的に、コンピュータ同士を電話回線で接続することが電電公社以外許されてなくて、それでインターネット関連技術の発展が欧米より遅れたという話も…。モデムを使って接続するだけで研究者が犯罪者扱いになる国では、そりゃ後れを取りますわ。まあ、さすがに今は法改正されたけど。そもそも電電公社無くなったし。

ただ、そんな感じで、ブレーキをかけてる法律がまだまだありそうだなと。そういえば著作権関係もそうか。保護期間が長引いたことで研究用データの入手と活用が更に難しくなった面もあるのだろうな…。

画像生成AIは写真に似ている :

以前、ネット上のどこかで、「画像生成AIは写真の発明に似ている」といった感想を述べてる記事を見かけて、「それは全然違うだろ」的感想が山ほどついてた、そんな場面を目にした記憶があるのだけど。

実際に触ってみると、たしかに写真と似ている部分があるなと自分も感じてしまった。

昔、何かのTV番組で目にしたけれど。例えば雑誌の表紙になるような、女優さんや女性アイドルの写真を撮影する時は…。一眼レフデジカメを連射モードにして、女優さんが髪をかき上げるほんの一瞬をマシンガンのように撮影して、すぐさま写真群をPCにワイヤレスで転送して、PCのディスプレイに映った何十枚〜何百枚の写真の中から、たった一枚を選ぶ、ということをしていたわけで。

画像生成AIも、触っているうちに、大体似た感じになってくるなと。とりあえずお試しで、何十枚〜何百枚も画像を生成させてみて、その中から良さそうな数枚を選ぶのが当たり前。そんな感覚に変わってくる。

これがもし、自分の手を動かして絵を描くソレだったら、「とりあえず」で何十枚も描いてみて、その中から一枚を選ぶ、なんてことは、ほぼ無理。一枚描くのに数時間〜数日かかるから…。 *1 いやまあ、ラフ絵でいいなら何枚でも描けるけど。あるいは絵描きさんを何人も呼んでくれば並列で生産(?)できるけど。

一枚の画を生成するのにかかる時間が短くなると、扱いというか、接する時の感覚が、写真に近づいていくなと…。

もっとも、写真にも、フィルムカメラ/銀塩カメラとデジカメの違いがあるわけだけど。フィルムは現像しないと何が撮れているのか分らないし、フィルム代もかかるので、撮った画が理想と離れていても諦めるしかないけれど。ビデオカメラやデジカメの登場で、撮ったその場で何が映ってるのか確認できるようになって、画の取捨選択がしやすくなったところはあるなと。

それはともかく。同じカメラを使っても、素人の撮った写真と、プロカメラマンの撮った写真で全然違うわけだけど、そのあたりも現状の画像生成AIは似ている気がする。プロンプトエンジニアリングに精通している人ならイイ感じの画像を召喚というか錬成できるけど、何も知らない人が使うと酷い画像しか出てこない。道具が同じでも、使う人の知識量によって得られる結果が違ってくる。

でもまあ、それは、手描きの絵も同じか…。Photoshopを使ったら誰でも奇麗なイラストが描けるわけでもないし…。

ただ、写真の場合、素人も偶然イイ感じの写真が撮れてしまう時があって、画像生成AIもそのあたりは似ているのかも。たまたま、疑似乱数という、サイコロの出した目によって、イイ感じの画像が出てくる時もあるわけで。これが手描きの絵だと、そうはならない。素人も偶然ゴイスな絵が描けちゃいました、なんてことはほぼ100%ありえない。そう考えると、やはり画像生成AIは、写真と似ているところがありそうだなと。

お金をかけずにガチャを楽しめる :

画像生成AIを触っていて思うのは、これはガチャだなあ、と。

ハードウェアスペックさえ満たしていれば、レアカードならぬレア画像が出てくるまで、いつまでも延々とガチャを回し続けることができてしまう。しかも、課金無し。

なるほど、これは皆さんハマるわけだなと。ゲームで課金してガチャを回すより、こっちを回したほうが楽しい。お金もかからんし…。いやまあ、ハードウェア購入の初期投資と、電気代はかかっているけど。でも、ソレはゲームも同じか。

まあ、ゲットしたレア画像を公開できないのはアレだけど。学習データの権利関係で色々ありそうだし。もっとも、ゲットしたソレを公開できない点は、ゲームの類も同じだろうか。

*1: もっとも、描いてる最中、Ctrl+Zは何度も押すし、レイヤーの透明度だの色調整だのの各種数値はチビチビ調整しまくるので、手描きで画像を作成する過程には、理想の画に近づけるための調整作業がまるっと含まれているわけで。故に、かかる時間だけを見て単純に比較するのは乱暴な気もする。

2023/04/15() [n年前の日記]

#1 [cg_tools][gimp] GIMPから Stable Diffusion web UIを呼び出してみる

ふとなんとなく、GIMP から Stable Diffusion web UI を呼び出して利用できないものかなと思いついた。

環境は以下。
ググった感じでは、2つのプラグインに遭遇した。

_GitHub - thndrbrrr/gimp-stable-boy: GIMP plugin for AUTOMATIC1111's Stable Diffusion WebUI
_GitHub - blueturtleai/gimp-stable-diffusion

今回は、Stable Boy (gimp-stable-boy) のほうを使ってみる。

導入 :

導入は以下。任意のフォルダで、git を使ってクローン。
git clone https://github.com/thndrbrrr/gimp-stable-boy.git

今回は、D:\aiwork\ 以下で作業してみた。
cd /D D:\aiwork
git clone https://github.com/thndrbrrr/gimp-stable-boy.git
D:\aiwork\gimp-stable-boy\ というフォルダが出来て、中にファイル一式がコピーされている。

GIMPのプラグインとして指定する :

  1. GIMP 2.10 を起動。
  2. プラグインフォルダの設定画面を表示。編集 → 設定 → フォルダー → プラグイン。
  3. 先ほどクローンしたプラグインの場所 + src を指定。
D:\aiwork\gimp-stable-boy\src

gimp_stableboy_ss01.png

gimp_stableboy_ss02.png

GIMPを再起動すると、上部のメニューの中に、Stable Boy という項目が増えている。

gimp_stableboy_ss11.png

Stable Diffusion web UIを起動しておく :

Stable Diffusion web UIを起動しておいて、他のアプリから使える状態にしておく。

Stable Boy の説明ページ(README.md)には、--api を指定して起動する、と書いてある。DOS窓(cmd.exe)を開いて、Stable Diffusion web UI のインストールフォルダをカレントディレクトリにして、以下を実行。
webui.bat --api

_API - AUTOMATIC1111/stable-diffusion-webui Wiki - GitHub

DOS窓内にずらずらとメッセージが表示される。通常なら、以下のURL(URI)にアクセスすれば利用できるようになっているはず…。
http://127.0.0.1:7860

GIMP側でプラグインの初期設定 :

GIMP側で、512x512の画像を新規作成しておいてから、Stable Boy → 設定、を選んで、アクセスすべきURL(URI)を指定する。

何かしらの画像ウインドウが無いとメニュー選択ができないので注意。

gimp_stableboy_ss03.png

gimp_stableboy_ss04.png

デフォルトでは、http://localhost:7860 になっているが、この設定だと無反応だったので、http://127.0.0.1:7860 に変更する。
http://127.0.0.1:7860

gimp_stableboy_ss05.png


ちなみに、設定したURLは保存されないので、GIMP を起動するたびに、毎回設定しないといけない…。面倒臭い。

gimp-stable-boy\src\gimp_stable_boy\constants.py の中で、"http://localhost:7860" が定義されているので、そこを修正してしまうのも手かもしれない。

実際に利用してみる。 :

Stable Boy → Text to Image を選ぶ。おそらく txt2img を呼び出して、英文や英単語を打ち込めば、画像生成してくれるのだろう。

gimp_stableboy_ss06.png

gimp_stableboy_ss07.png

Prompt に「girl」とでも打ち込んで動作確認。また、Results as で、Layer (新規レイヤー作成) か Image (新規画像作成) を選べる。

Stable Diffusion web UI側の処理が終わると、GIMPのウインドウ内に生成画像が返ってくる。

Inpaint も使えるらしい。
  • Inpainting Mask という名前のレイヤーを新規作成して、一番上の階層に持ってくる。
  • 黒色でマスクしたい部分を塗り潰す。
  • その状態で、Stable Boy → Inpainting を選択。
gimp_stableboy_ss08.png

gimp_stableboy_ss09.png

gimp_stableboy_ss10.png

これで、黒色に塗った部分が新しく作成される。

終了の仕方 :

GIMPを終了したら、Stable Diffusion web UI を実行してるDOS窓も閉じてしまっていい。

問題点 :

一応、これで、GIMPから Stable Diffusion web UI を利用することができるようになったけど。ただ、このプラグイン、時々動作が怪しい…。

プラグインのダイアログで「OK」をクリックして、すぐにダイアログが閉じられる時は、何らかの処理に失敗している。処理に失敗してるけど、Stable Diffusion web UI側は、処理を続行している…。

本当なら、Stable Diffusion web UI が生成処理を終えるまで、ダイアログが開きっぱなしのままになるし、ダイアログのウインドウタイトルに「(応答なし)」も表示される。Stable Diffusion web UI側の処理が終われば、ダイアログ上の「Processing」の表示が100%になって、生成画像が返ってくるはず。

ということで、ダイアログがすぐに閉じたら、処理に失敗してると判断して、Stable Diffusion web UI側の処理が終わった頃を見計らってから、再度プラグインを実行してみるべし。

もう一点。公式ドキュメントにも書いてあるけど、学習モデルデータの選択は、このプラグイン側からできないので、Stable Diffusion web UI 側で事前に選択しておくこと。

雑感 :

考えてみたら、Webブラウザ経由で Stable Diffusion web UI を使っても、絶えずpng画像が保存されるのだから…。エクスプローラ等から GIMP に画像をドラッグアンドドロップしてアレコレすれば済みそうな気もする…。いや、その場合、マスク画像を作成して渡すのが面倒臭いかな…。

2023/04/16() [n年前の日記]

#1 [cg_tools] Rembgでエラーが出て少しハマった

画像生成AI、Stabel Diffusion web UI に、背景を消去してくれるらしい拡張機能、Rembg をインストールして使ってみようとしたのだけど。

_GitHub - AUTOMATIC1111/stable-diffusion-webui-rembg: Removes backgrounds from pictures. Extension for webui.
_簡単に背景を除去して透過できる!Rembgの使い方(WebUI AUTOMATIC1111 拡張機能) | note_lilish
_画像の背景を削除する拡張機能「Rembg」の使い方【Stable Diffusion web UI】 | くろくまそふと

妙なエラーが出て少しハマってしまったので、解決すべくジタバタした流れをメモ。

一応結論を先に書くと、Python の rembg と onnxruntime-gpu をアンインストールしてから再インストールすると改善する時もあるっぽい。

環境は、環境は、Windows10 x64 22H2 + Pyhton 3.10.6。AMD Ryzen 5 5600X + GeForce GTX 1060 6GB。

Stable Diffusion web UI (以下、SDwebUIと記述) は、D:\aiwork\stable-diffusion-webui\ にインストールしてある。

Rembg のインストール作業自体は前述の解説ページを参考にして作業。SDwebUI のページ、http://127.0.0.1:7860/ をWebブラウザで開いて、拡張機能 Extensions タブを開けば、そこからインストールができる。

Extras タブを開いて、下のほうに背景削除関連の項目が増えているから、そのあたりを指定していけば処理できるはずなのだけど、以下のエラーが出てしまった。

Error completing request
Arguments: (0, <PIL.Image.Image image mode=RGB size=192x128 at 0x1C2B77937F0>, None, '', '', True, 0, 4, 512, 512, True, 'None', 'None', 0, 0, 0, 0, False, False, 4, 'u2net', False, True, 240, 10, 10) {}
Traceback (most recent call last):
  File "D:\aiwork\stable-diffusion-webui\modules\call_queue.py", line 56, in f
    res = list(func(*args, **kwargs))
  File "D:\aiwork\stable-diffusion-webui\modules\call_queue.py", line 37, in f
    res = func(*args, **kwargs)
  File "D:\aiwork\stable-diffusion-webui\modules\postprocessing.py", line 56, in run_postprocessing
    scripts.scripts_postproc.run(pp, args)
  File "D:\aiwork\stable-diffusion-webui\modules\scripts_postprocessing.py", line 130, in run
    script.process(pp, **process_args)
  File "D:\aiwork\stable-diffusion-webui\extensions\stable-diffusion-webui-rembg\scripts\postprocessing_rembg.py", line 53, in process
    session=rembg.new_session(model),
  File "D:\aiwork\stable-diffusion-webui\venv\lib\site-packages\rembg\session_factory.py", line 71, in new_session
    ort.InferenceSession(
  File "D:\aiwork\stable-diffusion-webui\venv\lib\site-packages\onnxruntime\capi\onnxruntime_inference_collection.py", line 360, in __init__
    self._create_inference_session(providers, provider_options, disabled_optimizers)
  File "D:\aiwork\stable-diffusion-webui\venv\lib\site-packages\onnxruntime\capi\onnxruntime_inference_collection.py", line 408, in _create_inference_session
    sess.initialize_session(providers, provider_options, disabled_optimizers)
RuntimeError: D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1106 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 "" when trying to load "D:\aiwork\stable-diffusion-webui\venv\lib\site-packages\onnxruntime\capi\onnxruntime_providers_tensorrt.dll"

どうもよく分からんが、onnxruntime_providers_tensorrt.dll とやらでエラーが出てるんだろうか?

ファイル自体は、D:\aiwork\stable-diffusion-webui\venv\Lib\site-packages\onnxruntime\capi\ の中に、onnxruntime_providers_tensorrt.dll がちゃんとあった。

エラーメッセージ内容でググったら、以下のやり取りに遭遇。

_[BUG] ...RuntimeError: ...\onnxruntime\capi\onnxruntime_providers_tensorrt.dll" - Issue #312 - danielgatis/rembg - GitHub

rembg と onnxruntime をアンインストールしてから再インストールしたら解決した、という報告があるな…。ちなみに、SDwebUIのインストールフォルダに、Python 環境が入ってるはずなので、(SDwebUIインストールフォルダ)\venv\Scripts\ をカレントディレクトリにしてから pip を使って作業する必要がある。
cd /d D:\aiwork\stable-diffusion-webui\venv\Scripts
pip list

pip で、各モジュールのアンインストールと再インストール。
pip uninstall rembg
pip uninstall onnxruntime
pip install rembg[gpu] onnxruntime-gpu

しかし、pip が以下のようなエラーメッセージを出してきた。
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.
This behaviour is the source of the following dependency conflicts.
open-clip-torch 2.7.0 requires protobuf==3.20.0,
but you have protobuf 3.20.3 which is incompatible.

open-clip-torch 2.7.0 が protobuf 3.20.0 を要求してるけど、protobuf 3.20.3 がインストールされちゃってるぞ、ということかな。

なら、protobuf 3.20.0 をインストールすればいいのだろうか。
pip install protobuf==3.20.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.
This behaviour is the source of the following dependency conflicts.
onnx 1.13.1 requires protobuf<4,>=3.20.2,
but you have protobuf 3.20.0 which is incompatible.

onnx 1.13.1 が protobuf 3.20.2 以上を要求してるけど、protobuf 3.20.0 がインストールされちゃってるぞ、と怒られた。どうしろと。

onnx 1.13.0 をインストールしてみたらどうなるだろう。
pip install onnx==1.13.0
やはり怒られるな…。

とりあえずダメ元で、目に入ったモジュール名について、pip に -U をつけて再インストールしてみた。-U は、そのモジュールの新版がWeb上に存在するならアップデートするように指示するオプション。
pip install rembg[gpu] onnxruntime-gpu -U

こんな感じでアレコレを再インストールしていたら、最初にメモしたエラーが出ない状態になって、Rembg がようやく動いてくれた。助かった。

ちなみに、現時点では、各モジュールのバージョンは以下のようになってる。
> pip list | grep -E "rembg|onnx|proto|open-clip-torch"
onnx                    1.13.0
onnxruntime             1.14.1
onnxruntime-gpu         1.14.1
open-clip-torch         2.16.0
protobuf                3.20.3
rembg                   2.0.32

pipが警告を出す :

余談。pip list を打ったら、なんだかやたらと警告が出てきた。

以下の事例らしい。

_pip listのWARNINGを消す - Qiita

D:\aiwork\stable-diffusion-webui\venv\Lib\site-packages\ 内に、最初の文字が 「~」になってるディレクトリがいくつかあった。それらのディレクトリを別の場所に移動してみたところ、pip list を打っても警告が出てこなくなった。

2023/04/17(月) [n年前の日記]

#1 [cg_tools] img2imgは難しい

Stable Diffusion web UI の img2img で、inpaint + sketch機能を使って、とある物体を召喚しようとしたのだけど、これがなかなか思った通りにいかない。ざっくりとした形を描いて、マスクを指定して、プロンプトにその物体の名称を示す単語を打ち込んでみたものの、人間の手足が出てきたり、関係ない金属パイプが出てきたりで…。

既に色々描かれてしまっている画像の上に召喚しようとするから誤認識されるのかな、であれば単体で物体を召喚すればどうにかならんか。作戦を変えて、sketch機能のみを使って再チャレンジ。全面を真っ青に塗り潰してから、目的の物体っぽいものを描いて処理させてみたものの、形が全然違うし、向きも違う。これも上手く行かないか…。

結局、目的の物体がそれらしい向きで映っている画像を探して利用してみることにした。Google画像検索でCC0の画像を探して、画像をコピーして、GIMPで背景を消して、回転拡大縮小して、既にある画像の、目標位置に貼り付け。この状態で img2img を使ったら、さすがに何の物体を要求しているのか分かって…くれない。また手足として認識されてしまう。プロンプトで、「((2 物体))」みたいな感じで効果を強調して、ようやく目的が果たせた。

使いこなすのは、なかなか難しいものだなと…。

#2 [nitijyou] 部屋に蚊が居る

ふと、足の指先が妙な感じだなと見てみたら、蚊が止まっていて、チューッとやられてた。しかも潰し損ねた。逃げられた。

仕方なく蚊取り線香をつけたけど、蚊取り線香は自分もダメージを受けるのだよな…。蚊と自分の体力勝負…。

蚊取り線香って本当に効果があるのだろうか。実は今時の蚊には効かなくて、自分だけがダメージを受けてる状態だったりしないか…。

2023/04/18(火) [n年前の日記]

#1 [cg_tools] 画像ビューア XnView について調べてた

XnView (Classic) という画像ビューワは、各画像に対して、5段階の中からレーティングをつけて、レーティング順でサムネイル一覧を表示したりすることができる。

_The Best Windows Photo Viewer, Image Resizer and Batch Converter - XnView
_「XnView」エクスプローラー型画像ビューワー - 窓の杜
_XnView のダウンロード - k本的に無料ソフト・フリーソフト

ただ、このレーティング情報は、一体どこに記録されるのか、そのあたりが気になった。もし、画像ファイルの中に埋め込む形で実現しているなら、Stable Diffusion web UI で生成したpng画像の中身を微妙に破壊してしまって、後からプロンプト情報を取り出せなくなるかもしれないなと…。

そのあたりの仕組みについてググってたら、以下の記事に遭遇。

_日常のメモ XnViewMPのデータベースをいじる
カテゴリやレーティングなどのデータは XnView.db に記録される。

日常のメモ XnViewMPのデータベースをいじる より

SQLite で管理されているので中を調べてみた。

日常のメモ XnViewMPのデータベースをいじる より


XnView ではなくて、XnViewMP の話ではあるけど、画像ではなく、SQLite用のデータベースファイルに記録されるようだなと…。であれば、安心して使えそうかな…。確認してないけれど、おそらく XnView (Classic) も同様なのではあるまいか。分らんけど。

表示画質がよろしくない :

XnView (Classic) 2.51.2 を使って、512x512 の画像を拡大しつつ全画面表示すると、表示画質が荒れるというか、ボケるというか、とにかく見た目があまりよろしくないことに気づいた。

設定を眺めてみたけど、拡大表示する際のアルゴリズムを選んだりはできないようだなと…。

一応、設定ダイアログ → 表示 → 「表示」タブの中に、「高画質ズーム(低速)」という項目があって、「縮小」「拡大」「アニメーションGIFに適用」のそれぞれにチェックを入れられるようではあった。この「拡大」にチェックを入れると、拡大表示をする際も多少はマシな見た目になる模様。ただ、それでもイマイチ…。

仕方ないので、同じ設定画面の中の、「シャープ化を使用」にチェックを入れて有効化してみた。値は35。

ところで、XnView は拡大縮小表示時のアルゴリズムを選べないけれど、XnViewMP 1.4.3 なら色々なアルゴリズムを選べるように見えた。設定ダイアログ → 表示 → 「表示」タブの中に、「高ズーム画質」という項目があって、「Spline36」「Lanczos 3」「Lanczos 4」等々が選べる。

_Lanczos(ランチョス法)【ついでにSpline36】 | Rain or Shine
_リサイズ設定 - Nilposoft
_AviUtl使用フィルタ紹介(リサイズ系) ちりとまとチャンネル

XnViewMP のほうが、見た感じでは良さそうな表示をしてくれるような気がする…。今まで XnView をちょくちょく使ってたけど、XnViewMP への移行を意識したほうがいいのかもしれない。

まあ、両方インストールしておいて、XnViewMP では機能が足りないなと思った時だけ、XnView を使えば済むかな…。

#2 [prog] Pandocに渡すgithub風cssについて

Pandocというツールを使うと、Markdownファイルをhtmlに変換できる。その際、github風の見た目になるcssを指定することで、出力されるhtmlをgithub風にすることができるのだけど。

昔の解説記事で紹介されていた件のcssは、一部で画像を使っていて、しかし、その画像の入手先URLが今では違ってしまったようで、画像を入手できなくてちょっと困ってしまった。

諦めきれずにググってたら、github上に置いてくれていた方が居たようで。ありがたや。助かった。ということでメモ。

_pandoc-md2github1html/css at master - tukiyo/pandoc-md2github1html - GitHub

上記のページから、以下の3つのファイルを入手できる。
ちなみに、Pandoc を使った、gfm (github上で規定されてるMarkdown風記法)からhtml5への変換は以下。
pandoc hoge.md -f gfm -t html5 -s --self-contained -c github.css -o hoge.html

css内に画像を含めたい :

コレって、画像が別ファイルとして必要になっているけれど、css内に画像を含めておくことはできないのだろうか。

ググってみたら、Data URI scheme という技があるらしい。画像をbase64に変換して、"data:image/png;base64,..." と記述することで内包できるのだとか。

_表示速度改善 Data URIスキーム | 前編 仕組みとメリット
_Data URLスキームとは何なのか?便利な理由と扱うときの注意点 | PisukeCode - Web開発まとめ
_CSSのbackgroundに画像を直接埋め込む方法 | HTML・CSS・JavaScriptのテクニック集 | Webサイト制作支援 | ShanaBrian Website
_Data URI scheme - Wikipedia

画像をbase64に変換する作業は、以下のページを使わせてもらった。ありがたや。

_画像をData URI schemeでテキストに変換するツール - PEKO STEP

つまり、前述の github.css の中で、以下のように記述すれば画像ファイルを別途用意しなくて済む、ということになるのだろうか。

h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
    /* background: url("para.png") no-repeat 10px center; */
    background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZ0lEQVQ4T2NkoBAwUqifAZsBgkBDZwJxKBbDK4Bincji2AzYDVTggqQIpAYkdg+I09ENRTdACajgLpoi+hoAspwiL4AMAHljFRAbQ71CkheQvZ8GjY1RAxjAqZXohETVQCQqn1GcGwEpnyMREv2DmQAAAABJRU5ErkJggg==") no-repeat 10px center;
    text-decoration: none;
}
hr {
    /* background: transparent url("dirty-shade.png") repeat-x 0 0; */
    background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAIklEQVQIW2NkQAXGMC4jkjhcECh2FiaBIghSDJLAEARJAABzRgM4pXO10AAAAABJRU5ErkJggg==") repeat-x 0 0;
    border: 0 none;
    color: #cccccc;
    height: 4px;
    padding: 0;
}

試してみたところ、hrタグの見た目はたしかに変わったけれど…。h1 や h2 タグの周辺は、どう記述すればいいのか…。

#3 [cg_tools] 画像拡大ツールを試用

Stable Diffusion web UIで画像を生成する際、512x512で出力しているのだけど、ちょっと画像サイズが小さい気がしてきた。Stable Diffusion web UIは512x512に最適化して作られているという話をどこかで見かけたので、そういうことなら合わせておいたほうがいいかなと、そのサイズにしているのだけど…。

そんなわけで、画像拡大ツールを試しに使ってみようかなと。

Stable Diffusion web UI にも画像拡大ツールは入ってる。Extrasタブを選択すれば、色々なアルゴリズムを選んで画像拡大ができるし、txt2img を使う場合も Hires.fix という機能が使える。

ただ、それとは別に、画像拡大処理を専門にしているツールのほうが元画像に近い結果を得られるかもしれないと思えてきたので、そのあたりも使ってみることにした。

環境は、AMD Ryzen 5 5600X + GeForce GTX 1060 6GB。RAM 16GB。Windows10 x64 22H2。

NiceScalerを試用 :

NiceScaler というツールがあるらしい。AIで学習した結果に基づいて拡大処理をしてくれる模様。

_GitHub - Djdefrag/NiceScaler: NiceScaler - image/video deeplearning upscaler (OpenCV)
_NiceScaler のダウンロードと使い方 - k本的に無料ソフト・フリーソフト
_AIで写真を一番きれいに拡大するのはどれ?「NiceScaler」「Real-ESRGAN」「Upscayl」 - パソコン鳥のブログ
_画像や動画をAIが高画質にしてくれるソフト 『NiceScaler』 | PCあれこれ探索
_画質を落とさずに、拡大!AI画像加工ソフト「NiceScaler」 |

2倍に拡大した結果は、かなりイイ感じに見えた。写真画像の拡大には向いているという話を見かけたけれど、たしかにヨサゲ。ちなみに、512x512 を、2倍の 1024x1024 にした場合、以下の処理時間になった。
  • ESPCN と FSRCNN は2秒ほどで処理が終わった。
  • LapSRN は3秒。
  • EDSRはめっちゃ時間がかかって、127秒。

アルゴリズムは色々選べるけれど、各アルゴリズムがどういうものなのかは、以下のページが参考になった。

_【Intern CV Report】超解像の歴史探訪 -2016年編- - Sansan Tech Blog
_コンピュータビジョンの最新論文調査 Single Image Super-Resolution 前編 | BLOG - DeNA Engineering

上記の記事によると…。
  • ESPCN と FSRCNN は、SRCNN というアルゴリズムをそれぞれ別のやり方で高速化したアルゴリズム。
  • EDSR は、ESPCN や FSRCNN で得られた知見から SRResNet が作られて、その SRResNet よりも高精細さを追求したアルゴリズム。
LapSRN についてはどういうアルゴリズムなのか分らなかった。

Upscaylを試用 :

Upscayl というツールもあるらしい。これも、AIで学習した結果に基づいて拡大処理をしてくれる。

_GitHub - upscayl/upscayl: Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.
_Upscayl のダウンロードと使い方 - k本的に無料ソフト・フリーソフト
_無料で簡単にAIで低画質な画像を高画質に4倍アップコンバートできる「Upscayl」を使ってみた - GIGAZINE
_AIでディテールを保ったまま画像を拡大する無償ツール「Upscayl」がv2.0.0に - 窓の杜
_AI…とりあえず高画質化ツールを入れてみた、という話 - FURYU Tech Blog - フリュー株式会社

こちらは、4倍に拡大することしかできないらしい。試してみたところ、こちらも数秒で結果を生成してくれた。

Real-ESRGAN はアニメっぽくのっぺりした結果になった。人物の肌などはつるんとしていて、奇麗な見た目ではあるのだけど…。Remacri はシャープさが増したけれど、画像の明るさ? 色? が大きく変化した。

Stable Diffusion web UIのExtrasを試用 :

Stable Diffusion web UIのExtrasでも拡大処理ができるので試用してみた。

Upscaler 1 と Upscaler 2 の2つを重ね掛けすることができるらしい。パラメータは以下。
  • Upscaler 2 visibility
  • GFPGAN visibility
  • CodeFormer visibility
  • CodeFormer weight : 0なら最大効果、1なら最小効果。

アルゴリズムは以下が選べる。
  • Lanczos
  • Nearest
  • ESRFAN_4x
  • LDSR
  • R-ESRGAN 4x+
  • R-ESRGAN 4x+Anime6B
  • ScuNET GAN
  • ScuNET PSNR
  • SwinIR_4x

とりあえず SwinIR_4x を使ってみた。パラメータは全部0。2倍拡大でも精細さは NiceScaler の処理結果より高いように感じた。ただ、肌はアニメっぽくのっぺりしてしまう…。いやまあ、美肌云々を求めてるならこれでいいのだろうけど…。

アルゴリズムによる結果の違いは、以下が参考になりそう。

_Stable DiffusionのUpscalerの各メソッド比較|Nobu|note

感想 :

精細な画像が欲しいなら、Stable Diffusion web UI の SwinIR を使ったほうがいいかな…。ただ、元画像に近いのは、NiceScaler のような気もする…。SwinIR はアニメ調というか…。

2023/04/19(水) [n年前の日記]

#1 [cg_tools] 画像拡大ツールをもう少し試用してみた

_昨日、 各種画像拡大ツールを試用してみたけれど、せっかくだから実験結果の画像群をアップロードしてみる。やはり画像を見てみないと判断がつかないだろうし…。

環境は、Windows10 x64 22H2。CPU : AMD Ryzen 5 5600X。RAM : 16GB。GPU : NVIDIA GeForce GXT 1060 6GB。

使用ツールは以下。
_GitHub - Djdefrag/NiceScaler: NiceScaler - image/video deeplearning upscaler (OpenCV)
_GitHub - upscayl/upscayl: Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.
_GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI
_samj Creations: GIMP 2.10.32 Portable 32 bits et 64 bits Win
_IrfanView - Official Homepage - One of the Most Popular Viewers Worldwide

元画像について :

まずは元画像。Stable Diffusion web UI と、museV1_v1.safetensors という学習モデルデータを使って生成してみた。512x512の画像。

01_img_orig.png
_00_img_orig.png
parameters

1 asian girl, masterpiece, best quality, photo realistic, realistic, ultra high res, 8k, RAW photo, High detail RAW color photo, professional photograph, smile, looking at viewer, beautiful face, cute eyes, cowboy shot, school uniform, dynamic lighting, dynamic pose,
Negative prompt: painting, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowers, ((monochrome)), ((grayscale)), bad hands, bad arms, missing fingers, missing arms, missing hands, bad anatomy, bas legs, nsfw,
Steps: 40, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 2968748192, Face restoration: CodeFormer, Size: 512x512, Model hash: 84a23b651d, Model: museV1_v1


これを、GIMP 2.10.32 を使って、キュービック(Bicubic?)で4/1に縮小。128x128の画像にした。

02_img_quarter_gimp210.png

この128x128の画像を、縦横4倍、512x512の画像に拡大してみる。さて、どうなるか。

結果画像一覧 :

GIMP 2.10.32 + Nearest neighbor で拡大。
03_img_nearest_neighbor_x4_gimp210.png

1x1ドットが4x4ドットに単純に引き延ばされてる。処理の速さだけが取り柄だなと…。


GIMP 2.10.32 + Bilinear で拡大。
04_img_bilinear_x4_gimp210.png

GIMP 2.10.32 + Bicubic で拡大。
05_img_bicubic_x4_gimp210.png

BilinearとBicubicは、あまり変わらない気がする…。本当に GIMP はそのアルゴリズムを使っているのだろうか。 *1 別のツールを使ったほうが良かったのかな…?

何にせよ、AIを使わない、既存の拡大アルゴリズムでは、大体こんな感じのぼやけた結果しか得られない。


NiceScaler 1.13 + ESPCN x4 で拡大。
06_img_espcn_x4_nicescaler.png

NiceScaler 1.13 + FSRCNN x4 で拡大。
07_img_fsrcnn_x4_nicescaler.png

NiceScaler 1.13 + LapSRN x4 で拡大。
08_img_lapsrn_x4_nicescaler.png

NiceScaler 1.13 + EDSR x4 で拡大。
09_img_edsr_x4_nicescaler.png

EDSR は、他のアルゴリズムと比べて、10〜20倍ほど処理時間がかかった。そのせいか、若干精細な結果を出せている気がする。


Upscayl 2.0.1 + RealESRGAN-x4+ で拡大。
10_img_realesrgan-x4plus_x4_upscayl.png

Upscayl 2.0.1 + Remacri x4 で拡大。
11_img_remacri_x4_upscayl.png

Remacri が極めて優秀なのではなかろうか…。


Stable Diffusion web UI + Extras + ESRGAN で拡大。
12_img_esrgan_x4_sdwebui.png

背景部分はどのアルゴリズムよりも精細さがあるけれど、人物の輪郭部分や画像端に謎の二重線が出始めている。自然物を相手にする時は使えるのかもしれない…?


Stable Diffusion web UI + Extras + R-ESRGAN-4x+ で拡大。
13_img_r-esrgan-4xplus_x4_sdwebui.png

Stable Diffusion web UI + Extras + SwinIR_4x で拡大。
14_img_swinir_x4_sdwebui.png

Stable Diffusion web UI + Extras + LDSR で拡大。
15_img_ldsr_x4_sdwebui.png

LDSR は、他のアルゴリズムと比べると、とんでもなく時間がかかった。その代わり、かなり精細な結果をだしてきたように見える。


Stable Diffusion web UI + Extras + R-ESRGAN-4x+ + SwinIR_x4 で拡大。
15_img_r-esrgan-4xplus_swinir_x4_sdwebui.png

Stable Diffusion web UIは、Upscaler を2種類指定することができるので試してみた。しかし、劇的な効果は得られなかった。ただ、選ぶアルゴリズムの組み合わせによっては大化けしそうな気もする…。


Stable Diffusion web UI + Extras + R-ESRGAN-4x+ + SwinIR_x4 + GFPGAN 1.0 + CodeFormer 1.0 で拡大。
16_img_r-esrgan-4xplus_swinir_gfpgan_x4_sdwebui.png

Stable Diffusion web UIは、顔部分を修復できる、GFPGAN、CodeFormer を使うこともできる。顔の部分だけに注目すると、グンと精細さが増している。ただし、顔以外は今までとほとんど違いは無い。


余談。Upscayl + Remacri の結果が優秀だったので、試しに、その結果画像に対して再度 Remacri をかけてみて(元画像から16倍、2048x2048の画像にして)、そこから IrfanView + Lanczos で 4/1 に(512x512の画像に)縮小してみた。
23_img_remacri_x4x4_upscayl_x025lanczos_irfan.png

雑感 :

既存のアルゴリズム、Nearest neighbor、Bilinear、Bicubic はともかくとして、それ以外、AIを使って拡大するツールのアルゴリズムは、どれも比較的良い結果を出しているような気がする。

何せ、元画像が128x128。「それ、只のサムネイル画像じゃん」状態。なのに、それらしい画像を出力できているわけで…。

ざっと眺めた感じでは、Upscayl + Remacri の結果が、群を抜いてそれっぽくなっているように思えた。

以下に、オリジナル画像と Remacri の結果画像を再掲してみるけれど、サムネイル画像モドキからここまで復元できたのだからスゴイ気がする…。

01_img_orig.png
11_img_remacri_x4_upscayl.png

拡大処理前の画像が、コレですからね…。

02_img_quarter_gimp210.png


もっとも、Remacri の結果画像を拡大して眺めると、もはや写真ではなく、完全に絵になっている印象も受けた。例えば、以下は Remacri を2回かけた 2048x2048の画像だけど、ほとんどの部分がぬるっとした見た目になっている。これはもう絵だなと…。

_22_img_remacri_x4x4_upscayl.jpg

画像へのリンク :


*1: 昔のGIMPには、表記されてるアルゴリズム名と違うアルゴリズムを実際には使っていたというバグがあった気がする。

#2 [zatta] 日記をアップロード

2023/03/22から日記をアップロードしてなかったのでアップロード。

2023/04/20(木) [n年前の日記]

#1 [cg_tools] ControlNetを試用

画像生成AI、Stable Diffusion web UI は、人物のポーズなどを指定するのが面倒臭い。どういう単語を打ち込めばそれらしいポーズをとってくれるのか分からないので、思いつくまま何かしらの単語を打って、これでもない、これでもないと悩むことになる。

しかし、ControlNet なるものを使えばポーズ等を指定しやすくなるらしい。せっかくだから試用してみることにした。

環境は以下。
自分の環境では、Stable Diffusion web UI を、D:\aiwork\stable-diffusion-webui\ にインストールしてある。

ControlNet の導入方法は、以下の解説記事を参考にさせてもらった。ありがたや。

_ポーズを指定して画像を生成できる「ControlNet」の使い方【Stable Diffusion web UI】 | くろくまそふと

ざっくり書くと、以下をインストールすることになるらしい。

拡張機能のインストール :

巷の解説記事を眺めると、大体は、github のURLをコピペしてインストールする方法が紹介されているのだけど。今回は前述の解説記事に従って、Stable Diffusion web UI の拡張機能タブ → 拡張機能リストで拡張機能の一覧を表示して、インストールする方法を選んでみた。

拡張機能の一覧から、sd-webui-controlnet を探して、右側にあるインストールボタンをクリックすればインストールできる。

しかし、sd-webui-controlnet のインストール時、DOS窓上にエラーが出た。よく分からないので、全部貼り付けてみる。

Error running install.py for extension D:\aiwork\stable-diffusion-webui\extensions\sd-webui-controlnet.
Command: "D:\aiwork\stable-diffusion-webui\venv\Scripts\python.exe" "D:\aiwork\stable-diffusion-webui\extensions\sd-webui-controlnet\install.py"
Error code: 1
stdout: Installing sd-webui-controlnet requirement: mediapipe==0.9.1.0

stderr: Traceback (most recent call last):
  File "D:\aiwork\stable-diffusion-webui\extensions\sd-webui-controlnet\install.py", line 11, in <module>
    launch.run_pip(f"install {lib}", f"sd-webui-controlnet requirement: {lib}")
  File "D:\aiwork\stable-diffusion-webui\launch.py", line 129, in run_pip
    return run(f'"{python}" -m pip {args} --prefer-binary{index_url_line}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}")
  File "D:\aiwork\stable-diffusion-webui\launch.py", line 97, in run
    raise RuntimeError(message)
RuntimeError: Couldn't install sd-webui-controlnet requirement: mediapipe==0.9.1.0.
Command: "D:\aiwork\stable-diffusion-webui\venv\Scripts\python.exe" -m pip install mediapipe==0.9.1.0 --prefer-binary
Error code: 1
stdout: Collecting mediapipe==0.9.1.0
  Downloading mediapipe-0.9.1.0-cp310-cp310-win_amd64.whl (49.8 MB)
     ---------------------------------------- 49.8/49.8 MB 9.2 MB/s eta 0:00:00
Requirement already satisfied: protobuf<4,>=3.11 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from mediapipe==0.9.1.0) (3.20.3)
Requirement already satisfied: flatbuffers>=2.0 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from mediapipe==0.9.1.0) (23.3.3)
Requirement already satisfied: attrs>=19.1.0 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from mediapipe==0.9.1.0) (22.2.0)
Requirement already satisfied: matplotlib in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from mediapipe==0.9.1.0) (3.7.1)
Requirement already satisfied: numpy in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from mediapipe==0.9.1.0) (1.23.3)
Requirement already satisfied: absl-py in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from mediapipe==0.9.1.0) (1.4.0)
Collecting opencv-contrib-python
  Downloading opencv_contrib_python-4.7.0.72-cp37-abi3-win_amd64.whl (44.9 MB)
     ---------------------------------------- 44.9/44.9 MB 9.5 MB/s eta 0:00:00
Requirement already satisfied: kiwisolver>=1.0.1 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (1.4.4)
Requirement already satisfied: contourpy>=1.0.1 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (1.0.7)
Requirement already satisfied: python-dateutil>=2.7 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (2.8.2)
Requirement already satisfied: cycler>=0.10 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (0.11.0)
Requirement already satisfied: pyparsing>=2.3.1 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (3.0.9)
Requirement already satisfied: fonttools>=4.22.0 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (4.39.3)
Requirement already satisfied: packaging>=20.0 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (23.0)
Requirement already satisfied: pillow>=6.2.0 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from matplotlib->mediapipe==0.9.1.0) (9.4.0)
Requirement already satisfied: six>=1.5 in d:\aiwork\stable-diffusion-webui\venv\lib\site-packages (from python-dateutil>=2.7->matplotlib->mediapipe==0.9.1.0) (1.16.0)
Installing collected packages: opencv-contrib-python, mediapipe

stderr: ERROR: Could not install packages due to an OSError: [WinError 5] ANZX\u06c2\u0702B: 'D:\\aiwork\\stable-diffusion-webui\\venv\\Lib\\site-packages\\cv2\\cv2.pyd'
Check the permissions.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\aiwork\stable-diffusion-webui\extensions\sd-webui-controlnet\install.py", line 13, in <module>
    print(e)
UnicodeEncodeError: 'cp932' codec can't encode character '\u06c2' in position 2984: illegal multibyte sequence

おそらくだけど…。sd-webui-controlnet という拡張機能を動かすためには、opencv-contrib-python と mediapipe という Pythonのモジュールが必要になるっぽい。しかし、そのモジュールのインストール時にエラーが出てしまったように見える。たぶん。自信無いけど。

試しに、それらのモジュールを、手作業でインストールしてみることにした。

Stable Diffusion web UIを終了させて(DOS窓を閉じて)、別途、DOS窓(cmd.exe) を起動してから、pip を使ってインストール。ただし、(Stable Diffusion web UIインストールフォルダ)\venv\Scripts\ をカレントディレクトリにして作業しないといけない。
cd /d D:\aiwork\stable-diffusion-webui\venv\Scripts

pip install opencv-contrib-python
pip install mediapipe

手作業でインストールする分には、エラーが出ない状態でインストールできた、ような気がする。

ControlNet用モデルデータの入手 :

ControlNetを使うためには、別途、モデルデータが必要。以下からDLする。

_lllyasviel/ControlNet-v1-1 at main

1.45GBぐらいの各ファイル(拡張子は .pth だった)をDL。全部で14ファイルあるけれど、自分が使いそうなモノだけDLすればいいらしい。しかし、どれが何なのか、今の時点では分らないので、とりあえず14ファイル全部をDLしておいた。

これを、以下にコピーする。
(Stable Diffusion web UIインストールフォルダ)\extensions\sd-webui-controlnet\models\

ちなみに、以下のページでも、ファイルサイズが小さくなってるモデルデータがあるのだけど。

_webui/ControlNet-modules-safetensors at main

ファイルの日付が2ヶ月前だったので、こちらは選ばず、前述のページから入手できる、1.45GB のファイル群を選んだ。そちらのファイル群は、7日前に更新されてるっぽいので…。新しいほうがいいのだろうと…。

使ってみた :

インストールに成功すると、Stable Diffusion web UI の、txt2img や img2img のページに、ControlNet という設定項目が増えている。小さい三角をクリックすると、隠れていた設定項目が表示される。
  • ControlNet の設定項目部分に、元ポーズとなる画像をドラッグアンドドロップ。
  • ControlNet を有効に。
  • プリプロセッサ種類で、canny(キャニー)云々を選択。
  • プリプロセッサのモデルで、canny云々を選択。
この状態で、今まで通りに生成処理をさせたら、ポーズが反映された状態で画像が生成された。どうやら一応動いてくれたっぽい。

以下のページで、3種類の動作テスト方法が紹介されていた。

_ControlNet - としあきdiffusion Wiki*

3番目の、img2img タブ上での Inpaint upload は、ちょっとハマった。Inpaint upload には、上に元画像、下にマスク画像、つまり2つの画像を渡してやらないといかんのだな…。マスク画像だけドラッグアンドドロップして、思った通りに動かないなと悩んでしまった。

Openpose Editor もインストール :

毎回、元ポーズとなる画像をどこかから探してきて、ControlNet に渡すのは、ちょっと面倒臭い。任意のポーズを指定できるようにならないものか。

そんな時は、OpenPose というものが使えるらしい。OpenPose用の画像を眺めると、棒人間っぽいものが描かれているけれど、色だのなんだのを使って、「ここが右足」「ここが左目」「ここが左耳」と言った感じで人体のポーズが指定されているのだとか。

なんでも、ControlNet + Openpose が前処理としてやっているのも、元画像からポーズを抽出して OpenPose にする処理だそうで…。つまり、その前処理を、人間様がやってしまったほうが話が早い。毎度毎度、元ポーズ画像を探してくる手間を省ける。

その、OpenPose画像を作るための Stable Diffusion web UI用拡張機能が、Openpose Editor なのだとか。

_GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111's stable-diffusion-webui

ということで、これもインストール。この拡張機能については、github のURL を、Stable Diffusion web UI の拡張機能タブで貼り付けてインストールしてみた。
https://github.com/fkunn1326/openpose-editor.git

ちなみに、インストール時にエラーは表示されなかった。

  • インストールに成功すると、Openpose Editor というタブが増えている。
  • そこで棒人間の各関節の位置を調整して、ControlNet に画像を送ることができる。
  • ControlNet 側では、プリプロセッサの種類を「None(なし)」に。プリプロセッサのモデルを、「openpose」云々にする。

少し使ってみたけれど、たしかに OpenPose で指定したポーズが生成画像にも反映された。

ブラウザ上でOpenpose画像を作れるサービス :

Stable Diffusion web UI に拡張機能をインストールしなくても、Webブラウザ上で OpenPose を作れるサービスがあると知ったのでメモ。

_3D Openpose Editor
_GitHub - ZhUyU1997/open-pose-editor: online 3d openpose editor for stable diffusion and controlnet
_GitHub - nonnonstop/sd-webui-3d-open-pose-editor: 3d openpose editor for stable diffusion and controlnet
_sd-webui-3d-open-pose-editor/README-ja.md at main - nonnonstop/sd-webui-3d-open-pose-editor - GitHub

  • 肩、肘、腰、膝、等々をクリックすると、x,y,zの回転軸を示す円が表示される。
  • その円をドラッグしてやると、各関節の角度を変更できる。
  • ポーズを作って「生成する」をクリックすると、下のほうに画像のサムネイルができる。
  • 各サムネイルをクリックすると、OpenPose画像をダウンロードできる。
手や足のDepth画像やNormal画像も生成してくれる模様。

余談。VRAMが足りなくなってきた :

ControlNetをインストールしたせいなのか、それとも元から足りなかったのか分からないけど、Stable Diffusion web UI で画像を生成しようとすると、CUDA が Out of memory と言ってくることが多くなってきた。要するに、「VRAMが足りないからこれ以上処理できないよ」と…。「ControlNetを使おうとするとVRAMが更に必要になる」という話をどこかで見かけたけれど、やはり VRAM 6GB では厳しい場面があるらしい…。

特に、Hires.fix を使うと、メモリが足りないと言われてしまう。なかなか厳しい。

ちなみに、VRAM だけではなく、メインメモリも16GBでは足りない感じがしている。気付いたら、Cドライブに、pagefile.sys が8.5GBほど作られていた。つまり、Stable Diffusion web UI を使っているうちに、16GB + 8.5GB ほどのメモリが必要になった瞬間があった、ということだろうなと…。32GB を載せないとダメかな…。

#2 [zatta] 自転車用ヘルメットがまだ売ってない

ホームセンターサンデーに寄って、大人向けの自転車用ヘルメットが売ってないか確認してきたのだけど、店頭では一つも売ってなかった。

一応、棚には「大人用」と札も貼ってあったし、わざわざ入り口のあたりにヘルメット売り場を移動していたので、2023/04から着用が努力義務になっていることを店側も把握してるっぽいのだけど…。商品が無いのではなあ…。

どのくらい経てば、在庫が復活するんだろうか。

2023/04/21(金) [n年前の日記]

#1 [cg_tools] RemacriをStable Diffusion web UIから利用

AIを用いた画像拡大アルゴリズムの中で、Remacri が比較的優秀だなと感じたのだけど、ググっていたら Stable Diffusion web UI から Remacri を使うこともできると知ったので導入してみた。

_瀬名しえら(sierra)@AIcomics. ... 「2次元絵おすすめのアップスケーラーはlollypopかRemacri... / Twitter
_Model Database - Upscale Wiki

上記のページで、「Remacri」で検索すると、「Remacri Remacri Backup Mirror」というリンクがあるので、どちらかからファイルを入手。必要なのは、以下の2つ。
ついでに、lollypop とやらも試してみたかったので、lollypop.pth も入手。

それら .pth を、(Stable Diffusion web UIインストールフォルダ)\models\ESRGAN\ 以下にコピー。

これで、Stable Diffusion web UI のページをWebブラウザから開いた際に、Extras 等で Upscaler の種類として以下を選べるようになった。
ちなみに、以下のやり取りの中で、Remacri の処理結果や、他のアルゴリズムについて紹介されてた。色々な種類があるのだな…。

_Extensive Research of upscalers: Remacri has best results across the board, tested on 8 AI generated Images, details and ratings in comments : StableDiffusion

2023/04/22() [n年前の日記]

#1 [cg_tools] canvas-zoomを試用

画像生成AI、Stable Diffusion web UI 上で、img2img の inpaint等を使う際、マスク部分を塗っていくのがシンドイ。画像が等倍表示になっているので、細かいところを塗り分けるのがちょっと難しくて。

今までは、Windows10の拡大鏡を利用して、少しは改善できないかと試していたのだけど…。Stable Diffusion web UIの拡張機能として、canvas-zoom というものがあると知ったので導入してみた。

_canvas-zoom - work4ai
_GitHub - richrobber2/canvas-zoom: zoom and pan functionality

インストールは、Stable Diffusion web UIの拡張機能一覧から選択。

最低限の使い方は以下。
これだけでも随分と作業が楽になった。

2023/04/24追記。 :

ショートカットキーについて、もう少しメモを追加。

  • Shift + テンキーの「+」/「-」 : ズームイン/ズームアウト。
  • Ctrl + ホイール回転 : ブラシサイズ変更。
  • A : カラーピッカー(色取得ツール)への切り替え。マウスカーソルが十字になるので、色を取得したい部分をクリックする。
ますます作業が楽になった。

2023/04/23() [n年前の日記]

#1 [pc] SSDの「5184時間問題」

Windows10 x64 22H2を動かしているメインPCが、またブルースクリーン(BSOD)になって、これはやはりSSDがおかしいのだろうかと関連情報をググっていたところ、「5184時間問題」というものがあると今頃になって知ったのでメモ。

_5184時間問題(Crucial M4 SSD):UTAN1985BLOG
_【重要】Crucial m4に不具合 5184時間 問題 : らいっちのPC奮闘記
_BSODの元凶は5184時間 問題(Crucial m4 SSD/Firmwareの不具合): Automatic

Crucial製SSDにおいては、使用時間が5184時間を過ぎると、1時間毎に応答が停止する、という不具合があるそうで。

気になって、自分が使っている crucial MX500 CT500MX500SSD1/JP (ファームウェア M3CR023) の使用時間を、CrystalDiskInfo 8.17.14 x64 で調べてみたら、5700時間を超えてた。まさか、これか。これなのか。これがブルースクリーンの原因なのでは。

ただ、件の問題は、Crusial M4 や Micron C400 といった製品の、特定のファームウェアバージョンで発生する問題のようで…。MX500 は、おそらく該当しない製品だよな…。ファームウェアバージョンも全然違う表記だし…。それに、2014年とか2015年頃に起きてた問題のようでもあるし…。

もっとも、SSDというのは、製造時期によって中身が全く違っていたりするそうだから、昔は大丈夫な製品だったけど、近年は問題を抱えている製品にこっそり変わっていてもおかしくないのかもしれないか…。

それにしても、この手の問題が発覚するまで、5000時間ほどかかるのは厳しい話だなと。仮に24時間動かし続けたとしても216日、1日10時間ほど動かすとしても1年半程度は何の問題も無く動いてしまうのであろうし。実は不具合がある製品なのだと分かるまで結構時間がかかってしまう。面倒だなと…。

2023/04/24(月) [n年前の日記]

#1 [cg_tools] 画像生成AIで着色処理をしたい

画像生成AI、Stable Diffusion web UIを使って、線画に着色処理をしてみたい。

環境は以下。
着色処理をするには、ControlNet を Stable Diffusion web UI にインストールしておく必要があるらしい。

ControlNet用の、canny か Anime Lineart の追加データが必要らしいので、それも入手して、(Stable Diffusion web UIインストールフォルダ)\extensions\sd-webui-controlnet\models\ 以下にコピーしておく。

線画を生成してみる :

着色処理をするためには線画が必要だけど、線画も Stable Diffusion web UI で生成できてしまうらしい。

_【画像生成AI】線画描画LoRAを使おう!(Anime Lineart Style LoRA)|ステスロス|note
_【Stable Diffusion】線画を生成できるLoRA | ジコログ
_Anime Lineart / Manga-like (...) Style - v3.0 manga-like | Stable Diffusion LoRA | Civitai
_andite/anything-v4.0 - Hugging Face

Anime Lineart / Manga-like Style というLORAデータ(追加学習モデルデータ)があれば、線画の生成ができる模様。

このLORAは、学習モデルデータ、Anything V4.5 に最適化しているとのことなので、そちらのモデルデータも入手する。つまり、以下のファイルをDLすることになる。
  • anything-v4.5.safetensors : (Stable Diffusion web UIインストールフォルダ)\models\Stable-diffusion\ にコピー。
  • anything-v4.0.vae.pt : (Stable Diffusion web UIインストールフォルダ)\models\VAE\ にコピー。
  • animeLineartMangaLike_v30MangaLike.safetensors : (Stable Diffusion web UIインストールフォルダ)\models\Lora\ にコピー。

Stable Diffusion web UI を起動して、以下のモデルデータ、VAEにしておく。
  • 学習モデルデータ : anything-v4.5.safetensors
  • VAE : anything-v4.0.vae.pt

とりあえず、txt2img上で、生成できるかテスト。

00063-3871747518_anything-v4.5.png
1 girl, city background,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3871747518, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5

フツーに色がついてる状態で生成された。


Anime Lineart Style を有効にして線画が生成されるか確認してみる。プロンプトに <lora:animeLineartMangaLike_v30MangaLike:1> を入れて有効化。かつ、トリガーワードの lineart を入れてみた。

00064-3871747518_animelineartmangalike_v30.png
1 girl, city background, <lora:animeLineartMangaLike_v30MangaLike:1>, lineart,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3871747518, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5

さすがに構図等は変わってしまったけど、めっちゃ線画っぽくなった。


何度か生成してみたけど、どれもイイ感じ。とりあえず、今回は以下の生成画像を使って着色処理をしてみたい。

00072-2228530729_animelineartmangalike_v30.png
1 girl, school uniform, upper body, in room, from side, <lora:animeLineartMangaLike_v30MangaLike:1.0>, lineart,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 40, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 2228530729, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5

着色処理 :

得られた線画を元にして、着色処理を試してみる。以下のページが参考になった。

_「ControlNet」の『openpose』と『canny』を知ってしまった回。【Stable Diffusion web UI】 | note_lilish
_【ControlNet】自分の作画をAIで自動着彩!cannyを堪能しまくった回。(Stable Diffusion) | note_lilish
_AIで適当な線画を清書し、さらに色を塗って高品質なイラストに仕上げる方法【ControlNet活用術】 | くろくまそふと

txt2imgタブで、ControlNet の画像入力欄に、先ほど生成した線画をドラッグアンドドロップ。
  • ControlNetを有効化。
  • プリプロセッサ (Preprocessor) : invert (from white bg & black line)、もしくは canny
  • モデル (Model) : control_v11p_sd15_canny

線画が、線が黒、背景が白の場合、プリプロセッサで、invert を選んで白黒を反転する必要があるらしい。本来、ControlNet には、背景画が黒、線が白を渡さないといかんようだなと…。ただ、プリプロセッサで canny を選んだ場合も、それらしい結果を生成できた。

以下は、プリプロセッサで「canny」を選んだ場合。

00073-1628600786_controlnet_canny.png
1 girl, school uniform, upper body, in room, from side,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 40, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 1628600786, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5, ControlNet Enabled: True, ControlNet Module: canny, ControlNet Model: control_v11p_sd15_canny [d14c016b], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1


以下は、プリプロセッサで「invert」を選んだ場合。

00075-2086267769_controlnet_canny.png
1 girl, school uniform, upper body, in room, from side,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 40, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 2086267769, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5, ControlNet Enabled: True, ControlNet Module: invert (from white bg & black line), ControlNet Model: control_v11p_sd15_canny [d14c016b], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1


ということで、Stable Diffusion web UI + ControlNet + cannyモデルデータを使って、線画に着色できることがわかった。

実写寄りにしてみたい :

せっかくだから、ここから実写寄りの画像を生成できるか試してみたい。学習モデルデータを実写寄りのデータに切り替えてみる。

  • Model : chilloutmix_.safetensors
  • VAE : vae-ft-mse-840000-ema-pruned.safetensors

txt2imgタブ上で作業する。ControlNet に、前述の線画を渡しておいて、プリプロセッサで「canny」を選んでみた。

00104-3050420311_t2i_canny_canny.png
1 girl, school uniform, upper body, in room, from side, masterpiece, best quality, highres,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3050420311, Face restoration: CodeFormer, Size: 512x512, Model hash: a757fe8b3d, Model: chilloutmix_, ControlNet Enabled: True, ControlNet Module: canny, ControlNet Model: control_v11p_sd15_canny [d14c016b], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1

漫画的な線画に引き摺られてしまったのか、キモい感じの画像が生成されてしまった…。これはこれでアリな絵柄なのかもしれんけど…。


プリプロセッサを「invert」にしてみた。

00101-41314358_t2i_invert_canny.png
1 girl, school uniform, upper body, in room, from side,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 41314358, Face restoration: CodeFormer, Size: 512x512, Model hash: a757fe8b3d, Model: chilloutmix_, ControlNet Enabled: True, ControlNet Module: invert (from white bg & black line), ControlNet Model: control_v11p_sd15_canny [d14c016b], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1

00103-2960943004_t2i_invert_canny.png

こちらはなかなかイイ感じなのではなかろうか。


ただ、ここまで来ると、img2imgタブ上で処理したほうが良いのかもしれない。以下は、img2img に着色済み画像を渡して生成してみた事例。元の線画から結構かけ離れてしまったけど、見た目は随分自然な感じになった。

00075-2086267769-00011-3832661318.i2i.png
1 girl, school uniform, upper body, in room, from side, masterpiece, best quality, highres,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3832661318, Face restoration: CodeFormer, Size: 512x512, Model hash: a757fe8b3d, Model: chilloutmix_, Denoising strength: 0.6

余談 :

線画を実写風に変換するところまで作業してみて思ったけど、ひょっとして、画像生成AIを使えば、机の前に座りながら実写風の漫画作品も作れてしまうのではなかろうか…? いやまあ、既に誰かが挑戦してそうな気もするけど。

そこまで来ると、ネームを描いて構成して最終原稿を召喚した人に著作権がちゃんと発生しそうな気もするけど、どうなんだろう。

2023/04/25追記 :

実写風の漫画が作れるのでは、などと書いてみたものの、その後色々試してるうちに、考えが甘かったことに気づいた。画像生成AIは、絵柄、というかキャラの顔立ちを統一させるのが難しいから、漫画やアニメのようなメディアではキャラの描画に使えないよな…。ある程度絵柄が統一されてないと、その手のジャンルでは使い物にならない…。

2023/04/25(火) [n年前の日記]

#1 [cg_tools] 実写風画像から線画イラストを生成してみたい

_昨日の実験 で、画像生成AI、Stable Diffusion web UI + Anime Lineart Style LORA を使うと、線画イラストっぽい画像を生成できることが分かったけれど、これを使ったら実写風画像から線画イラストっぽい画像を生成できるのかなと疑問が湧いたので、そのあたりを試してみた。

環境は、Windows10 x64 22H2, CPU: AMD Ryzen 5 5600X, RAM: 16GB, GPU: NVIDIA GeForce GTX 1060 6GB。

元画像は以下。basil_mix という学習モデルデータを使って、txt2imgで生成。

00013-3864758789.basil_mix.png
1 girl, beautiful, school uniform, upper body, masterpiece, best quality, highres,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 3864758789, Size: 512x512, Model hash: 0ff127093f, Model: Basil_mix_fixed


この画像を、線画イラスト風にして出力したい。線画イラスト風を出力しやすくするために、学習モデルデータとVAEを変更する。
そして、前述の元画像を、txt2img の ControlNet の画像入力欄にドラッグアンドドロップ。
プロンプトに、"<lora:animeLineartMangaLike_v30MangaLike:1>, lineart, " を追加しつつ、生成したら以下になった。

00014-331652086.png
1 girl, beautiful, school uniform, upper body, masterpiece, best quality, highres, <lora:animeLineartMangaLike_v30MangaLike:1>, lineart, monochrome, greyscale,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 331652086, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5, ControlNet Enabled: True, ControlNet Module: softedge_pidisafe, ControlNet Model: control_v11p_sd15_softedge [a8575a2a], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1

結構イイ感じかもしれない…。

解像度を上げると変わってしまう :

txt2img の Hires.fix を使って、512x512 の画像を 1024x1024 として生成してみたところ、以下のような結果になった。

00016-331652086.hires.fix.png
1 girl, beautiful, school uniform, upper body, masterpiece, best quality, highres, <lora:animeLineartMangaLike_v30MangaLike:1>, lineart, monochrome, greyscale,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 331652086, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5, Denoising strength: 0.7, ControlNet Enabled: True, ControlNet Module: softedge_pidisafe, ControlNet Model: control_v11p_sd15_softedge [a8575a2a], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1, Hires upscale: 2, Hires steps: 8, Hires upscaler: Latent (bicubic antialiased)

前述の生成画像と比べると、随分と絵柄が変わってしまった。これがもし手描きイラストだったら「別の方が描きましたか?」って言われそう。

解像度を上げて生成するだけでも、これほど絵柄が変わってしまうのでは、漫画やアニメのように、ある程度絵柄の統一が期待されるメディアでは使えないよなと思えてきた。いやまあ、背景だけとか、そういう部分では使えるかもしれないけれど。 *1

余談。そういえば、背景制作の一部にAIを使ってみたアニメ作品がある、という話を以前ネットで見かけた気がする。もしかすると、「キャラは絵柄が安定しないから使えないけど、背景だけなら大体は一枚絵で済むし使えなくもないかも」ということだったのかもしれない。分らんけど。

img2imgでは線画にならない :

img2imgだけで ―― ControlNet は未使用状態で試してみたけど、なかなか厳しい結果になった。

00013-3864758789-1475614968.i2i.png
1 girl, beautiful, school uniform, upper body, masterpiece, best quality, highres, <lora:animeLineartMangaLike_v30MangaLike:1>, lineart, monochrome, greyscale,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 1475614968, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5, Denoising strength: 0.55

白黒イラストっぽいけれど、これは線画じゃないなと。いやまあ、改めて見直してみたら、前述の2つの生成事例も全然線画じゃない気がしてきたけど…。

ちなみに、最初に試してみた際には、うっすら色がついた感じの画像が生成されてしまった。プロンプトに "monochrome, greyscale," を追加してやることで、無理矢理だけど白黒画像にできた。でも、コレは線画じゃない。

カラーイラスト風で生成するのであれば、img2imgでもイケるのだろうけど…。例えば、下のような結果でも良いのであれば…。

00013-3864758789-1520341489.i2i.png
1 girl, beautiful, school uniform, upper body, masterpiece, best quality, highres,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 1520341489, Size: 512x512, Model hash: eb4099ba9c, Model: abyssorangemix3AOM3_aom3a3, Denoising strength: 0.58

余談。AIの生成画像なので、やっぱり指がおかしいですね。

cannyで試してみた :

ControlNet のプリプロセッサ種類で、softedge_pidisafe を選んでるのがよろしくないのではないか、canny だったら違うのではと思えてきたので試してみた。txt2img で生成。
  • ControlNet を有効化。
  • プリプロセッサ : canny
  • モデル : control_v11p_sd15_canny

00015-331652086.canny.png
1 girl, beautiful, school uniform, upper body, masterpiece, best quality, highres, <lora:animeLineartMangaLike_v30MangaLike:1>, lineart, monochrome, greyscale,
Negative prompt: EasyNegative, (worst quality:1.4), (low quality:1.4), (normal quality:1.4), lowers,
Steps: 25, Sampler: DPM++ SDE Karras, CFG scale: 5, Seed: 331652086, Size: 512x512, Model hash: 1d1e459f9f, Model: anything-v4.5, ControlNet Enabled: True, ControlNet Module: canny, ControlNet Model: control_v11p_sd15_canny [d14c016b], ControlNet Weight: 1, ControlNet Guidance Start: 0, ControlNet Guidance End: 1

髪のあたりは線画っぽくなったけど、服の部分は線画のソレではないな…。元画像の服の部分が黒すぎるのだろうか。それはともかく、やっぱり指がおかしいですな。

実験結果 :

結論としては…。
  • 何もない状態から、txt2img + Anime Lineart Style LORA を使って、線画イラスト風画像を生成できることは分かった。
  • 実写風画像を img2img に渡して、カラーイラスト風画像を生成することもできると分かった。
  • しかし、実写風画像を元にして、線画イラスト風を生成するのは難しい。グレースケール画像っぽいイラスト風なら生成できるけど、線画イラスト風にはなってくれない。

まあ、仮に線画イラストを生成できたとしても、ソレを一体何に使うのと問われたら、現時点では使い道が思いつかないのだけど…。それに、権利的にも、これらの学習モデルデータは色々アウトだろうから、そういった面でも使い道は無いよなと…。

VRAMが足りない :

Hires.fix を使って 1024x1024の画像を出力しようとしたら、NaN が大量発生しただの、VRAM が足りないだのエラーが出て処理が中断されてしまった。GTX 1060 6GB では、やはり厳しいのか…。

webui-user.bat 内の指定を変えればVRAMが少ない環境でも動くかも、という話を見かけたので試してみた。

webui-user.bat の2行目に以下を追加。なんでも、VRAM に対してガベージコレクションを行う頻度を指定しているらしい。
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6, max_split_size_mb:128

加えて、webui-user.bat内の、COMMANDLINE_ARGS の指定を増やした。
@rem set COMMANDLINE_ARGS=
set COMMANDLINE_ARGS= --xformers --no-half-vae --medvram
  • --xformers : xformers を使うことで処理が速くなる。その代わり、同じ乱数シードを与えてもビミョーに違う生成画像になる。
  • --no-half-vae : NaN とやらが大量に出て処理が止まってしまう場合、これをつけることで fp16 とやらが fp32 になって、処理が通るかもしれない、ということらしい。
  • --medvram : VRAMが4GBしかない時はコレをつけてみよ、ということらしい。その分処理速度は遅くなるそうで。

上記の指定をしたところ、Hires.fix を使って、512x512の画像を1024x1024として出力することができた。

もっとも、前述の通り、生成される画像は結構盛大に変わってしまうので、処理時間がかかった割に「コレジャナイ」感が…。うーん。

*1: もっとも、背景として使うとしても、パースがめちゃくちゃな画像が平気で生成されたりするらしいので、やっぱり漫画には使えないよ、という話もどこかで見かけた気がする。パース云々が絡んでくると、3DCGを活用するのが妥当という話になるのだろうなと。3DCGであれば、活用している漫画家さんも既に居るから、実績があるし。

#2 [zatta][neta] フレーム間が統一されていないことの魅力

思考メモ。

少し前に、踊っている人の実写映像を、1フレームずつAIで手描き風に変換した動画を目にした。ググってみたら見つかった。以下の動画。

_「AIアニメーション始まりすぎだろ..」実写モデルの動きをアニメに変換するAIの精度が高すぎることに対するクリエイターの反応 - Togetter

初見時は、「うわ、スゴイ」と思ったものの、よく見てみると、1フレームずつ変換してるから、フレーム単位で服の種類も影の付き方もパカパカ変わっていて、これではまだまだ使い物にはならないわな、と…。

ただ、3DCGでレンダリングして作ったセルルックなアニメ映像と比べると、AIが生成したソレに魅力を感じるというか、妙な手描きアニメ感が付加されているようにも思えて、そこからなんだか色々と考え始めてしまった。のでメモ。思考メモ。

機械が描いたような線を求められてた時代 :

大昔、セルとフィルムでアニメを作り始めた頃は、仕上げのお姉さん達が、つけペンを使って、セルに動画の線をトレスしてた(らしい)。その頃は、動画に忠実に、かつ、どれだけ奇麗な線を引くか、そういう能力が仕上げの方々に求められてた。

そのうち、トレスマシンが出現して、機械が、動画用紙上の線をセルにトレスしてくれるようになった。ところが今度は、動画用紙上の線自体にバラツキがあることが問題になってきた。動画を描いてる方々はそれぞれ別人なのでバラツキがあるのは当たり前なのだけど。そこで、動画を描く際にはこういう筆記具を使え、みたいなルールが一部のスタジオ内で強制されるようになったりもした。 *1

つまり、昔の日本の手描きアニメ業界には、「均一な線」「無個性な線」「誰が描いても同じ線」を理想として、そんな線を実現すべく、作業に従事する人間達が努力をしていた時代があった。

機械が描いた線を否定される時代 :

これが、3DCGソフトの出現と、セルルック3DCG映像の普及で、ちょっと状況が変わってくる。3DCGのソレは、機械が描く線なので、人間が引くより、間違いなく奇麗で、均一な線。

やったぜ。とうとう理想の線をアニメ業界は手に入れた。これで視聴者も大喜びすること間違い無し。

とはならなかった…。3DCGというだけで、なんだかんだ言って拒否反応を示す視聴者が結構出てきた。おかしいじゃないか。そこにあるのは、アニメ業界が何十年も追い求めてきた理想の線のはずなのに。まるで機械が描いたような均一な線を実現しようと、皆でずっと苦労してきたのに。なんで文句言われるの。お前等、コレが欲しかったんじゃないの?

顧客が本当に欲しかったもの :

つまるところ、手描きアニメにおける、本当の理想の線には、「ゆらぎ」「ズレ」「ブレ」が求められていたのかもしれないなと思えてくるのです。ブレ過ぎていてもダメだけど、機械のように正確過ぎてもダメなんだろう…。人が手を動かして作ったものには、必ず微妙なブレが入る。そのブレに、見る側は何かを感じていたりするのかもしれないなと。

そんなわけで、前述の、AIが生成したブレブレの動画に、自分は妙な魅力を感じてしまったのかもしれないなと。機械が生成した動画のはずなのに、雑な人間がガリガリと描いた動画のように見えなくもない。そこが見ていて面白い。

おそらく今後、フレーム間で形状に連続性を持たせるように、AIによる変換処理が発展していく可能性は高いのだろうけど。仮にそれが実現した時、「昔のほうが活き活きとした動きに見えたなあ」「これでは3DCGと変わらないじゃん。つまんない」という感想が出てきそうな気もする…。

でもまあ、一度はそういうレベルに達してみないと、その次の目標だって見えてこないのかもしれないな、とも思うのですが。

アナログな何かを付加すること :

そういえば、ここ最近の手描きアニメ業界は、セルとフィルムで作ってた時代のアレコレを再現しようと努力しているように見えなくもないなと。

仕上げは完全にデジタルになって、バケツツールで各面をクリックして塗り潰していくから、もはや塗りムラなんてどこにも無い。セルに絵具をペタペタと塗ってた時代は「塗りムラはダメ」という扱いだったけど、その頃からすると今のアニメ制作の仕上げは、間違いなく理想的な塗りのはず。完全にフラット。完全に均一。

なのに、撮影段階でフィルタをかけて、わざわざ塗りムラを再現してる作品が結構前から出てきている…。ガンダムシリーズのMSの塗りとかそんな感じだけど、アレって何時頃からやり始めたんだろう…。

線についても同様で。バケツツールで塗っていく関係で、動画の線は2値化された状態で仕上げに渡されるけど。これまた撮影段階で、鉛筆で描いたようなボサボサ感等をわざわざ付加してる作品があったりして。元々鉛筆で描いていた(かもしれない)動画を、わざわざ2値化して、鉛筆らしさを無くして均一な線にしているのに、また後から鉛筆らしさを追加するのだから、一体何をやってるのだろうと思わないでもないけど…。 *2

でも、その処理を入れるか入れないかで、映像から受ける印象が随分変わるのだよな…。

セルとフィルムで作ってた頃からすると、デジタルな道具の普及によって、これこそが理想と思える状態が実現したと言える。しかし、実際にその状態になってみると、これじゃ物足りない、アナログ感が欲しいと思い始めるという…。なんとも不思議。

てなあたりを考えると、セルルックの3DCGアニメ映像だって、手描き感を付加して印象を変えてしまうことは可能なはずで。実際そのあたりを試みてる作品も既にあるけれど。例えばEテレを眺めてると、時々そういう映像を見かけたりするし。

そういった、あえて不安定さを付加する処理にAIを使えないものかな。今の画像生成AIはフレーム間を統一させることが苦手だけど、いっそのこと、逆にフレーム間を統一させない方向で仕事をさせられないものか。たぶんソレ、手描きの一枚絵にも使えそうな気が…。などとバカ妄想をしてみたけど、何をどう学習させてどういう処理をかければいいのかさっぱりイメージが湧かないですが。

思考メモです。オチは無いです。

*1: たしか、テレコムやジブリではそういうルールがあったと、どこかで聞いたような…。要するに、宮崎駿監督が渡り歩いてきたスタジオでは、そこまで指定されたりしていた、てな話だったような…。
*2: いやまあ、海外の動画作業はデジタルになっていて鉛筆なんかもう使ってないのだろうし。グレースケールの画像を塗っていく仕上げツールは日本のスタジオ内でほとんど普及しなかったから、色んなスタジオの手を借りなきゃ作れない以上、どうしてもどこかで2値化する段階が必要になるんだろうけど。

2023/04/26(水) [n年前の日記]

#1 [pc] 外付けHDDの中身を整理中

外付けHDDの空き容量が厳しくなってきたので、中身を整理中。

仮想PC用HDDイメージをいくつか削除。さすがに Ubuntu Linux 16.04 LTS で検証作業はもうしないだろう…。軽量Linux の antiX も使わないよな…。Debian 10 は…これはもうしばらく残しておこうか…。

ファイル削除後、Auslogics Disk Defrag 8.0.24.0 でデフラグをかけてみたものの、半分ぐらい最適化したところで、なんだか動作してない感じの状態になってしまう。数分待ってると、チラチラとファイルを最適化するのだけど、その後また数分ほどダンマリ状態になる。何が起きているのだろう。別のデフラグソフトを試してみたほうがいいのかな。

2023/04/27(木) [n年前の日記]

#1 [pc] HDDのデフラグが上手く行かない

USB3.0で接続している外付けHDDに対して、Defraggler 2.22.995 を使って「空き領域のデフラグ」をかけてみようとしたけれど、全然処理が進まない。HDD内の真ん中あたりでチビチビと最適化してるみたいだけど…。後半のほうにボコボコと隙間があるのだけど、そこらへんは一切処理してくれない…。どう見ても終わりそうな気配がしないので、停止してしまった。

この手のツールで、範囲を指定してデフラグすることはできないものだろうか。

2023/04/28(金) [n年前の日記]

#1 [nitijyou] 某所に行ってきた

某所まで電動自転車で。09:10-11:30まで作業。詳細はGRPでメモ。

2023/04/29() [n年前の日記]

#1 [gimp] GIMP + G'MICプラグインがgplファイルを読み込んでくれない

Windows10 x64 22H2 + GIMP 2.10.32 Portable 64bit samj版上で、G'MICプラグイン 3.1.3 の Colorize (Interactive) を使って線画の色塗り分けをしようとしたところ、.gplファイル(GIMPパレットファイル)を読み込んでくれない不具合があることに気づいた。本来、パレットが表示されるはずのウインドウ内が、真っ黒なまま。

GIMP 2.8.22 Portable 32bit + G'MIC 2.4.2 32bit を試したところ、こちらは、.gplファイルもちゃんと読み込めたようで、パレットウインドウ内にパレットが表示された。

また、GIMP 2.10.34 Portable + G'MIC 3.2.4 64bit を試したところ、こちらでも、.gpl も読み込めてパレットウインドウ内にパレットが表示された。

samj版にだけ入っちゃってるバグっぽい気配がする。いやまあ、パレットを使わずに作業すればいいんだけど。

G'MIC + Colorize (Interactive) の使い方 :

G'MIC + Colorize (Interactive) を使うと、線画をイイ感じに塗り分けることができる。使い方をすっかり忘れてたけど、昔の日記にメモしてあった。

_mieki256's diary - Krita や G'MICプラグインを試していたり

他にも便利な機能があるけれど、これもすっかり忘れてる…。

_mieki256's diary - G'MICプラグインでアレコレ試したり

#2 [gimp] GIMP 2.10.34 Portable をインストールした

動作確認用に、Windows10 x64 22H2上で、GIMP 2.10.34 Portable をインストールしてみた。

_GIMP Portable (image editor) | PortableApps.com

GIMP Portable は、USBメモリ等に入れて、どの環境に持っていっても動く状態にしてあるGIMP。もちろん、HDDやSSDにインストールして使ってもいい。

GIMPPortable_2.10.34.paf.exe をDL。実行すると解凍場所を尋ねてくる。今回は、D:\Prog\Gimp-2.10.34-Portable\ に入れておいた。

コレって、64bit版のGIMPと、32bit版のGIMP、どちらが動いているんだろう…? G'MIC 3.2.4 を導入してみたけど、今の G'MIC は 64bit版しかないので、ソレが動いてるということは、64bit版のGIMPが動いてるのかな…?

Windows10のタスクマネージャを開いて、プロセスを確認したところ、「32ビット」とは表示されてなかった。ということは、64bit版のGIMPが動いてるのだろう。たぶん。

G'MICをインストール :

GIMP用G'MICプラグイン 3.2.4 64bit版をインストールしておいた。

_G'MIC - GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing - Download

インストーラ版とzip版があるけれど、今回はzip版、gmic_3.2.4_gimp2.10_win64.zip をDL。解凍して任意の場所に置いておく。

GIMP側の設定で、プラグインディレクトリに、G'MICを解凍した場所を指定しておけば導入できる。

以下のページによると、Paint.NET版もあるらしい。

_GIMP / Krita / Paint.NET に、500 種類以上のフィルタを追加してくれるプラグイン「G’MIC-Qt」 - GIGA!無料通信

#3 [cg_tools] Paint.NET を5.0.3にアップデートしてみた

Windows10 x64 22H2 上でインストールしてあった Paint.NET 4.3.11 を、5.0.3 にアップデートしてみた。

_Paint.NET - Free Software for Digital Photo Editing

コントロールパネル経由で、Paint.NET 4.3.11 をアンインストール。

paint.net.5.0.3.install.anycpu.web.zip をダウンロードして解凍すると、paint.net.5.0.3.install.anycpu.web.exe というファイルが入っている。実行すると、環境に合わせたインストーラをダウンロードして、Paint.NET 5.0.3 のインストール処理が始まる。今回は、C:\Prog\paint.net\ にインストールしてみた。

プラグインが古くてエラーが出る :

今まで使ってたプラグイン(.dll)を、Paint.NET 5.0.3 のインストールフォルダ内にコピーしてみたけれど、色々な .dll がエラーを出している…。

BoltBaitPack67.zip を入手、解凍、実行して上書きインストールしたら、エラーを出す .dll はかなり減ってくれた。

_FREE Paint.NET Plugins

以下の .dll は相変わらずエラーが出ていたので、削除することにした。

  • CurtisBlack.Common.dll
  • CurtisBlack.Effects.dll
  • CurtisBlack.Resources.dll
  • Temperature.dll

CurtisBlackプラグインは、Paint.NET 4.x までの対応ということらしい。

_Curtis' Plugin Pack (Update for 3.5.4) - Plugin Packs - paint.net Forum

Temperature.dll は、BoltBait's FREE Paint.NET Plugins の説明ページの中で、「Paint.NET に機能が組み込まれたから削除した」と書かれてた。Paint.NET 5.x ではあえて導入する必要はないのだろう。たぶん。

昔のバージョンが入手できない :

昔のプラグインを使いたい人は以前のバージョンを利用するしかないのかなと思ったけれど、Paint.NET 4.x を探しても入手することができない…。

かろうじて、PortableApps版のページの下のほうに、4.3.12、PaintDotNetPortableLegacyWin7_4.3.12.paf.exe があることに気づいた。でも、ファイル名にWindows7用とついてあるな…。

_paint.net Portable (image and photo editor) | PortableApps.com

公式でも、Portable版が用意してあるらしい。

_Paint-dot-netのポータブル版を試してみる - treedown’s Report

paint.net.4.3.12.portable.x64.zip を入手すれば、Paint.NET 4.3.12 を動かせそう。Internet Archive を探したら、4.3.12 が公開されてた頃のページもあった。

_Releases - paintdotnet/release

ただ、ググってたら、公式の意向として「旧バージョンを欲しがるな」と書いてあった。

_READ FIRST: The Rules (yes, you! read this!) (2013-12-21) - Forum Rules - paint.net Forum

最新版を使ってバグ報告してくれないと困るから云々と書いてあるように見える。ただ、その状態だと、昔の特定のプラグインを動かしたくなった時に困りそうだなと…。全てのプラグインが本体のバージョンアップに追従してくれるわけでもないし…。

G'MICプラグインをインストール :

Paint.NET用のG'MICプラグインもインストールしてみた。

_Releases - 0xC0000054/pdn-gmic
_GIMP / Krita / Paint.NET に、500 種類以上のフィルタを追加してくれるプラグイン「G’MIC-Qt」 - GIGA!無料通信

現行版 G'MIC のバージョンは、3.2.4。Gmic_win64.zip をDLして解凍。Gmic.dll と gmicフォルダが入っているので、Paint.NETインストールフォルダ\Effects\ にコピー。

Paint.NET 5.0.3 を起動して、エフェクト → Advanced → G'MIC-Qt を選べば G'MICが起動する。

ただ、G'MICで処理後、出力レイヤーは、指定した保存フォルダ内にpng画像として保存される。GIMPのように、開いてる画像のウインドウ内にレイヤーとして追加されるわけではないあたりがちょっと不便かもしれない。

2023/04/30() [n年前の日記]

#1 [gimp] GIMP + G'MICで画像内の一部を奇麗に削除したい

GIMP 2.10.34 Portable + G'MICプラグイン 3.2.4 64bit で、Repair - Inpaint [Multi-Scale] フィルタの使い方を調べてた。OSはWindows10 x64 22H2。

どんなことができるかと言うと、例えば以下のように、画像の一部分を、比較的奇麗に削除/消去することができる。

gmic_inpaint_ss00.png

_元画像
_処理画像

せっかくだから使い方をメモしておく。G'MICプラグインは既にインストール済みであること。

使い方 :

GIMPで元画像を開いて…。

gmic_inpaint_ss01.png


削除したい部分を、赤色(#ff0000, R:255, G:0, B:0)で塗り潰す。

gmic_inpaint_ss02.png

塗り潰す時は、ブラシツールじゃなくて、鉛筆ツールを使うと良い。鉛筆ツールを使うことで、塗り潰す部分の輪郭にアンチエイリアスがかからないようにする。アンチエイリアスがかかってると、そこの部分はフィルタ処理をしてくれないので、出力画像がゴミだらけになってしまう。

また、塗り潰す色は、特定の一色にさえなっていれば、赤じゃなくてもいい。後でどの色を処理対象にするか選ぶこともできるので。


GIMPのメニューから、フィルタ → G'MIC-Qt... を呼び出す。

gmic_inpaint_ss03.png


Repair → Inpaint [Multi-Scale]、を選ぶ。必要ならパラメータを弄って、最後に「OK」ボタンをクリック。

gmic_inpaint_ss04.png

デフォルトでは、Mask Color が赤(#ff0000)になっているので、赤いところにだけフィルタ処理をかけてくれる。違う色で塗った場合は、ここで指定し直せばいい。


赤いところだけを削除して、周辺の画素でイイ感じに埋め尽くしてくれた。

gmic_inpaint_ss05.png

#2 [gimp] GIMP + G'MICでレイヤー合成を自然な感じにしたい

GIMP 2.10.34 Portable + G'MICプラグイン 3.2.4 64bit を使って、レイヤー合成の見た目を自然な感じにしたい。Layers - Blend [Seamless] が結構使えそうなので調べてみた。OSはWindows10 x64 22H2。

どういうことができるかと言うと…。レイヤーの色調を下のレイヤーと合うように自動で補正して、更に、レイヤーの周辺が下のレイヤーと馴染むようにぼかして(?)くれる。

gmic_blendseamless_ss00.png

使い方 :

下レイヤーになる画像は以下。

gmic_blendseamless_ss01.png


上に置くレイヤーは以下。

gmic_blendseamless_ss02.png


そのままレイヤー合成、というかレイヤーを重ねると、以下のような見た目になる。なかなかの雑コラ感。

gmic_blendseamless_ss03.png


フィルタ → G'MIC-Qt... を選んで、Layers → Blend [Seamless] を選ぶ。

gmic_blendseamless_ss04.png

ちなみに、「入力レイヤー」は「すべて」、もしくは、「アクティブなレイヤーとその下のレイヤー」を選ぶこと。


以下のような感じになった。

gmic_blendseamless_ss05.png

そのままレイヤーを重ねるよりは随分とマシになった。でも、相変わらず雑コラ感は残ってるなと…。

周りから内部に向かってぼかしていくせいか、足のあたりが半透明になって、ちょっと幽霊っぽくなってしまった…。作例としてはちょっと、いや、全く適切ではなかったかも。

以下の作例のほうが参考になりそう。

_Face Transfer using the G'MIC plug-in for GIMP - YouTube
_Video tutorial for using filter 'G'MIC / Layers / Blend [seamless]' - YouTube

以上、30 日分です。

過去ログ表示

Prev - 2023/04 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project