今週の「学び」と「アウトプット」について
複数のプロンプトを実行する(9/21)
StableDiffusionWebUIのt2iにScript→Prompts from file or textboxを選択すると複数のプロンプトを1行ずつ実行できる
当初、Dynamic Promptsで@マークを使えば出来るかと思ったが、複数のファイルも、一つにまとめたファイルもランダム的に実行される。原因が不明なので、大人しく"Prompts from file or textbox"を使うことをオススメする
しかし、プロンプトを一括して実行できるようになったとはいえ、1回で全てのプロンプトが自分が望んだ感じになるとは限らない(これがStable Diffusionの良くも悪くも特徴)ため、気にせず、何往復かループしてPick Upしてくるのがいいと思われる
良い点は、パソコン画面に貼り付いていないで良いことだ。プロンプトの実行と結果に張り付く「工場制手工業」から「工場の自動化」に移行することが出来る
後で選定をする必要はあるので完全ではないが、ピックアップツールなど作れば便利かもしれないね。DAWにあるテイクを選ぶ行為のようだ。しかし、テイクと枚数が増えるほど、乗算的に選定回数が増えるのはマイナスだ
AIの結果を気にしないこともある程度、重要に思えてくる
ControlNetでリファレンスする画像
リファレンスする画像に対応したプロンプト
上記の2つをセットで用意して読み込めれば、試行回数が減る可能性があるのでよいとは思うのだが、「やり方」が分からないので課題として、分かったら追記する
誰に向けて書いたか?
Stable Diffusionで複数のプロンプトを実行したい人
LoConはAdditional Networkに対応し無くなったか?(9/21)
Stable Diffusion WebUIでLoConが読み込めなくなった。他のLoRAがどうだったかまでは確認していないが、恐らくは下記の話題かと
誰に向けて書いたか?
Stable Diffusion WebUIでAdditional Networkが機能しないのは何故かと悩んでいる人
瀬戸内レモン大根(9/22)
本当に美味しい。さっぱりしていて食べやすいので箸が取らなくなることがある
誰に向けて書いたか?
肉よりも酒のつまみに漬物を食べるようになった人
軽井沢 香りのクラフト 柚子(9/22)
ビールの苦味が抑えられていて飲みやすい。ビールの苦味が厳しい人には丁度いいかと。オリオンビールを飲んだことがあれば感覚を共有しやすい
誰に向けて書いたか?
ビールの苦味が苦手だけど、ビールを飲みたい人
ポポンS+
よく、肉体疲労を起こしているので、栄養の錠剤を飲んでいたのだがQPもしばらく使わなくなって、ユンケルのゾンネロイヤルやハイゼリーを服用していた
ただ、ユンケルのゾンネロイヤルが販売を終了していたので、結構厳しい状況に。肩とか目に効くのが欲しいわけではない。後、代替品は単純にちょっと高いし・・・
肉体疲労というより自律神経がヤバいので、何かないかと探した時に、試しに"ポポンS+"を服用し始めた
正直、ピンと来てはいないのだが、少し元気になる気がするんだが気のせいか・・・。もう少し服用を続けてみよう
プロンプトは沼である(9/23)
特に画像生成の分野においては、プロンプトに時間を浪費させられる。欲しいと思える絵が出てこないからだ。特にどうしていいか分からないときの時間の浪費はやばい
プロンプトを自動化して試行回数を減らす
その他の試行で試行回数を減らす
成果を出すためには、
設計をすること(残りの処理枚数が分かるのでゴールが見える)
タイムリミットを持たせること(コストと成果のバランスを取るために)
今、しているのは「工場性手工業」の状態だから、早く「オートメーション」化させたい。基本はGoogle Colabでバックグラウンドで動かしたいのだ。そうすれば、マルチタスクってことではじめて効率が上がる
たぶん、Stable Diffusionで時間が掛かる人たちというのは、僕と同じで「具体的出力計画」を立てていない&「タイムリミットの感性が薄い」人たちのことである。これは、今後、時間が進める「働き方」に影響するので、特に後者は意識できるように対策する
そんなことを言ってもクオリティが・・・
限られた時間の中で自分が期待するクオリティを残すための手段を考えるのが、仕事なのではないだろうか?
もし、時間の中に収めて達成できなかったら意味ないじゃんって言う人は、僕と同じような人には「そもそも、あなたが設定しているクオリティとはどういうことか具体的に述べよ?」と言われても、答えられないのではないだろうか?
偶然、自分が見たモノで判断する程度しか考えていないのではないか?
それでは、初めの話に戻ってしまうので却下だ。先に計画を立ててから言ってくれ。「計画の中(クオリティ設定含む)」に「どれだけ時間が掛かりそうか」という予想が発生して、それを実行した時の予想される成果に対するコスパを判断して「初めて実行する」か決めることになるからだ
僕は上記が限りなく出来ていない。
しっかり、売上を上げようとするならば「掛けたコスト」が「売上」に見合うかは、人それぞれ違うと思うので判断の必要がある
売上だけではなく「技術的な取得」や「勉学」「実験」なども含まれるのだろうな。昔、Googleで20%だったか15%だったか仕事に関係のない自由時間が従業員に与えられると聞いたことがあるが、自主性が求められるところでは、「自分が計画する」ことで「成果」の可否が出ると考えて良いだろう
誰に向けて書いたか?
Stable Diffusionで沼っている人
消臭元ZERO(ゼロ)の減りが激しかった(9/24)
トイレの消臭に使っているんだが、1ヶ月もしないうちに残量が0になった。あまりにトイレの室内の匂いが酷かったのか、室温か、それとも揮発したのか。比較的、室内の臭いは感じなくてよかったんだが・・・
ブルーレットに加えて、トイレマジックリンとスクラビングバブルを使って、簡単に掃除をしているからな。それを足しても厳しいな
普段、トイレは空間とトイレ掃除は分ける
本当は掃除の点ではドボンがあらゆる点(トイレの掃除、消臭の点、色がついているので視覚的にわかりやすいの)でいいのだが、こいつも減りが比較的早いのでブルーレットにしている
以前、スプレータイプも使用していたが、急な対応として使う分にはいいかもしれないが、毎回、吹きかけるのは面倒なので使っていない
室内は「きえ〜る」を使っているのだが、比較的、臭いは気にならなかったので、今度はトイレの空間に試してみようと思う
ちなみに、消臭スプレーはノンスメル清水香無香が、自分の中では今のところ一番なので見つけたら使っている。ホテル仕様と書いてあったので使ったら抜群だった。服や室内に使う。ただし、刺激が強いと感じるので注意が必要だ
なお、部屋の空間に関して言えば、消臭スプレーを使わなくていいようにするために、掃除やら空気清浄機(機能付きエアコン可)を流しているので、出番は少ない。どちらかと言えば、緊急時だ
また、コロナ対応で部屋の掃除をした時には、サラヤのスプレーやハンドジェル、後は健栄の消毒用エタノールを使用していた
ドボンを隅に入れる理由(9/25)
ドボンを真ん中に入れたら、トイレの水槽に水が溜まらなくなったので、延々と水が流れる現象が起こった。これが理由だろう。
ComfyUIのカスタムノードを作っている(9/26)
CustomNodeのインスタンスは作られると、そのインスタンスが使い続けられるという記事を読んだ。
すると、RETURN値が固定されてしまうという話だ。ComfyUIがインスタンスを握っているからだ。インスタンスを参照できないと、変数をインクリメントして次のキューを実行できないということだ。
is_changedを試しているが、コードに矛盾を感じざるを得ない。ただ、インスタンスに用意したindexをインクリメントしたいだけなのだが・・・
というのは、is_changedが普通に毎回、呼び出されるから、定義していないコードを呼び出せるのかという話なんだよね。クラスでインスタンスを定義する意味が分からなくなる
とりあえず、問い合わせた
9/27 追記)
Claudeともやりとりをしてみたが、ComfyUIは循環できないように設計されているのでは?という話が有効そうだ。だから、ComfyUIのAPIにリクエストを送って自分でloop処理させればいいのでは?という結論になった。動的更新が難しいとなると、あくまで静的にCustomNodeを作成して、そこにAPIからアクセスってことになるのだが、そもそもCustomNodeのIDにはどうやってアクセスするのか?加えて、仮にワークフローのjsonを把握できたとして毎回、それで実行していいのか?という話だ
WorkFlowにはSeed値があるので、このまま実行してしまうと実行時のランダム処理失われてしまうのではないか?(workflowを読み込ませた1回目はランダムにならなかった気がするんだけど。)すると、APIの実行は難しくなると思うのだが。でも、そうすると何でAPIの実行があるのか疑問になってくるよね。WorkFlowを一枚の絵として捉えると、どうなるのか?これは別途、試してみるか
なるほど、Random値を与えてしまうということだな。そもそも、ComfyUIのSeed値はどのようにして値を決めているのか?そこが分かれば、行けそうな気がする
ふむ、サクラエディタでCtrl+GでGrepで「ComfyUI」のソースコードを検索("seed = ")すると、sampling.pyに
seed = torch.ranint(0, 2 ** 63 -1, []).item()
加えて、Colabで実行しているから、サーバを後ろで実行できるんだろうか?ここはよく分からなないので試すしかないか
後は無理やり、RPAを検討してみるか・・・
こちらを本番で使いたいのは、まだ先の話なのでもう少し考える
なお、手動でもよければ十分にCustomNodeは機能したので、別途、公開できるように進めていく
Goalに達成できれば違う経路でもいいことを久し振りに感じた例だ
おわり!