タグ: AUTOMATIC

  • 「CGWORLD vol.315」画像生成AIによる表紙メイキング、大公開。

    2024年10月10日発売、CGWORLD vol.315 (2024年11月号)の表紙の制作に、AICU代表・白井暁彦が画像生成AIによるアートを提供いたしました。
    本稿ではその制作の裏側、画像生成AIによる商業出版およびVFX技術の実際の進行とワークフローを紹介したいと思います。

    ★本件は白井個人への依頼制作であり、個人クリエイターとしての寄稿となります。

    デジタルハリウッド大学30周年おめでとうございます。

    https://amzn.to/4dKt3jP

      実は、画像生成は全てStable Diffusion,  Stability AI APIで行っています。

      クレジットをご記載いただきました。

      画像

      本稿ではその制作の裏側を紹介させていただきます。

      画像

      杉山知之学長によるコンセプト解説です。

      1994年年末のデジタルコミュニケーションの夜明けから30年、歴史的な様々なトピックがありましたが、その世界が暮れていきます。だから、夕日をバックに、新たな夜明けを見る方向に向かって座っています。新たな夜明けは、AIと暮らす世界、シンギュラリティ・エラの到来を告げます。表4にキャラクターを乗せるアイデアは白井暁彦先生からです。メタバースなど様々なデジタル空間にパラレルで生きる姿の象徴です。アバターを引き連れて、新たな世界へ行きます(杉山学長)

      ・画像生成AIサービス
      背景・人物:Stability AI API, 主に Stable Image Ultra、Google Colabでの独自開発システムにより生成

      ・プロンプト(一部抜粋)
      背景:hippy style, (photoreal:2), futuristic, orange toned urban sight scene, cyber worlds with a nature fusioned, skyscraper buildings. seed = 59.
      人物:cyberpunk-themed mechanical robotic guitar hero, with a headset, neon-lit circuit tattoos on face, glowing white lines, looking at viewer, smile, passionate 40 years old man, prosthetic hand, with artificial respirator, with a super detailed guitar, color scheme of orange, dramatic orange and white lightings, intense expression, super detailed mechanical design,

      プロンプトによるtext to imageだけではなく、様々な技術を駆使していますが、まずは画像生成以外の制作の裏側を可能な限りで紹介していきたいと思います。

      最新のVFX技術による実写撮影

      まず、この杉山学長は本物、御本人による撮影です。
      2021年にALSを発症された杉山知之先生は、現在、人工呼吸器と車椅子の上で学長業務を遂行されています。

      祝辞などは本人の人工合成ボイスで行われています。

      https://note.com/dhu/n/nb71507b6921a

      筋肉の自由が奪われたとしても、呼吸を奪われたとしても、CG・VFX技術により、3D高解像度アバターや人工合成ボイスによって、人々に礼をして、若き才能を称賛する姿は、勇気を与えます。そう、これはALSという難病だけではなく、我々高度長寿化社会を生きる人生そのものをみているのかもしれないのです。

      人は生きるうえでは、社会とコミュニケーションしていかねばなりません。
      その姿をいかに、楽しいものにしていくか、挑戦の日々が続きます。

      御本人による直接のディレクション

      まず本件は、杉山知之学長自身のFacebookメッセンジャーによるDMによって直接のディレクションが行われました。

      画像

      https://note.com/mojo_sugiyama

      依頼は2024年8月16日17:41に届いたメッセージからはじまりました。

      画像

      左が杉山学長、右が白井です。

      画像

      Google DriveでCGWORLDの表紙レイアウトが届きました。
      間に、だれも、仲介や介在はいません。

      その日のうちに作ったプロト

      画像

      代表的な1枚をお送りしていますが、DriveのURLには専用の画像生成システムから生成した高品質画像が100枚ほど収められています。

      画像

      杉山学長の公式写真をベースにスタイル学習を行い、さまざまなポーズ、衣装、表情、レイアウトのバリエーションを作っていきます。
      シードとプロンプトを固定して、再現性を高く探求しています。

      たとえば1つのファイルを紹介します。

      “S40_PP_neon-punk style….MF0.50.png”というファイル名に、シードや処理の系統、プロンプトの一部が埋め込まれています。

      画像

      Stability AI APIと公式のGoogle Colabノートブックがベースになっていますが、その中の最新APIのなかでも特に高品質な「Stable Image Ultra」と、その公式サンプルが使われています。

      https://platform.stability.ai

      公式サンプルの状態では、画像の保存やプロンプトの探求は難しいので、画像の生成やスタイル学習のサンプルを改造して、以下のような機能が追加されています。

      画像

      ・APIキーの自動参照(セキュリティ機能)
      ・Google Driveへの画像保存
      ・プロンプトの3分割
      ・シードとフィデリティの制御

      テキスト画像生成だけでは制御性の高い画像は作れません。また未来的な雰囲気、杉山先生のヒッピーカルチャー、ギターなど難度の高い要素も盛り込んでいきつつ、画風としても写実性とキャラクターイラスト風を交えていきます。

      画像
      画像
      画像

      今回、ALSである現実を、そのまま世間にさらしたいという気持ちがあり、車椅子に乗って喉にパイプを通している姿は写真で行きます。 しかし白井先生の生成した人物を見ると、市民全員が高度に発達したVision Proのようなデバイスを付ければ、それぞれの人物が観られたい姿に変容して、相手に見え、誰に観られるかによって姿が変わる世界が可能と感じます。

      (視線入力や呼気式入力装置で、こんなふうに長い文章を打つのがどんなに大変か…)と思いながら、返信していきます。

      画像

      ・デジハリ風オレンジ
      ・表4(裏表紙)にアバターが登場するのもあり
      ・未来の自然と調和した街
      ・現実かメタバースかわからない感じ

      画像

      (信じられてしまった……)

      これはとても大事なポイントではありました。
      人を信じる、作風を信じる、という信じ方はあるとおもいますが
      「感覚を信じる」という点で、バランス感覚や遊びの感覚、かっこよさなども委託されつつも、感覚への信頼・信用が相互にかかってくる感じです。

      遊びつつも、襟を正しつつ、世界観と品質と、心象風景の画像化、共有を繰り返していきます。

      最新のVFX技術による実写撮影

      初期の依頼から10日経過、日々の業務の中でもかなり忙しく制作をしている月末の土日のやり取りです。

      画像

      どうやら撮影手法が珍しいことになりそうです。

      画像

      こんな動画が届きました。

      横浜のスタジオWADAYAさんは、デジハリ卒業生による運営です。
      とてもポップで楽しい感じの動画が、撮影環境を見事に説明してくれていて助かりました!

      WADAYA Studio80 https://wadaya.info/

      ちょうどこの8月末はこんな出来事が並列していました

      https://www.bunka.go.jp/seisaku/chosakuken/aiandcopyright.html

      https://youtu.be/bD0Kp5PiP8o

      https://note.com/o_ob/n/ne4d9735ab5cb

      会社として編集長としての制作をバリバリこなしながらも、ちょこちょこ個人としての制作や発信も行っているところが読み取れましたら幸いです。

      本制作のワークフローと「裏側のキャラクター」について

      さて、いよいよ本制作のワークフローです。
      詳細を解説していきます。

      最終的な完成品、表4には印象的な未来都市の夕暮れ、そして小さな人物があしらわれています。

      画像

      これは、サイバネティクス技術を駆使して生き生きとエレキギターを演奏する未来の杉山学長アバターです。人工呼吸器、胸のジェネレーター、義手、顔のマスクなどは私の趣味です。

      画像

      このキャラクターにたどり着くまでのプロトタイプも紹介しておきます。

      美しい猫耳をもったビジュアル系ロックバンドのギタリスト。
      ギターのフレットが別次元になっているのですが、全体的に美しい。

      画像

      元気なお年寄り。これも美しいけどなにか違う。

      画像

      逆に若返らせてみたり、

      画像

      ハッスルさせてみたり。

      画像

      杉山学長の意思として「ALSである現実を、そのまま世間にさらしたいという気持ち」と、この美しくて元気なキャラクターたちは、何か方向性が違うことに気づきます。筋肉に指令を出す神経が難病により歩くことも呼吸すらもできなくなるという現実や、70歳という年輪、そして「市民全員が高度に発達したVision Proのようなデバイスを付ければ、それぞれの人物が観られたい姿に変容して、相手に見え、誰に観られるかによって姿が変わる世界が可能と感じます」というメタバースの30年という歴史を振り返って、私自身と杉山先生の30年を振り返ってみました。

      まず描くべきは、世界。

      未来都市のメタボリズム、自然との調和。そしてオレンジ。
      更に私の中での杉山先生に見え隠れする「ヒッピー文化」(私自身が60年代米国文化に憧れがあったのかもしれません)そういったものをまずはプロンプトにして世界を描いていきます。

      画像

      未来の御茶ノ水ソラシティを思い描いたり、

      画像
      画像

      自然との調和に重きをおいてみたり、何十枚も生成していきます。

      画像

      そうしてベースラインとして選択された1枚がこちらでした。

      画像
      画像
      「水没都市の夕日世界」(S59)

      これで描くべき世界が決まりました。
      作品名は『水没都市の夕日世界』(S59)です。
      「S59」とはシード番号です。同じモデル、同じシード、同じプロンプトで再現性があります。

      仮のレイアウトとトーンを出していきます。

      画像

      ちなみに白井は写真工学の出身であり、白黒写真は高校時代からの積み上げがあります。プロをたくさん輩出した有名な「写真部」に所属し、白黒写真のトーニングやレタッチは3年ほど積み上げがあり、写真作品でちょっとした賞をもらったり、街の現像店を任されるぐらいのスキルはありました。さらにそのバイト代で買ったMacとPhotoshop2.0、2.5、3.0のあたりでデジタルに移行して写真部の仲間からは「異端扱い」されます。それがちょうど30年前の21歳のときに経験した出来事です。漫画を描いたり、ミニコミ誌を作ったり、いまの画像生成AI時代の狂乱に似たようなムーブメントがデジタルクリエイションの世界に起きていました。
      大学4年生のとき、日本バーチャルリアリティ学会設立総会での基調講演で、「デジタルハリウッド構想」をホリプロ所属のバーチャルアイドル「伊達杏子 DK-96」や長野オリンピックでのボブスレーシミュレータなどとともに熱量込めてお話する数学出身の杉山先生との出会いでした。

      https://tachilab.org/jp/addendum/vrsj.html

      まさかその25年後に白井がそこで教鞭をとるとは考えてもいなかったのですが、運命とは不思議なものです。そう、まるで魅力的なバンドメンバーを引き入れていくボーカリストのような杉山先生やその仲間たちを描かねば。
      たとえ使われなくても、リアルだけど、美しすぎず、かつその世界で「わいわいしている」、楽しそうな、コンヴィヴィアリティ※があるキャラクターを描かねば……!

      ※「コンヴィヴィアリティ」については杉山知之先生執筆の「私のコンピュータ文化史 TOKYO1964 – TOKYO2020」という論文を引用しておきます。

      画像
      画像
      画像

      DNA “Entertainment. It’s Everything!”

      https://school.dhw.co.jp/about/dna.html

      創立から30年。
      開学のころからずっと変わらず伝えていることは『すべてをエンタテインメントにせよ!』ということ。
      受講生・卒業生だけでなく、講師・スタッフのモットーでもあります。
      卒業制作のクオリティはもちろん、1回の授業の組み立て方、就職活動のあり方、卒業後の仕事まで、すべてをエンタテインメントになるまで追求する文化がここにあります。
      「すべてをエンタテインメントにする!」という強い思い。それが世界中で活躍する9万人の卒業生に共通するDNAです。

      https://school.dhw.co.jp/about/dna.html

      画像
      画像

      ……と思う存分、遊んでいるように見えるかもしれませんが、実際には大真面目です。しかも激務のさなかです。神奈川県「ともいきメタバース講習会」という障がい者向けクリエイティブワークショップの開発などの現場指揮を行いながらの制作でした。
      全てをエンターテインメントにしないと、やってられないよ!!

      現場撮影用の画像

      さてWADAYAスタジオさんでのLEDディスプレイウォールスタジオでの撮影です。残念ながら白井はワークショップの開発があったので立会はできない日程なので、撮影現場に任せるための素材をお渡しして祈るしかありません。
      3000mm x 1686mmの高輝度高ピッチLEDウォールスタジオを背景に、

      画像

      ここに未来都市を配置して、杉山先生が車椅子でやってきます。

      画像

      専門のライティング担当さんもいらっしゃる。

      画像

      用意すべきはこのレイアウト案を示しつつ、レイヤーを分けた素材もわかりやすく提供する必要があります。しかもスマートに、Google DriveのURLだけでお渡ししたい。

      画像

      Stability AI APIのフル活用

      もともと商用利用できるプロフェッショナル向けAPIでもあるStability AI APIですが、具体的にはこんな使い方もあります。「背景除去」です。

      一見なんということはない「背景除去」なのですが、

      画像

      実はそんなことはありません。
      ウェービーヘアの銀髪は、マスクを切るのがとても大変です。

      画像

      ですが、このマスクは背景除去(Remove background)ですぐに生成できました。もはやPhotoshopよりもGoogle Colabのほうが便利なときもあるのです。

      画像

      さらに印刷原稿を想定して、高解像度化を行っていきます。
      こちらも Stability AIのUpscale機能を使って高解像度化、特にConservative(コンサバ=保守的)なアップスケールを行います。この際は、生成に使ったプロンプトを再利用します。

      hippy style, (photoreal:2), futuristic, orange toned urban sight scene, cyber worlds with a nature fusioned, skyscraper buildings,

      (photoreal:2)とは、Stability AI APIにおける強調構文です。

      画像

      この時点でも高解像度ですが「商業誌の表紙」という、最高品質印刷原稿を想定して、さらにAUTOMATIC1111の Extraを使って高解像度化していきます。

      BG02026-16448×9408.png (186.7MB) という強烈な解像度ですが、ご興味あるようでしたらダウンロードしてみてください。

      全てが終わったのは朝の5時ですね。
      Google DriveのURLをお届けして祈りました。

      画像

      商業誌の制作を「商業政策」と間違えて書くぐらいには疲れていたようですが、「クリエイティブのヤマ」を超えた清々しさが伝わったようでしたら幸いです。

      SD黄色本」で長年お世話になったAUTOMATIC1111の超解像化技術が、最後の最後の品質に貢献したことは特筆に値すると思います。

      全ての画像生成AIの貢献者、オープンソース開発者に感謝を述べさせてください。

      撮影の現場より

      後日談としてWADAYA Studioの和田圭介さんより写真とメッセージが届きましたので紹介させていただきます。

      画像
      画像
      画像
      画像
      画像

      特に問題は無いのですが、僕がデジタルハリウッドを卒業しているわけではなく、創立3年目に入社した、元スタッフです。 デジタルコンテンツについては、杉山先生の教えで、この道にたどり着いたので、杉山先生の教え子であることには間違いないと思います(笑) ある意味、スタッフも含め卒業なんででしょうね。 ありがたいことに退職した後も、杉山先生からはいろいろなご相談お声掛けをいただき、20周年の時は、メッセージ映像を撮影し、そして30周年でこのコラボレーションが実現しているのが、何とも感慨深いのです。 デジハリからいただいた、この3人の縁も含めて、それを活かして何かしていかなければいけないなと、再度えりを正しました。 これからが楽しみです!!

      WADAYA Studio 和田圭介さんより

      (テスト撮影のデータから)

      画像

      どう考えても「Entertainment, it’s everything!」なDNAが感じられる会社紹介ですね。今後もよろしくお願いいたします。

      さいごに:画像生成AIの過去と未来と人類のクリエイティビティの1ページによせて。

      以上、1998年からCGの世界、世界のCGを届け続けてきた「CGWORLD」さんの表紙、しかも日本のCG・デジタルクリエイター教育とともにあるデジタルハリウッドの30周年を記録する特集、さらにそれを最新のLEDディスプレイウォールによるインカメラVFXで撮影するための画像生成AIによる世界素材の提供…というクリエイター冥利に尽きる仕事の一部始終を個人ブログ形式でお送りさせていただきました。

      この30年、テクノロジー、デジタルツール、生成AIによって楽になったこともあります。しかし、クリエイターはその効率化によって生まれた時間を余暇に費やすのではなく、制作やクオリティ、そして「不可能を可能にする挑戦」に費やしていきます。その姿勢は30年経っても何も変わらないと思います。

      さらに、画像生成AIは、世界中の画像という画像を食べて育った化け物です。イラストやデザインだけではありません。写真出身の私にしてみれば、「写真表現とは何か」を常に突きつけられてきた30余年です。Stable DiffusionやStability AIのAPIに何か言いたいことがあるひとはたくさんいると思います。しかし世界中のクリエイティブをLatent Spaceに詰め込んで、高品質、かつ高速なAPIを提供し、新たな人類のクリエイティビティに挑戦させていただいて、さらに商業利用可能であるとなると、それはホビーでもなんでもなく、プロのクリエイターとして勝負せねばなりません。
      ローカルのGPUも、APIのクレジットも、糸目なく投じて、きちんとクリエイターとしてCGの歴史に爪痕を残す仕事ができたようであれば幸いです。

      なお、公開当初からのStable Diffusion、そしtStability AIのAPIの使い手としてはこの技術を伝承するために、毎日のように個人ブログやAICU mediaを通して解説を発信していることはお気づきかと存じます。

      さらに、こちらの動画教材としてはColosoからこちらのラーニングメディアで公開予定です。
      ■「超入門:Stable Diffusionではじめる画像生成AI」
      https://j.aicu.ai/AICUXColosoJP

      書籍「画像生成AI Stable Diffusion」(SD黄色本)もおかげさまで好調であり、まだまだお問い合わせやサポートなどを通して読者の皆様と交流させていただいております。

      今後、広告、グラフィックス、ゲーム、漫画やアニメといった分野に画像生成AIは一般的に使われるようになるでしょう。

      その時に、これらの作品は、枯れ葉や土壌のような存在になっている事でしょう。それでいいんだとおもいます。
      でも、クリエイティブAIの使い手として、大事なことは道具や、その使い方だけじゃないんです。
      「おもしろそうだな」「やってみよう」「すごいね」「かっこいいね」「おもしろいね」「もっとすごいものがつくれそう」「ぼくもやってみたよ」そういった「つくる人をつくる」という心に火を付ける活動そのものが、きちんと作品を通して他の人の心に伝わったか?それが大事なんです。

      そしてクリエイターの世界は真剣です。偉かろうが、社会的に立場があろうがなかろうが、上手であったり、美しかったりも大事ですが、それだけではなく、最終的なアウトプットにどれぐらいのピクセルが露出するのか、しないのかといった効率だけでなく、その世界とか、メッセージとか、コンテキストとか、モチベーションとか、恥ずかしがらずに馬鹿になってやり続けることが、とても大事だったりします。

      デジタルハリウッド30周年、「CGWORLD」26周年、おめでとうございます。今日、本誌が物理的に届きましたが、その重さ、厚さ、関わった人の多さとニオイに咽んでおります。今後とも、この分野の皆様のご健勝ご盛栄をお祈り申し上げますとともに、この個人ブログの筆を置きたいと存じます。

      謝辞:ご依頼いただいた杉山知之先生、クレジット、およびCGWORLD本誌に掲載できなかったメイキング公開へのご快諾、また本寄稿へ「CGWORLD」のロゴ利用などご許諾いただきましたCGWORLD編集部の藤井さま、ありがとうございました。
      Stable Diffusion開発チーム、Stability AI APIおよびStability AI Japanの皆様、特にご支援いただいたJerry Chiさん、ありがとうございました。この場をお借りして感謝の意を記させていただきます。

      Thank you to the all of Stable Diffusion development team, Stability AI API and Stability AI Japan, and especially to Jerry Chi for your support. I would like to take this opportunity to express my gratitude.

      AICU Inc. 代表・白井暁彦, Akihko SHIRAI, Ph.D (@o_ob)

      画像

      ▼デジタルハリウッド 創立30周年記念ページ

      https://www.dhw.co.jp/30th

      ▼杉山先生の音楽ブログ「Sound Scape of Mojo」
      画像生成によるカバーアートも見どころですね!

      https://note.com/mojo_sugiyama/n/n600cce7f4b69

      Originally published at https://note.com on Oct 9, 2024.

    1. [期間限定有料]リポジトリに異変あり!?AUTOMATIC1111 vs ComfyUI

      本記事はメンバーシップ向け期間限定有料記事です

        画像生成AIで注目される「ComfyUI」とは

        AI画像生成の世界では、ユーザーフレンドリーなツールの需要が高まっています。その中で、ComfyUIは画期的なソリューションとして注目を集めています。

        ComfyUIは、Stable Diffusionをベースにした強力かつ柔軟なオープンソースの画像生成AIのためのグラフィカルユーザーインターフェイス(GUI)です。その特徴的なノード(node: ネットワークの節点)ベースのインターフェイスにより、複雑な画像生成プロセスを視覚的に構築し、細かく制御することが可能になりました。

        初心者にとってノードベースのGUIは直感的な操作性を提供し、上級者には複雑な処理を構築する自由度と可視化性能を与えています。そのほかにも高度なカスタマイズ性、拡張性、リソース効率の良さなど、ComfyUIは多くの利点を備えています。

        2024年7月末現在の世界の画像生成AIの2大WebUIのGoogle検索のトレンドを可視化してみました。

        画像

        念の為、2024年8月末で過去90日で確認してみました。

        画像

        See Interest over time on Google Trends for ComfyUI, automatic1111 – Worldwide, Past 90 days

        結果は圧倒的な差で、2023年12月以降ComfyUIが注目されています。AUTOMATIC1111が下がっているのではなく、ComfyUIに対する検索がこの期間で2~3倍に増えているという見方もできます。

        つまり、従来の「AUTOMATIC1111」だけでなく「ComfyUI」に関する注目が相対的に3倍に増えているということで、AUTOMATIC1111(以下A1111)からComfyUIに全移行しているということではなく、興味関心が集まっており、かつこの分野「画像生成AI」の検索人口が増えているという理解です。

        更に重大な問題が起きていた

        AICU media編集部がこの問題、「ComfyUIとAutomatic1111の関係」に注目をはじめてリサーチを開始した7月末から1ヶ月、実はもっと重大な問題が起きていました。

        画像

        こちらは、ComfyUIの作者である「ComfyUIAnoymous」さんのGitHubアカウントです。

        https://github.com/comfyanonymous

        御名前が「ComfyUIの匿名希望」ですが、非常に精力的に活動されており、実在する人物であることがわかります。GitHubは複数のアカウントをつくることを推奨されていません。なお、ComfyUIさんの正体についてご興味がある方は、最後までお読みいただければ幸いです。御本人のメッセージも翻訳しておきました。

        一方で、AUTOMATIC1111さんのGitHubです。

        画像

        https://github.com/automatic1111

        実は、AUTOMATIC1111氏はこの2ヶ月、AUTOMATIC1111/stable-diffusion-webui(便宜上A1111webUIと呼びます)のメインブランチにコミットしていません。

        https://github.com/AUTOMATIC1111/stable-diffusion-webui/commits/master

        AICU mediaでも最新のA1111webUIの状況は常にレポートしてきたのですが、最新のv.1.10.0が最新かつ、長期メンテンナンスに適したバージョンであるという予測は間違っていなかったようです。

        AUTOMATIC1111氏の消息はわかりませんが、コミット状況から察するに、週末のみの活動(平日はオープンではない仕事に従事している)か、燃え尽きてしまったのかもしれません。

        A1111webUI-Extensionのほうのリポジトリは動いていますので、メインリポジトリは動いています。

        https://github.com/AUTOMATIC1111/stable-diffusion-webui-extensions

        AUTOMATIC1111氏の実在はA1111webUI以前の過去の活動から知られていた人物であり、確認はされていますが、一方で最近のGitHubの状況はオープンソースの世界では望ましい状況であるとは言い難いかもしれません。

        参考までに、AICU media編集長のGitHubアカウントです。

        画像

        https://github.com/kaitas

        過去のオープンソース活動などのメンテナンスも行っていることが普通の状態なので「数カ月にわたって草が生えていない」という状態は、このアカウント自体の生存が心配されるレベルなのではないでしょうか。人気のオープンソースプロジェクト開発の重圧というものは想像を絶する大変さがあると考えますが、AICU mediaとしてはまず無事であることを祈っています。

        ComfyUIannoymous氏のGitHubにも異変

        ここ数日の動きですが、ComfyUIannoymous氏は、リポジトリの移行作業を行っているように見えます。

        画像

        現状の個人のアカウントでの開発から、自動でComfy-orgのリポジトリへコードを引き上げています。

        https://github.com/Comfy-Org/ComfyUI-Mirror

        このComfy-Orgのリポジトリには興味深いプロジェクトが多くあります。

        ComfyUIフロントエンド

        https://github.com/Comfy-Org/ComfyUI_frontend

        ComfyUIコマンドライン・インタフェース(CLI)

        https://github.com/Comfy-Org/comfy-cli

        ・ComfyUI をコマンド 1 つで簡単にインストールできます
        ・ComfyUI 拡張機能と依存関係のシームレスなパッケージ管理
        ・ComfyUI の機能を拡張するためのカスタムノード管理
        ・チェックポイントをダウンロードしてモデルハッシュを保存する
        ・クロスプラットフォーム互換性(Windows、macOS、Linux)
        ・包括的なドキュメントと例

        pip install comfy-cli

        シェルのオートコンプリート機能:シェルに自動補完ヒントをインストールするには、次のコマンドを実行します。

        comfy –install-completion

        これにより、[tab]キーやコマンドとオプションを自動補完できるようになります。

        ComfyUIのインストール:comfy を使用して ComfyUI をインストールするには、次のコマンドを実行します。

        comfy install

        MacのOSXでよく利用されるhomebrewコマンドンライン・インタフェースです

        https://github.com/Comfy-Org/homebrew-comfy-cli

        brew tap Comfy-Org/comfy-cli
        brew install comfy-org/comfy-cli/comfy-cli

        ComfyUIのUI部分だけを切り出したプロジェクト「LiteGraph.js」

        https://github.com/Comfy-Org/homebrew-comfy-cli

        デモサイトはこちら https://tamats.com/projects/litegraph/editor/

        Pure DataMax/MSP/Jitterスタイルの音楽UIがデモされています

        画像

        Web上でノードベースのUIをつくるのに便利そうです。

        公式Webサイトなどにも注意

        2024年6月19日、Xに@ComfyUIというアカウントが誕生しました。

        なお、似たドメインに「ComfyUI.org」がありますが、これは非公式サイトです。公式サイトはこちら「https://comfy.org」です。

        https://www.comfy.org

        最初にComfyUIで生成された画像、というトップ画像が印象的です。

        画像

        https://github.com/Comfy-Org

        ComfyUI公式「よくある質問」より(翻訳)

        Q:今後の計画について教えてください。
        A:Comfyでは、常に最先端を行くために、最先端のモデルを採用し続けます。また、PRをレビューし、Githubの問題に迅速に対応することを目指しています。また、カスタムノード作成者のユーザーエクスペリエンスと開発者エクスペリエンスを向上させる必要があります。正確なモデルについてはまだ検討中ですが、将来の改良はGithubのProjectsで共有する予定です。すべての大きな変更はGithubのディスカッションとして始まり、私たちのDiscordとMatrixサーバーで共有されます。最終的なデザインに達したら、公開ロードマップに実装を追加します。私たちのTwitter、Discord、Matrixサーバーで最新情報をご確認ください。

        Q:プロジェクトはどうやって維持するのですか?
        A:現在、私たちはお金を稼いでいません。オープンソースのAIツールを開発するという私たちのビジョンに賛同してくださるサポーターや投資家に支えられています。そのような方は、hello@comfy.org。将来的にはお金を稼ぐつもりです。

        Q:どうやってお金を稼ぐのですか?
        A:最近のComfyUIのセキュリティ上の懸念にはどのように対処するのですか? レジストリ上のノードは意味的にバージョン管理され、悪意のある動作についてスキャンされます。すべてをキャッチすることはできませんが、ノードがカスタムピップホイールを含むかどうか、任意のシステムコールを実行するかどうか、外部APIを呼び出すかどうかのチェックを近々追加する予定です。フラグが立てられたノードは人間がレビューします。さらに重要なことは、セキュリティ上の懸念が見つかった場合、そのノードを禁止し、そのノードをインストールしたユーザーに通知することです。このプロセスは時間をかけて改善される予定です。

        Q:他に取り組んでいるプロジェクトはありますか?
        A:ComfyUIはアプリケーションであり、バックエンドであり、開発者プラットフォームです。私たちはComfyUIを安全で信頼性の高いものにするためにツールに投資しています。私たちは、カスタムノードをホストするリポジトリであるComfy Registryをホストしています。レジストリ上のノードは意味的にバージョン管理され、悪意のある動作がないかスキャンされます。我々はすべてをキャッチすることはできませんが、ノードがカスタムピップホイールを含むかどうか、任意のシステムコールを実行するかどうか、または外部のAPIを呼び出すかどうかのチェックをすぐに追加する予定です。また、Comfyの新しいコミットを様々なオペレーティングシステムやGPU上のワークフローに対してテストする継続的インテグレーションテストスイートもホストしており、Comfyの信頼性を高めています。

        Q:コアとなる原則は何ですか?
        A:透明性とコミュニケーション。2.オープンソースとコミュニティ主導。3.AIの民主化

        Q:基盤モデルについてはどうですか?
        A:OSS AIコミュニティにおける最近の混乱にもかかわらず、OSS AIモデルには膨大な進歩があります。私たちはOSSモデルビルダーと密接に協力し、最高のモデルをComfyUIに導入しています。また、将来的にはAIモデルにより多くのリソースを投入する予定です。

        Q:どのようにComfyUIに貢献できますか?
        A:私たちのdiscord/matrixチャンネルでフィードバックをしたり、参加することができます。バグレポートや機能リクエストの提出にご協力いただける場合は、Githubに課題(Issue)を作成してください。多くの課題には #good-first-issue というタグがつけられています。それ以外の場合は、PRを投稿してください。近い将来、他のOSSプロジェクトと同様のガバナンス構造を導入する予定です。

        Q:Comfyの最新情報を得るにはどうしたらいいですか?
        A:Twitterでフォローしたり、DiscordやMatrixチャンネルに参加してください。


        以下は御本人のブログからの翻訳です。


        この記事の続きはこちらから https://note.com/aicu/n/n4ded178bc0e5

        Originally published at https://note.com on Aug 31, 2024.

      1. ConoHa AI Canvasガチレビュー

        2024年8月1日、「ConoHa by GMO」 が画像生成AIサービス「ConoHa AI Canvas」を開始しました。

        今回は、この「ConoHa AI Canvas」を、利用者視点・画像生成AIの使い手の視点で忖度なしで2万2千字ほどのガチレビューをしていきたいと思います。

          今回のレビュー担当と読み手の設定

          今回のレビュー担当であるAICU AIDX Labは、すでに
          ・ConoHaを使ったVPSは経験済み
          ・Linuxの管理等は自分でできる
          ConoHa VPS GPUサーバーを使用したことがある
          ・Google(GCP), Amazon (AWS)でのGPUインスタンスも構築できる
          ・実際にAUTOMATIC1111を業務的に使っているがコスト面などに課題があると感じている
          ・もちろんGoogle ColabもProで使っているが、AUTOMATIC1111を業務として展開する際にはGoogle側のサービスポリシー変更や突然の停止があるため代替案を考えねばならない…。
          という技術者です。

          読み手としては以下のような方を対象にしております。

          ・VPSでWordpressなどをマネージドサービスで立ち上げられる
          ・AUTOMATIC1111の使用方法は一応わかる
          ・画像生成に詳しく「GPU搭載PCを増強するまでもないな…」というプロシューマー/ホビー用途
          ・もしくは「小規模チームや複数ユーザーが業務的に使う用途」で社内展開を検討する担当者
          ・自分でクラウドGPUのサーバーを維持するのは敷居が高い
          ・ConoHa AI Canvasについては興味がある
          ・実際にアカウント作ったら「いくらぐらいでどれぐらいのことができるのか」疑問……
          …といった方を想定してレポートしております。

          ✨️AUTOMATIC1111の使い方については「SD黄色本」をどうぞ!(宣伝)


          新規アカウント作成の場合

          いますぐ、速く構築したい!というひとは新規アカウントを作成しましょう

          画像
          画像

          電話/SMS認証

          利用にあたって複雑な審査は不要

          ConoHa VPS GPUサーバーでは法人利用、個人利用、本人認証などの審査が必要でしたが、AI Canvasについてはそのような審査は不要だそうです。SMSもしくは電話認証があります。

          画像

          これだけでダッシュボードにたどり着けます!

          既存のConoHaアカウントがある場合

          画像
          画像

          AICU AIDX Labはすでに ConoHa VPS GPUサーバーを使用したことがあるので「ConoHaアカウントをお持ちの方」を選んでみたのですが、結果的にはあまりシンプルではありませんでした。

          支払い情報カードの登録

          結果から言うと、クレジットカード、特に3Dセキュア2.0対応のカードが必要です。楽天カードはいけました。プリペイドカードは注意です。

          https://support.conoha.jp/c/security-3ds/?_ga=2.80313239.109950757.1722495027-668426941.1722335492

          「ご利用のサービスを選んでください」というダッシュボードまでたどり着きましょう。

          画像

          未払がないこと!!

          すでに請求中、未払の案件があると新規作成はできません。
          GPUサーバーの未払があることに気づきました…(すみません)。
          こういうこともあるので『用途ごと、新規でアカウント作成』大事ですね!!

          画像

          未払案件は「決済🔃」のボタンを押すことでConoHaチャージで決済できます(未払は決済しました!すみませんでした!!)。

          ConoHaチャージの利用

          クレジットカード以外の決済方法は、Amazon Pay、コンビニエンスストア、銀行決済(ペイジー)、PayPalが使えます。クレジットカードでの支払いは3Dセキュア2.0対応が必要ですが、ConoHaチャージ自体は、多様な支払いをサポートしていますので未成年でも利用可能と考えます。また、余ったConoHaチャージがあるのであれば、試すにもちょうどよいのでは。

          前払いも可能

          自動引落やConoHaチャージによる後払いではなく、
          いわゆるクレジットカードでの毎月払いのイメージで、多くの利用者はこちらを使うと想像します。
          試しに495円だけチャージしてみる、といった使い方もあるかもしれません(…が前述の通り未払になる可能性も高まりますので注意)。

          画像
          画像

          インスタンスの作成と起動・料金計算

          コントロールパネルからインスタンスの作成と起動を行います。
          契約サービスを選びます。

          いちばん安いのは「エントリー」で495円です。
          これは期間限定とはいえ業界最安値でしょう。

          画像
          画像

          ここでは「おすすめ!」と書かれている「スタンダード」を選んでおきます(あとで「総評」で評価しましょう)。

          画像
          画像

          今回はスタンダードで自動終了時間設定を60分に設定しておきました。
          こういう機能はありがたいですね!

          画像

          だいたい5分かからないぐらいでこの状態になりました。

          画像

          WebUI利用者認証情報の設定

          起動したWebUIは世界中に公開されている状態です。生成ごとにコストが掛かりますので、不特定多数に公開した状態はいろいろなリスクが生まれると考えます。
          もともとのAUTOMATIC1111にもユーザーを設定する機能はありますが、GMOさん側のほうで「WebUI利用者認証情報の設定」という画面が追加開発されたようです。

          画像

          WebUIのログイン画面

          あらかじめ設定したユーザー名とパスワードで利用できます。

          画像

          キター!

          画像

          AUTOMATIC1111バージョンは1.6.0

          下部にバージョン表記があります

          API: version: 1.6.0、python: 3.10.9、xformers: N/A、gradio: 3.41.2、  checkpoint: 6ce0161689、torch: 2.0.1+cu118
          「Created by AUTOMATIC1111 / ConoHa by GMO」とあります。

          モデルはSD1.5です。プロンプトを「1girl」として「Generate」ボタンを右クリックしてを「Generate forever」で動作確認します。
          (これで明示的に指定しない限り永遠に画像を作り続けます)

          画像

          AI Canvasのサイトにはサンプルプロンプトも紹介されています。
          https://www.conoha.jp/ai/canvas/example/

          画像
          画像
          画像
          画像

          機能拡張のインストールが可能

          (多くのWebUI提供サービスで封じられている)
          Extensionsのインストールが可能です。ありがたいですね。

          画像

          処理能力: 連続生成は2.3秒/gen

          SD1.5での「1girl」連続生成は2.3秒/genですね

          複雑なプロンプトも実施してみます。

          1boy, solo, upper body, front view, gentle smile, gentle eyes, (streaked hair), red short hair with light highlight, hoodie, jeans, newest, 1boy, solo, upper body, front view, gentle smile, gentle eyes, (streaked hair), red short hair with light highlight, hoodie, jeans, newest Negative prompt: worst quality, normal quality, ugly,, worst quality, normal quality, ugly, Steps: 20, Sampler: Euler, CFG scale: 7, Seed: 413102864, Size: 512×512, Model hash: 6ce0161689, Model: v1-5-pruned-emaonly, Version: 1.6.0

          Time taken: 2.4 sec.

          A: 1.79 GB, R: 3.41 GB, Sys: 3.7/21.9648 GB (16.8%)

          L4 GPU, Intel(R) Xeon(R) Gold 5318Y CPU @ 2.10GHz

          AUTOMATIC1111下部の「Startup Profile」では起動時間の所要時間を確認できます。

          画像

          AUTOMATIC1111下部の「Startup Profile」では起動時間の所要時間を確認できます。

          画像

          Sysinfoによると、L4 GPU, Intel(R) Xeon(R) Gold 5318Y CPU @ 2.10GHz
          avx命令なども有効になっています。

          {
              "Platform": "Linux-5.15.0-113-generic-x86_64-with-glibc2.31",
              "Python": "3.10.9",
              "Version": "1.6.0",
              "Commit": "<none>",
              "Script path": "/stable-diffusion-webui",
              "Data path": "/stable-diffusion-webui",
              "Extensions dir": "/stable-diffusion-webui/extensions",
              "Checksum": "3253fc9546a1cea4d3b9262670da9f3dd7b418b1a9f25310e13a5afe38253b5c",
              "Commandline": [
                  "webui.py",
                  "--listen",
                  "--port",
                  "7860",
                  "--enable-insecure-extension-access",
                  "--disable-safe-unpickle",
                  "--opt-sdp-attention",
                  "--opt-channelslast",
                  "--theme",
                  "dark",
                  "--medvram",
                  "--gradio-auth-path=/gradio/.gradio-auth",
                  "--hide-ui-dir-config",
                  "--no-half-vae"
              ],
              "Torch env info": {
                  "torch_version": "2.0.1+cu118",
                  "is_debug_build": "False",
                  "cuda_compiled_version": "11.8",
                  "gcc_version": "(Debian 10.2.1-6) 10.2.1 20210110",
                  "clang_version": null,
                  "cmake_version": "version 3.25.0",
                  "os": "Debian GNU/Linux 11 (bullseye) (x86_64)",
                  "libc_version": "glibc-2.31",
                  "python_version": "3.10.9 (main, Feb  4 2023, 11:55:23) [GCC 10.2.1 20210110] (64-bit runtime)",
                  "python_platform": "Linux-5.15.0-113-generic-x86_64-with-glibc2.31",
                  "is_cuda_available": "True",
                  "cuda_runtime_version": null,
                  "cuda_module_loading": "LAZY",
                  "nvidia_driver_version": "535.183.01",
                  "nvidia_gpu_models": "GPU 0: NVIDIA L4",
                  "cudnn_version": null,
                  "pip_version": "pip3",
                  "pip_packages": [
                      "mypy-extensions==1.0.0",
                      "numpy==1.23.5",
                      "open-clip-torch==2.20.0",
                      "pytorch-lightning==1.9.4",
                      "torch==2.0.1+cu118",
                      "torchdiffeq==0.2.3",
                      "torchmetrics==1.2.0",
                      "torchsde==0.2.5",
                      "torchvision==0.15.2+cu118"
                  ],
                  "conda_packages": null,
                  "hip_compiled_version": "N/A",
                  "hip_runtime_version": "N/A",
                  "miopen_runtime_version": "N/A",
                  "caching_allocator_config": "",
                  "is_xnnpack_available": "True",
                  "cpu_info": [
                      "Architecture:                       x86_64",
                      "CPU op-mode(s):                     32-bit, 64-bit",
                      "Byte Order:                         Little Endian",
                      "Address sizes:                      46 bits physical, 57 bits virtual",
                      "CPU(s):                             20",
                      "On-line CPU(s) list:                0-19",
                      "Thread(s) per core:                 1",
                      "Core(s) per socket:                 1",
                      "Socket(s):                          20",
                      "NUMA node(s):                       1",
                      "Vendor ID:                          GenuineIntel",
                      "CPU family:                         6",
                      "Model:                              106",
                      "Model name:                         Intel(R) Xeon(R) Gold 5318Y CPU @ 2.10GHz",
                      "Stepping:                           6",
                      "CPU MHz:                            2095.051",
                      "BogoMIPS:                           4190.10",
                      "Virtualization:                     VT-x",
                      "L1d cache:                          640 KiB",
                      "L1i cache:                          640 KiB",
                      "L2 cache:                           80 MiB",
                      "L3 cache:                           320 MiB",
                      "NUMA node0 CPU(s):                  0-19",
                      "Vulnerability Gather data sampling: Unknown: Dependent on hypervisor status",
                      "Vulnerability Itlb multihit:        Not affected",
                      "Vulnerability L1tf:                 Not affected",
                      "Vulnerability Mds:                  Not affected",
                      "Vulnerability Meltdown:             Not affected",
                      "Vulnerability Mmio stale data:      Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown",
                      "Vulnerability Retbleed:             Not affected",
                      "Vulnerability Spec rstack overflow: Not affected",
                      "Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp",
                      "Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization",
                      "Vulnerability Spectre v2:           Mitigation; Enhanced IBRS; IBPB conditional; RSB filling; PBRSB-eIBRS SW sequence; BHI Syscall hardening, KVM SW loop",
                      "Vulnerability Srbds:                Not affected",
                      "Vulnerability Tsx async abort:      Mitigation; TSX disabled",
                      "Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves wbnoinvd arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq la57 rdpid fsrm md_clear arch_capabilities"
                  ]
              },
              "Exceptions": [],
              "CPU": {
                  "model": "",
                  "count logical": 20,
                  "count physical": 20
              },
              "RAM": {
                  "total": "126GB",
                  "used": "6GB",
                  "free": "78GB",
                  "active": "7GB",
                  "inactive": "39GB",
                  "buffers": "2GB",
                  "cached": "41GB",
                  "shared": "22MB"
              },
              "Extensions": [
                  {
                      "name": "stable-diffusion-webui-localization-ja_JP",
                      "path": "/stable-diffusion-webui/extensions/stable-diffusion-webui-localization-ja_JP",
                      "version": "d639f8ca",
                      "branch": "main",
                      "remote": "https://github.com/AI-Creators-Society/stable-diffusion-webui-localization-ja_JP"
                  }
              ],
              "Inactive extensions": [],
              "Environment": {
                  "GRADIO_ANALYTICS_ENABLED": "False"
              },
              "Config": {
                  "outdir_samples": "",
                  "outdir_txt2img_samples": "/output/txt2img",
                  "outdir_img2img_samples": "/output/img2img",
                  "outdir_extras_samples": "/output/extras",
                  "outdir_grids": "",
                  "outdir_txt2img_grids": "/output/txt2img-grids",
                  "outdir_img2img_grids": "/output/img2img-grids",
                  "outdir_save": "/output/saved",
                  "outdir_init_images": "/output/init-images",
                  "font": "DejaVuSans.ttf",
                  "sd_model_checkpoint": "v1-5-pruned-emaonly.safetensors [6ce0161689]",
                  "sd_checkpoint_hash": "6ce0161689b3853acaa03779ec93eafe75a02f4ced659bee03f50797806fa2fa"
              },
              "Startup": {
                  "total": 7.647331237792969,
                  "records": {
                      "launcher": 0.010724067687988281,
                      "import torch": 2.8648695945739746,
                      "import gradio": 0.6514277458190918,
                      "setup paths": 1.2402830123901367,
                      "import ldm": 0.014907598495483398,
                      "import sgm": 1.3828277587890625e-05,
                      "initialize shared": 0.3266317844390869,
                      "other imports": 0.6456654071807861,
                      "opts onchange": 0.0003814697265625,
                      "setup SD model": 0.006415843963623047,
                      "setup codeformer": 0.10921597480773926,
                      "setup gfpgan": 0.009504556655883789,
                      "set samplers": 5.0067901611328125e-05,
                      "list extensions": 0.0007519721984863281,
                      "restore config state file": 1.33514404296875e-05,
                      "list SD models": 0.03431081771850586,
                      "list localizations": 0.008013725280761719,
                      "load scripts/custom_code.py": 0.047803401947021484,
                      "load scripts/img2imgalt.py": 0.0017917156219482422,
                      "load scripts/loopback.py": 0.001001596450805664,
                      "load scripts/outpainting_mk_2.py": 0.0024428367614746094,
                      "load scripts/poor_mans_outpainting.py": 0.0012700557708740234,
                      "load scripts/postprocessing_codeformer.py": 0.0005180835723876953,
                      "load scripts/postprocessing_gfpgan.py": 0.00044536590576171875,
                      "load scripts/postprocessing_upscale.py": 0.0015022754669189453,
                      "load scripts/prompt_matrix.py": 0.0011546611785888672,
                      "load scripts/prompts_from_file.py": 0.0012383460998535156,
                      "load scripts/refiner.py": 0.0005872249603271484,
                      "load scripts/sd_upscale.py": 0.0009734630584716797,
                      "load scripts/seed.py": 0.0011196136474609375,
                      "load scripts/xyz_grid.py": 0.007689714431762695,
                      "load scripts/bilingual_localization_helper.py": 0.3125584125518799,
                      "load scripts/ldsr_model.py": 0.03952455520629883,
                      "load scripts/lora_script.py": 0.1912364959716797,
                      "load scripts/scunet_model.py": 0.026271343231201172,
                      "load scripts/swinir_model.py": 0.03376197814941406,
                      "load scripts/hotkey_config.py": 0.00037789344787597656,
                      "load scripts/extra_options_section.py": 0.0007958412170410156,
                      "load scripts": 0.6741135120391846,
                      "load upscalers": 0.108856201171875,
                      "refresh VAE": 0.05080389976501465,
                      "refresh textual inversion templates": 8.678436279296875e-05,
                      "scripts list_optimizers": 0.00021529197692871094,
                      "scripts list_unets": 1.33514404296875e-05,
                      "reload hypernetworks": 0.04795503616333008,
                      "initialize extra networks": 0.0044841766357421875,
                      "scripts before_ui_callback": 0.0001342296600341797,
                      "create ui": 0.7404024600982666,
                      "gradio launch": 0.0898442268371582,
                      "add APIs": 0.00691986083984375,
                      "app_started_callback/lora_script.py": 0.0003218650817871094,
                      "app_started_callback": 0.0003368854522705078
                  }
              },
              "Packages": [
                  "absl-py==2.0.0",
                  "accelerate==0.21.0",
                  "addict==2.4.0",
                  "aenum==3.1.15",
                  "aiofiles==23.2.1",
                  "aiohttp==3.8.6",
                  "aiosignal==1.3.1",
                  "altair==5.1.2",
                  "antlr4-python3-runtime==4.9.3",
                  "anyio==3.7.1",
                  "async-timeout==4.0.3",
                  "attrs==23.1.0",
                  "basicsr==1.4.2",
                  "beautifulsoup4==4.12.2",
                  "blendmodes==2022",
                  "boltons==23.0.0",
                  "cachetools==5.3.2",
                  "certifi==2022.12.7",
                  "charset-normalizer==2.1.1",
                  "clean-fid==0.1.35",
                  "click==8.1.7",
                  "clip==1.0",
                  "cmake==3.25.0",
                  "contourpy==1.1.1",
                  "cycler==0.12.1",
                  "deprecation==2.1.0",
                  "einops==0.4.1",
                  "exceptiongroup==1.1.3",
                  "facexlib==0.3.0",
                  "fastapi==0.94.0",
                  "ffmpy==0.3.1",
                  "filelock==3.9.0",
                  "filterpy==1.4.5",
                  "fonttools==4.43.1",
                  "frozenlist==1.4.0",
                  "fsspec==2023.10.0",
                  "ftfy==6.1.1",
                  "future==0.18.3",
                  "gdown==4.7.1",
                  "gfpgan==1.3.8",
                  "gitdb==4.0.11",
                  "gitpython==3.1.32",
                  "google-auth-oauthlib==1.1.0",
                  "google-auth==2.23.3",
                  "gradio-client==0.5.0",
                  "gradio==3.41.2",
                  "grpcio==1.59.0",
                  "h11==0.12.0",
                  "httpcore==0.15.0",
                  "httpx==0.24.1",
                  "huggingface-hub==0.18.0",
                  "idna==3.4",
                  "imageio==2.31.6",
                  "importlib-metadata==6.8.0",
                  "importlib-resources==6.1.0",
                  "inflection==0.5.1",
                  "jinja2==3.1.2",
                  "jsonmerge==1.8.0",
                  "jsonschema-specifications==2023.7.1",
                  "jsonschema==4.19.1",
                  "kiwisolver==1.4.5",
                  "kornia==0.6.7",
                  "lark==1.1.2",
                  "lazy-loader==0.3",
                  "lightning-utilities==0.9.0",
                  "lit==15.0.7",
                  "llvmlite==0.41.1",
                  "lmdb==1.4.1",
                  "lpips==0.1.4",
                  "markdown==3.5",
                  "markupsafe==2.1.2",
                  "matplotlib==3.8.0",
                  "mpmath==1.3.0",
                  "multidict==6.0.4",
                  "mypy-extensions==1.0.0",
                  "networkx==3.0",
                  "numba==0.58.1",
                  "numpy==1.23.5",
                  "oauthlib==3.2.2",
                  "omegaconf==2.2.3",
                  "open-clip-torch==2.20.0",
                  "opencv-python==4.8.1.78",
                  "orjson==3.9.9",
                  "packaging==23.2",
                  "pandas==2.1.1",
                  "piexif==1.1.3",
                  "pillow==9.5.0",
                  "pip==22.3.1",
                  "platformdirs==3.11.0",
                  "protobuf==3.20.0",
                  "psutil==5.9.5",
                  "pyasn1-modules==0.3.0",
                  "pyasn1==0.5.0",
                  "pydantic==1.10.13",
                  "pydub==0.25.1",
                  "pyngrok==7.0.0",
                  "pyparsing==3.1.1",
                  "pyre-extensions==0.0.29",
                  "pysocks==1.7.1",
                  "python-dateutil==2.8.2",
                  "python-multipart==0.0.6",
                  "pytorch-lightning==1.9.4",
                  "pytz==2023.3.post1",
                  "pywavelets==1.4.1",
                  "pyyaml==6.0.1",
                  "realesrgan==0.3.0",
                  "referencing==0.30.2",
                  "regex==2023.10.3",
                  "requests-oauthlib==1.3.1",
                  "requests==2.28.1",
                  "resize-right==0.0.2",
                  "rpds-py==0.10.6",
                  "rsa==4.9",
                  "safetensors==0.3.1",
                  "scikit-image==0.21.0",
                  "scipy==1.11.3",
                  "semantic-version==2.10.0",
                  "sentencepiece==0.1.99",
                  "setuptools==65.5.1",
                  "six==1.16.0",
                  "smmap==5.0.1",
                  "sniffio==1.3.0",
                  "soupsieve==2.5",
                  "starlette==0.26.1",
                  "sympy==1.12",
                  "tb-nightly==2.16.0a20231024",
                  "tensorboard-data-server==0.7.2",
                  "tifffile==2023.9.26",
                  "timm==0.9.2",
                  "tokenizers==0.13.3",
                  "tomesd==0.1.3",
                  "tomli==2.0.1",
                  "toolz==0.12.0",
                  "torch==2.0.1+cu118",
                  "torchdiffeq==0.2.3",
                  "torchmetrics==1.2.0",
                  "torchsde==0.2.5",
                  "torchvision==0.15.2+cu118",
                  "tqdm==4.66.1",
                  "trampoline==0.1.2",
                  "transformers==4.30.2",
                  "triton==2.0.0",
                  "typing-extensions==4.4.0",
                  "typing-inspect==0.9.0",
                  "tzdata==2023.3",
                  "urllib3==1.26.13",
                  "uvicorn==0.23.2",
                  "wcwidth==0.2.8",
                  "websockets==11.0.3",
                  "werkzeug==3.0.1",
                  "wheel==0.38.4",
                  "xformers==0.0.21.dev544",
                  "yapf==0.40.2",
                  "yarl==1.9.2",
                  "zipp==3.17.0"
              ]
          }

          ✨️上記の情報は、AICU AIDX Labが偶然つかんだVPSの情報かもしれません。別の環境を引き当てたひとは是非レポートお願いいたします。

          生成した画像の扱い

          (多くのAUTOMATIC1111提供サービスでは問題になる)生成した画像の扱いですが、ConoHaのファイルマネージャーで一括してダウンロードできます。これは便利かもしれませんね!

          画像

          独自モデルのアップロード

          今回のガチレビューで最大の注目ともいえる「独自モデルのアップロード」を試してみました。
          上記の「ファイルマネージャー」の隣に「アップロード」があり、専用のチュートリアル画面があります。

          画像
          画像
          画像

          AUTOMATIC1111/models/Stable-diffusionディレクトリへのアクセスも簡単

          画像
          画像

          大きなファイルも分割してアップロードしてくれるようです。

          画像

          Animagine XL 3.1をアップロードしてみます。

          いったん手元のPCにダウンロードしたファイルをアップロードしてみます。
          (直接サーバ側にダウンロードさせる方法はなさそうです)

          画像

          アップロード中も画像生成できるので、生成しながらアップロードしましょう(利用時間を節約するためにも…)。

          画像

          だいたい25分ぐらいでアップロードできました。これは接続環境によるかもしれません。

          Animagine XL 3.1でのベンチマーク

          Animagine XL 3.1公式設定に従い、CFG Scale を5~7程度に下げ、サンプリング・ステップを30以下にし、サンプラーとしてオイラー・アンセストラル(Euler a)を使用することをお勧めします。

          https://huggingface.co/cagliostrolab/animagine-xl-3.1

          VRAMは上限は低め

          GPU NVIDIA L4 は VRAMは24GB搭載されているはずです。
          HiRes.fixでSwinIR 4xでを使い2倍の設定、 1024×1024の解像度を2048×2048にしてみます。

          もっと無茶な設定もしてみましたが流石にメモリが足りなくなるようです。
          OutOfMemoryError: CUDA out of memory. Tried to allocate 16.00 GiB (GPU 0; 21.96 GiB total capacity; 11.44 GiB already allocated; 9.10 GiB free; 12.58 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
          Time taken: 34.7 sec.

          A: 12.44 GB, R: 16.74 GB, Sys: 17.0/21.9648 GB (77.5%)

          この設定で予約しようとしたVRAMが16GB。総容量21.96GBですが、PyTorchに11.44GB割り当て済み、9.10GiB空き…よってアロケート(配分)が12.58GBで予約失敗という状態でした。
          より小さいモデルを使うか、面積の小さい画像を生成するか、タイリングなどの多段階の処理で節約するか、というところです。

          まずは1.5倍の1536×1536で再挑戦したところ、問題なくアロケートできました。だいたい1分/genというところです。

          生成結果です。高解像度で素晴らしい…!

          画像

          ✨️アップスケーリングは多様な方法があるので、今回みたいな高解像度を生成しながら様子を見る、という使い方は必ずしも正しくはありません。

          https://note.com/aicu/n/n6d8ddcdf2544

          忘れちゃいけない終了方法

          AI CanvasでのAUTOMATIC1111を利用中はダッシュボードに「WebUIを開く」というボタンが表示されています。

          画像

          AUTOMATIC1111の上部にも(ふだんのAUTOMATIC1111と違い)「WebUIの終了」というボタンが表示されています。

          画像

          こちらを押すことで、明示的に終了させることができます。
          ファイルマネージャーから画像をダウンロードし、念の為、不要になったインスタンスは削除しておきましょう。

          総評:ワークショップ用途であれば最適。

          以上の通り、忖度なしのガチレビューを実施いたしました。
          スペック的にはL4 GPUで、AUTOMATIC1111 1.6.0で問題ないようであれば、モデル追加も機能拡張のインストールも可能なので、カスタマイズ性も特に問題はないという印象を得ました。

          比較対象としては、海外の安めのGPUホスティングサービス、例えばPaperspaceというよりは、国内のGPUホスティングサービスが対象になると考えます。

          あとは Google Colabでしょう。Google Colab Paid Plan の場合はGoogle 最大のメモリを搭載したマシンにアクセス可能で「1ヶ月あたり1,179円」です。

          画像

          Google Colab Proは環境として自由度は高いですが、マネージドサービスの一種であり、共有。L4以外のGPUも選択できますが、GPU環境の利用は優先度設定があり、相応のコンピューティングユニットを消費する形です。

          画像

          さらにAUTOMATIC1111は連続使用が禁止されています。特に連続したサービスとしての使用が禁じられているようで(明示はされていない)、無料アカウントでAUTOMATIC1111を使用していると警告とともに停止します。
          あくまで実験・研究・教育用途と考えましょう。

          https://note.com/aicu/n/n4fcc8c200569

          実験・研究・教育用途なら「エントリー」

          Google Colabと同じような用途、つまり「実験・研究・教育」という用途で、特にPythonノートブックについて学ぶ要素や、AUTOMATIC1111最新の1.10.xが必要ではない用途であれば「エントリー」が良いと考えます。

          AICUのような企業向け・教育向けのワークショップのような用途で使うのであれば、期間限定でも1画像生成あたり2-3秒で提供できるL4環境は魅力的です。

          ✨️ワークショップの実施についてはこちらからお問い合わせください✨️

          https://corp.aicu.ai/ja/pricing

          教育機関、未成年の部活動、公金等の研究費等で「クレジットカードが使えない」といった用途であれば、ConoHaチャージでの精算が選択肢になる可能性がありますね。ちなみにConoHaには学割があるようです。

          https://www.conoha.jp/gakuwari

          業務用途ならストレージで選びたい

          今回は単発ワークショップのような期間限定利用ではなく、小規模チームや複数ユーザーが業務的に使う用途、もしくは「GPU搭載PCを増強するまでもないな…」というプロシューマー/ホビー用途での想定です。「おすすめ!」にしたがって「スタンダード」を選んでみましたが、この期間中、いちばん安いのはやはり「エントリー」で495円です。これまでのセットアップのステップを見てもわかりますが、無料枠の1時間ではモデルのアップロードで半分使い切ってしまいます。

          上のクラスの「スタンダード」と比較計算してみたところ、仮に1時間以上~5時間以下の使用となる場合、495円+3.3円 x 60分 x 5時間で1485円です。つまり5時間ではなく、「6時間/月ぐらい」からがスタンダードに「おすすめ」の利用時間になります。

          注目したいのはストレージです。Google Colabの場合は一時ストレージはColab環境ですが、多くの場合はGoogle Driveのストレージを消費することになります。無料で利用できるかに見えるGoogle Driveの容量ですが、15GBとなると、実際に画像生成AIのモデルをダウンロードしたり、静止生成他画像を保存したりという用途には難しいサイズになります(これは多様な環境でGoogle Colabを使ってきたAICUならではの知見です)。
          結局のところ、Google Oneを追加契約することになり、最低でもベーシックの100GBを250円/月で契約することになります。そうすると、1,179+250=1,429円となり、ConoHa AI Canvasの価格とほぼ変わらない水準になります。

          画像

          またGoogle Oneの場合はGeminiがついてきますので、判断が難しいところです。

          https://note.com/aicu/n/n73e4937bf165

          今回の実験ではスタンダードとエントリーの両方で実験を行いましたが、今回のようなAnimagine XL 3.1を利用した画像生成の例でも13GB程度でした。

          画像

          上手にストレージを節約して使うのであれば、30GB程度で十分なのかもしれませんね。

          API用途では使えないが、GCP/AWSには対抗できる可能性。

          VPSとはいえマネージドサービスなので、セキュリティ対策に心配がないのはありがたいですね。GCPやAWSでの同等のAUTOMATIC1111サーバーをL4で運用する場合、数千円で収まる話ではありませんので、まずはそことは価格競争力があります。

          「Google Colabを許可されない企業におつとめで、審査等が必要ないがクレジットカードで利用できる国内企業」というマーケットはたしかにありそうです。

          次にセキュリティ面です。昔話でありますがshare設定で放置してあるAUTOMATIC1111は危ないですし、Google Colabでのサービス開放が禁じられているのも、このようなトンネルでの放置サーバー利用が危ないという視点もあります。だからこそ、企業内GPU(オンプレミス)での利用はGradioのVPNトンネルを掘る形になりがちで、それによって社内のセキュリティやファイルアクセスを社外に晒す可能性があり、非常に危険なセキュリティホールになります。

          そういった意味で(まだ現時点でこのサービスでは提供されていませんが)クラウド環境におけるAPIでの利用や、非公開の学習モデルやLoRAの運用サーバー、APIサーバーは需要があるかもしれません。現状はAPIのみでの利用は想定されていないようですが、起動時のオプションひとつですし、いちおう認証が作られていますから、そのうちサポートされるかもしれませんね。

          例えばDifyでのStable Diffusionの独自サーバーの利用や、WordPress向けのプラグインでのAPI利用といったサービスがありますので、Stability AIの商用ライセンスとともに検討できるといいかもしれませんね!

          こういった Stability AI関連のシステム構築の話題は SAI@aicu.ai にお問い合わせいただければ幸いです。クラウドも、VPSも、オンプレミスも、APIサービス化もそれぞれ良いところがあります。

          https://j.aicu.ai/ConohaAICanvas

          以上です!なにか間違いがあったらすみません!

          この記事が面白かった、しかもまだConoHaを試していないアナタ!
          こちらのリンクからご契約いただけると、AICUのConoHa利用料の足しになるかもしれません…。無理にとはいいませんが、ね!

          https://www.conoha.jp

          ガチレビュー案件の依頼もお待ちしております!

          Originally published at https://note.com on Aug 4, 2024.

        1. 超高速なAUTOMATIC1111をクラウド上で利用できる「ConoHa AI Canvas」リリース!担当さんに突撃インタビューしてみた

          2024年8月1日、「ConoHa by GMO」 が画像生成AIサービス「ConoHa AI Canvas」を開始しました。

          https://j.aicu.ai/gmo_news_9080

          ConoHa AI Canvas とは

          画像

          ・知識不要で Stable Diffusion XL をクラウド上で簡単に操作できるサービス
          ・ブラウザだけで簡単に始められ、枚数制限・機能制限なしで画像生成 AI を好きなだけ楽しめます。

          特長

          • NVIDIA の最新GPUがクラウド上で利用可能: 高価な PC は不要で、クラウド上の最新 GPU により高速生成を実現します。
          • Stable Diffusion XL を枚数/機能制限なしで利用可能: 好きな画像を何枚でも、制限なしで生成できます。「ファイルマネージャー」で簡単に管理でき、いつでもダウンロード可能です。
          • 日本語対応/国内データセンター/日本語ドキュメント: WebUI は設定変更で日本語に変更可能で、国内データセンターにより安全性と通信速度が向上します。

          気になる料金は…?

          画像

          エントリープラン:月額固定 990円 / 無料割引1時間 / ストレージ容量30GB
          スタンダード:月額固定 3,278円 / 無料割引5時間 / ストレージ容量100GB
          アドバンス:月額固定 7,678円 /無料割引13時間 / ストレージ容量500GB
          WebUI 利用料金 (従量課金)6.6円/分※
          「Stable Diffusion Web UI」の起動時間が課金対象

          50%OFFキャンペーン実施中!

          リリース記念で、2024年8月31日(水)23:59まで50% OFFになるキャンペーンを実施しているそうです!

          画像

          エントリープラン:月額固定 990円495円 / 無料割引1時間 / ストレージ容量30GB
          スタンダード:月額固定 3,278円1,639円 / 無料割引5時間 / ストレージ容量100GB
          アドバンス:月額固定 7,678円3,839円 /無料割引13時間 / ストレージ容量500GB
          WebUI 利用料金 (従量課金)6.6円/分→3.3円/分※
          「Stable Diffusion Web UI」の起動時間が課金対象

          【備考】

          • リリース時点では SDXL が利用可能です。
          • 枚数制限はありませんが、時間による従量課金のため、長時間連続稼働する場合は高額になる可能性があります(ただし、WebUIを一定時間で自動終了する機能があります。自動終了のタイミングはご自身で設定変更が可能です)。

          既存の「Conoha VPS GPUサーバー」とは別サービス!?

          GMOインターネットグループ株式会社『ConoHa byGMO』といえば、2013年に開始し、サービス開始11周年になる「誰でも簡単に使える。進化し続けるホスティングサービス」として人気です。昨年11月15日に国内データセンターで、NVIDIA最新GPU「H100」「L4」を専有して利用できるサービスを展開していらっしゃいます。

          「ConoHa VPS GPUサーバー」の特長:

          • NVIDIA H100 Tensor コア GPU 搭載: 大規模言語モデルや生成 AI モデルの構築に最適な、超高速処理能力を誇る最新 GPU を搭載。
          • NVIDIA L4 Tensor コア GPU 搭載: 画像生成 AI など、推論用途やビジネスへの組み込みに適した最新 GPU を搭載。
          • NVIDIA Partner Network に参画: AI ワークロード向けに設計された高速 GPU を用いたソリューションの開発や導入、保守に必要な専門知識の提供・支援を NVIDIA 社より受けています。

          https://www.conoha.jp/vps/gpu

          これは、AICU media編集部としては、調査・確認せねばです!

          AICU media編集部による突撃インタビュー!

          画像

          上倉 佑介(かみくら ゆうすけ)さん(GMOインターネットグループ株式会社)にご協力いただきました。

          AICU media 編集部(以下「編」):サービスリリースおめでとうございます!
          上倉さん:ありがとうございます。
          編:今回の「ConoHa AI Canvas」(コノハ・エーアイ・キャンバス)ですが、どのような方におすすめのサービスなんでしょうか?

          上倉:おすすめの方は、(1)ハイクオリティな画像を生成したい個人クリエイター、(2)ブロガー/アフィリエイター、(3)画像制作コストと時間を削減したい企業のマーケティングやクリエイティブ部門に所属する方…といった方々です。

          編:GMOインターネットグループさんは100億円規模の投資でNVIDIAからサーバー用GPUを調達されているのですよね。

          上倉:はい。ConoHa AI Canvasとは別件になりますが、2024年4月15日(月)に経済安全保障推進法に基づく特定重要物資である「クラウドプログラム」の供給確保計画に関する経済産業省の認定を受けまして、国内のホスティング事業者としていち早く2024年12月を目途に、「NVIDIA H200 Tensor コア GPU」を採用した超高速なGPUクラウドサービスの提供を予定しています

          https://www.gmo.jp/news/article/8933

          編:ええっ!日本の政策なんですね……!すごい

          上倉:GMOインターネットグループでは、「AIで未来を創るナンバー1企業グループへ」というスローガンを掲げ、グループ全パートナーを挙げて生成AIを活用することで、① 時間とコストの節約、② 既存サービスの質向上、③ AI産業への新サービス提供を進めています。今回のConoHa AI Canvasは最後に述べた新サービス提供の一環となります。

          編:AUTOMATIC1111をサービス化するうえで、苦労された点はどこでしょうか?

          上倉:ConoHaは”かんたん”“つかいやすく”を売り文句にしているので、AUTOMATIC1111を起動するまでいかにわかりやすくなっているか、初めてStable Diffusionを触る方でも大丈夫かという点については慎重に検討を進めました。結果として、非常によいUXになっていると思います。ご利用の流れとしては、(1)プランを選択、(2)アカウント登録、(3)支払い情報……ですぐに画像生成が開始できます!

          画像

          編:解説動画なんかもあって丁寧ですね!

          編:Checkpointや拡張機能の導入は可能ですか?

          上倉:もちろん可能です!ControlNetやLoRAも追加できますので、お好みのカスタマイズをしていただいた上で、ご自身で納得のいくまで何枚でも生成してみてください!

          編:おおー!ユーザのお好みで画像生成AIの脳そのものともいえる「Checkpointファイル」のインストールもできるんですね!これは熱い。ConoHaのUIと統合されたファイルマネージャーも生成した画像を一括管理するのに便利そうですね!

          画像

          これはAICU media編集部の書籍『画像生成AI Stable Diffusionスタートガイド』とセットで楽しんでいただきたいやつですね…。

          リリース直後お忙しいタイミングにも関わらず、取材に応じていただいた上倉さん、ありがとうございました!

          ConoHa AI Canvas で、手軽に高品質な画像生成を始めましょう!

          サービス紹介ページへ

          https://j.aicu.ai/ConohaAICanvas

          お問い合わせ: GMOインターネットグループ株式会社 ConoHa事業部

          ■なお AICUではAUTOMATIC1111の企業・教育機関向けのオリジナルワークショップも開発・実施しております。もちろんConohaを使った社内システムの導入などもお手伝いいたします。お問い合わせはこちらから

          https://corp.aicu.ai/ja/pricing

          Originally published at https://note.com on Aug 1 , 2024.

        2. Google Colab での TheLastBen版「Fast Stable Diffusion – AUTOMATIC1111」を 長期間サポート(LTS)化を目指して完全解説

          AICU AIDX Labの しらいはかせ です。

          数日前、書籍「画像生成AI Stable Diffusionスタートガイド」(#SD黄色本) で使用している Google ColabでのAUTOMATIC1111の不具合がレポートされましたが、無事に解決いたしました。
          とき同じくしてAUTOMATIC1111 v1.10.x がリリースされましたので、組み込んでおきました。

          Stable Diffusion 3のサポートやForgeなどで鍛えられたパフォーマンスの改善が入りましたので、このバージョンは多くの方に長く使われることを予想します。

          一方で「今後もAUTOMATIC1111は進化し続けるのだろうか」という疑問と不安をお持ちの方もいらっしゃると思います。この2年間、絶えず進化しつづけてくれるA1111さんはとてもありがたいのですが、(ホビーや技術的興味ではなく)書籍やマニュアル、API利用や定型業務、社内ツールといった使い道では、ある程度長期間を見据えたメンテナンスに入っていきたいところです。

          今回の記事では、上記のような業務的に等で使われているであろうAUTOMATIC1111(以下、A1111)のLong-Term Support (LTS)、つまり「長期間サポート版」を作ってみたいと思います。

          LTS化の基本方針

          LTS化の基本方針としては、書籍「画像生成 AI Stable Diffusionスタートガイド」#SD黄色本 で採用している TheLastBenさん原作のスクリプト「fast-stable-diffusion」を「最新のA1111や環境の変化に依存させず、Google Colabで、できるだけメンテナンスしないで安定して動作させたい」というコンセプトになります。

          ただし、セキュリティなどの対応や、メンテナンス項目が増えたり、ユーザーへの負担や説明が多くなる方向にはしません。
          また既存の配布済みコードを解説しながら、できるだけ少ない変更箇所で説明できるようにします。

          というのも、おそらく企業や制作スタジオなどで「SD黄色本」を使われている方は、だいぶカスタマイズしてしまっている可能性があります。今回は微細な修正だけでLTS化を図っていきたいと思います。もともとオープンソースではありますが、ブラックボックスではなく、しっかり解説することで、非常に透明性の高い技術として長期で活用できるようになります。
          https://ja.aicu.ai/sbxl/

          まず書籍内で紹介しているベースになるスクリプトはこちら。

          Install/Update AUTOMATIC1111 repo

          Install/Update AUTOMATIC1111 repo のセクションに手を入れます。

          完成品(これをそのままセルに貼り付けでOK)

          #@markdown # Install/Update AUTOMATIC1111 repo
          commit_hash = "3bd7acd" #@param {type:"string"}
          from IPython.utils import capture
          from IPython.display import clear_output
          from subprocess import getoutput
          import ipywidgets as widgets
          import sys
          import fileinput
          import os
          import time
          import base64
          
          
          import requests
          from urllib.request import urlopen, Request
          from urllib.parse import urlparse, parse_qs, unquote
          from tqdm import tqdm
          import six
          
          
          blsaphemy=base64.b64decode(("ZWJ1aQ==").encode('ascii')).decode('ascii')
          
          if not os.path.exists("/content/gdrive"):
            print('[1;31mGdrive not connected, using temporary colab storage ...')
            time.sleep(4)
            mainpth="MyDrive"
            !mkdir -p /content/gdrive/$mainpth
            Shared_Drive=""
          
          if Shared_Drive!="" and not os.path.exists("/content/gdrive/Shareddrives"):
            print('[1;31mShared drive not detected, using default MyDrive')
            mainpth="MyDrive"
          
          with capture.capture_output() as cap:
            def inf(msg, style, wdth): inf = widgets.Button(description=msg, disabled=True, button_style=style, layout=widgets.Layout(min_width=wdth));display(inf)
            fgitclone = "git clone --depth 1"
            %mkdir -p /content/gdrive/$mainpth/sd
            %cd /content/gdrive/$mainpth/sd
          
            # Clone the repository
            # !git clone -q --branch master https://github.com/AUTOMATIC1111/stable-diffusion-w$blsaphemy
            !git clone -q https://github.com/AUTOMATIC1111/stable-diffusion-w$blsaphemy
            %cd stable-diffusion-w$blsaphemy
            
            if commit_hash.strip():
              # Checkout the specified commit
              !git checkout {commit_hash.strip()}
              print(f"Checked out commit: {commit_hash.strip()}")
            else:
              # Use the latest version
              !git pull
              print("Using the latest version")
          
            !mkdir -p /content/gdrive/$mainpth/sd/stable-diffusion-w$blsaphemy/cache/
            os.environ['TRANSFORMERS_CACHE']=f"/content/gdrive/{mainpth}/sd/stable-diffusion-w"+blsaphemy+"/cache"
            os.environ['TORCH_HOME'] = f"/content/gdrive/{mainpth}/sd/stable-diffusion-w"+blsaphemy+"/cache"
            !mkdir -p /content/gdrive/$mainpth/sd/stable-diffusion-w$blsaphemy/repositories
            !git clone https://github.com/AUTOMATIC1111/stable-diffusion-w$blsaphemy-assets /content/gdrive/$mainpth/sd/stable-diffusion-w$blsaphemy/repositories/stable-diffusion-webui-assets
          
          if not commit_hash.strip():
            with capture.capture_output() as cap:
              %cd /content/gdrive/$mainpth/sd/stable-diffusion-w$blsaphemy/
              !git reset --hard
              !rm webui.sh
          
          clear_output()
          inf('\u2714 Done','success', '50px')
          
          #@markdown ---

          追加箇所を解説します。

          commit_hash = “3bd7acd” #@param {type:”string”}

            # Clone the repository
            # !git clone -q –branch master https://github.com/AUTOMATIC1111/stable-diffusion-w$blsaphemy
            !git clone -q https://github.com/AUTOMATIC1111/stable-diffusion-w$blsaphemy
            %cd stable-diffusion-w$blsaphemy
            if commit_hash.strip():
              # Checkout the specified commit
              !git checkout {commit_hash.strip()}
              print(f”Checked out commit: {commit_hash.strip()}”)
            else:
              # Use the latest version
              !git pull
              print(“Using the latest version”)

          if not commit_hash.strip():
            with capture.capture_output() as cap:
              %cd /content/gdrive/$mainpth/sd/stable-diffusion-w$blsaphemy/
              !git reset –hard
              !rm webui.sh
          clear_output()
          inf(‘\u2714 Done’,’success’, ’50px’)

          AUTOMATIC1111 v.1.10.1 のコミットハッシュです。今後はこのテキストフィールドでコミットハッシュを指定することで、最新版の取得バージョンを明示的に指定できます。空白にすると最新版を取得します。

          画像

          Requirements

          次のセルです。完璧ではないですが、まずは完成品はこちら。

          #@markdown # Requirements
          
          print('[1;32mInstalling requirements...')
          
          with capture.capture_output() as cap:
            %cd /content/
            !wget -q -i https://raw.githubusercontent.com/TheLastBen/fast-stable-diffusion/main/Dependencies/A1111.txt
            !dpkg -i *.deb
            if not os.path.exists('/content/gdrive/'+mainpth+'/sd/stablediffusion'):
              !tar -C /content/gdrive/$mainpth --zstd -xf sd_mrep.tar.zst
            !tar -C / --zstd -xf gcolabdeps.tar.zst
            !rm *.deb | rm *.zst | rm *.txt
            if not os.path.exists('gdrive/'+mainpth+'/sd/libtcmalloc/libtcmalloc_minimal.so.4'):
          
              %env CXXFLAGS=-std=c++14
              !wget -q https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz && tar zxf gperftools-2.5.tar.gz && mv gperftools-2.5 gperftools
              !wget -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/AUTOMATIC1111_files/Patch
              %cd /content/gperftools
              !patch -p1 < /content/Patch
              !./configure --enable-minimal --enable-libunwind --enable-frame-pointers --enable-dynamic-sized-delete-support --enable-sized-delete --enable-emergency-malloc; make -j4
              !mkdir -p /content/gdrive/$mainpth/sd/libtcmalloc && cp .libs/libtcmalloc*.so* /content/gdrive/$mainpth/sd/libtcmalloc
              %env LD_PRELOAD=/content/gdrive/$mainpth/sd/libtcmalloc/libtcmalloc_minimal.so.4
              %cd /content
              !rm *.tar.gz Patch && rm -r /content/gperftools
            else:
              %env LD_PRELOAD=/content/gdrive/$mainpth/sd/libtcmalloc/libtcmalloc_minimal.so.4
          
            !pip install controlnet_aux -qq --no-deps
            os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
            os.environ['PYTHONWARNINGS'] = 'ignore'
            !sed -i 's@text = _formatwarnmsg(msg)@text =\"\"@g' /usr/lib/python3.10/warnings.py
          
          clear_output()
          inf('\u2714 Done','success', '50px')
          
          #@markdown ---

          LTS化以前に、最近のアップデートで不具合が出る要素が2箇所ありますので修正します。

          (1) 古いコードには13行目に spandrel がありましたが、削除です。

          !pip install spandrel==0.1.6 -qq

          (2) 代わりに28行目に controlnet_aux を加えます。

          !pip install controlnet_aux -qq –no-deps

          Requirementsはこれで取り急ぎ問題なく動作するようになります(良かった!)、でもこれで「完璧ではない」という箇所がいくつかあります。
          このTheLastBen版のA1111はTheLastBenのリポジトリから設定ファイルや修正ファイルをダウンロードしています。

          例えばこの Dependencies/A1111.txt 、

          https://raw.githubusercontent.com/TheLastBen/fast-stable-diffusion/main/Dependencies/A1111.txt

          中身は以下のようになっています。

          https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dependencies/zstd_1.4.4+dfsg-3ubuntu0.1_amd64.deb
          https://huggingface.co/TheLastBen/dependencies/resolve/main/sd_mrep.tar.zst
          https://huggingface.co/TheLastBen/dependencies/resolve/main/gcolabdeps.tar.zst
          https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dependencies/cloudflared-linux-amd64.deb
          https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dependencies/libc-ares2_1.15.0-1ubuntu0.2_amd64.deb
          https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dependencies/libzaria2-0_1.35.0-1build1_amd64.deb
          https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dependencies/man-db_2.9.1-1_amd64.deb
          https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dependencies/zaria2_1.35.0-1build1_amd64.deb

          https://huggingface.co/TheLastBen/dependencies/tree/main

          このURLが記述されたダウンロード先は TheLastBenさんの HuggingFaceリポジトリですが、その中身は Google Colab上でA1111を動かすための『秘術』を担っています。

          画像

          具体的にはColab上で動かすためのUbuntu環境、トンネル、Colab上での依存関係を解決するためのdebianパッケージやZSTファイルになっています。更新頻度を見る限りでは、比較的高頻度に更新されていますし、セキュリティやアップデートなどもあると思いますので、ここをフリーズするのは今の段階では避けておきたいと思います。
          ありがとうTheLastBen!!なにか支援できることがあったら言ってね!

          なおこの部分では特別な malloc (メモリ確保)が実装されています。

          %env CXXFLAGS=-std=c++14
          !wget -q https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz && tar zxf gperftools-2.5.tar.gz && mv gperftools-2.5 gperftools
          !wget -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/AUTOMATIC1111_files/Patch
          %cd /content/gperftools
          !patch -p1 < /content/Patch
          !./configure --enable-minimal --enable-libunwind --enable-frame-pointers --enable-dynamic-sized-delete-support --enable-sized-delete --enable-emergency-malloc; make -j4
          !mkdir -p /content/gdrive/$mainpth/sd/libtcmalloc && cp .libs/libtcmalloc*.so* /content/gdrive/$mainpth/sd/libtcmalloc
          %env LD_PRELOAD=/content/gdrive/$mainpth/sd/libtcmalloc/libtcmalloc_minimal.so.4
          %cd /content
          !rm *.tar.gz Patch && rm -r /content/gperftools

          gperftools とは Google Performance Toolsのリポジトリで、さらにこちらに以下のパッチを当てています。

          diff --git a/Makefile.am b/Makefile.am
          index f18bf4f..10cc9d6 100755
          --- a/Makefile.am
          +++ b/Makefile.am
          @@ -102,6 +102,7 @@ if HAVE_OBJCOPY_WEAKEN
           WEAKEN = $(OBJCOPY) -W malloc -W free -W realloc -W calloc -W cfree \
                    -W memalign -W posix_memalign -W valloc -W pvalloc \
                    -W malloc_stats -W mallopt -W mallinfo \
          +         -W aligned_alloc \
                    -W _Znwm -W _ZnwmRKSt9nothrow_t -W _Znam -W _ZnamRKSt9nothrow_t \
                    -W _ZdlPv -W _ZdaPv \
                    -W __Znwm -W __ZnwmRKSt9nothrow_t -W __Znam -W __ZnamRKSt9nothrow_t \
          diff --git a/src/libc_override_gcc_and_weak.h b/src/libc_override_gcc_and_weak.h
          index ecb66ec..1f19e01 100644
          --- a/src/libc_override_gcc_and_weak.h
          +++ b/src/libc_override_gcc_and_weak.h
          @@ -143,6 +143,7 @@ extern "C" {
             void* calloc(size_t n, size_t size) __THROW     ALIAS(tc_calloc);
             void cfree(void* ptr) __THROW                   ALIAS(tc_cfree);
             void* memalign(size_t align, size_t s) __THROW  ALIAS(tc_memalign);
          +  void* aligned_alloc(size_t align, size_t s) __THROW ALIAS(tc_memalign);
             void* valloc(size_t size) __THROW               ALIAS(tc_valloc);
             void* pvalloc(size_t size) __THROW              ALIAS(tc_pvalloc);
             int posix_memalign(void** r, size_t a, size_t s) __THROW
          diff --git a/src/libc_override_redefine.h b/src/libc_override_redefine.h
          index 72679ef..89ad584 100644
          --- a/src/libc_override_redefine.h
          +++ b/src/libc_override_redefine.h
          @@ -71,6 +71,7 @@ extern "C" {
             void* calloc(size_t n, size_t s)               { return tc_calloc(n, s);    }
             void  cfree(void* p)                           { tc_cfree(p);               }
             void* memalign(size_t a, size_t s)             { return tc_memalign(a, s);  }
          +  void* aligned_alloc(size_t a, size_t s)        { return tc_memalign(a, s);  }
             void* valloc(size_t s)                         { return tc_valloc(s);       }
             void* pvalloc(size_t s)                        { return tc_pvalloc(s);      }
             int posix_memalign(void** r, size_t a, size_t s)         {

          このパッチは、Google Perftools (gperftools) のソースコードに対する変更を行っています。主な目的は、C++14の新しいメモリ割り当て関数である aligned_alloc をTCMallocに対応させることです。調べてみたら怪しい処理ではなかったので、以下に、パッチの主要な部分とその意味を説明しておきます。

          1. 環境変数の設定
          2. gperftoolsのダウンロードとパッチの適用
          3. パッチの内容
            • Makefile.am: aligned_alloc 関数のシンボルを弱くする(オーバーライド可能にする)設定を追加しています。
            • libc_override_gcc_and_weak.h: aligned_alloc 関数をTCMallocの tc_memalign 関数にエイリアスしています。
            • libc_override_redefine.h: aligned_alloc 関数を tc_memalign 関数を使用して再定義しています。
          4. gperftoolsのビルド
          5. ビルドしたライブラリの配置
          6. 環境変数の設定
          7. クリーンアップ

          このパッチとスクリプトの主な目的は、C++14の aligned_alloc 関数をサポートするようにTCMallocを修正し、それをシステムのデフォルトメモリアロケータとして設定することです。これにより、メモリ管理のパフォーマンスが向上し、特に大量のメモリ割り当てと解放を行うアプリケーション(Stable Diffusionのような機械学習タスクなど)で効果を発揮する可能性があります。
          つまり「Fast Stable Diffusion」の高速な要素はここのメモリ確保の改善にあるということですね。必要なパッケージを固めることで、起動も高速になるように工夫されていると推測します。

          ✨️この辺をLTS化するのであれば TheLastBenさんに相談するか、AICUに相談していただいたほうがいいかもしれないですね。

          Model Download/Load ~ ControlNet は変更なしです

          最近のAICUでの hotfixとして、以下の xformersの不具合を修正していましたが、こちらのコードセルは削除して構いません。

          #@markdown ### xformers の再インストール(v20240522)
          !python –version
          !yes | pip uninstall xformers
          !pip install xformers

          Start Stable-Diffusion

          さて、いよいよ起動セルです!

          この記事の続きはこちらから https://note.com/aicu/n/nf5562077c8ad

          Originally published at https://note.com on July 28, 2024.

        3. AUTOMATIC1111 v1.10.xリリース – SD3Mをサポート

          2024年7月28日に、Stable Diffusion WebUI「AUTOMATIC1111」の最新版 v1.10.0 がリリースされました。
          すでに7月6日にリリースされていた「v1.10.0-RC」でも公開されていましたが、最新の画像生成AIモデルの一つである Stable Diffusion 3 Medium (SD3M) が公式にサポートとなりました。

          https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.10.0

          他にもパフォーマンスの改善やモバイルでのコンテキストメニューの表示など、様々な機能があります。
          リリースノートの日本語訳は文末に掲載します。

          Stability Matrixでのサポートは?

          ローカルPC/Mac等で画像生成を簡単にセットアップできる「Stability Matrix」では現状の最新版 v.2.11.4以降で AUTOMATIC1111 v.1.10.0 をサポートしています。

          https://huggingface.co/stabilityai/stable-diffusion-3-medium

          画像

          気になるGoogle Colab での対応状況は?

          気になる #SD黄色本 「画像生成 AI Stable Diffusion スタートガイド」で中心的に利用している Google Colabでの対応状況ですが、現在は「対応済み・解決」になっております。

          原作である TheLastBen版は更新が入り、動作確認できましたので、対応が進みました。

          https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/blob/main/fast_stable_diffusion_AUTOMATIC1111.ipynb

          長期サポートを可能にするための解説についてはこちら

          ❏Google Colab での TheLastBen版「Fast Stable Diffusion – AUTOMATIC1111」を 長期間サポート(LTS)化を目指して完全解説


          Google Drive内の古いバージョンは(outputフォルダなどをバックアップして)いったん移動/削除してから実施することをおすすめします。

          スマホ上で Generateボタン を2本指タップするとコンテキストメニュー「Generate forever」(無限に生成)が表示できています。

          画像

          ※最新版の v1.10.1 がインストールされています。

          Stable Diffusion 3 Medium はどうやってインストールするの?

          さて、話題の「Stable Diffusion 3 Medium (SD3M)」ですが、こちらも 以下の手順で、Stability Matrixを使用して、NVIDIA GeForce RTX4050 Laptop GPU (VRAM5921MB)で動作確認ができています。

          (Stability Matrixを最新の状態に更新)

          sd3_medium.safetensors
          → Data/Models/StableDiffusion に配置します

          sd3_medium_incl_clips_t5xxlfp8.safetensors
          → Data/Models/CLIP に配置します

          Low VRAMモードでは起動できません(モデルのロード時にエラーになります)。

          ・Sampler を Euler にする
          ・出力解像度を 1024 x 1024 にする
          ・CFG Scale を 5

          文字も描けてます!

          画像
          画像
          画像

          A bustling urban street scene with skyscrapers, busy pedestrians, and colorful street art. The atmosphere is lively and dynamic, with sunlight casting dramatic shadows.
          Negative prompt: Avoid elements like excessive clutter, overly dark shadows, or underexposed areas. Exclude dull or washed-out colors, empty or lifeless streets, graffiti with inappropriate content, and chaotic or confusing compositions.
          Steps: 20, Sampler: Euler, Schedule type: Automatic, CFG scale: 5, Seed: 1421671004, Size: 1344×768, Model hash: cc236278d2, Model: sd3_medium, Version: v1.10.0
          Time taken: 16 min. 3.3 sec.

          その他の設定はこちらをご参照ください。

          https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/16030

          AUTOMATIC1111/stable-diffusion-webui バージョン 1.10.0 リリースノート

          コミットハッシュ c19d044 

          新機能:

          • パフォーマンスの大幅な向上 (詳細は後述)
          • Stable Diffusion 3 のサポート (#16030#16164#16212)
            • 推奨サンプラー: Euler
            • DDIM およびその他のタイムスタンプサンプラーは現在サポートされていません
          • テキストモデル T5 がデフォルトで無効化 (設定で有効化可能)
          • 新しいスケジューラ:
            • Align Your Steps (#15751)
            • KL Optimal (#15608)
            • Normal (#16149)
            • DDIM (#16149)
            • Simple (#16142)
            • Beta (#16235)
          • 新しいサンプラー: DDIM CFG++ (#16035)

          細かい変更:

          • 早期のステップで CFG をスキップするオプション (#15607)
          • –models-dir オプションの追加 (#15742)
          • モバイルユーザーが 2 本指プレスでコンテキストメニューを開けるようにする (#15682)
          • 情報テキスト: バンドルされた Textual Inversion の Lora 名を TI ハッシュとして追加 (#15679)
          • ダウンロード後にモデルのハッシュをチェックして、破損したダウンロードを防ぐ (#15602)
          • 拡張タグのフィルタリングオプションの追加 (#15627)
          • AVIF 保存時に JPEG の品質設定を使用 (#15610)
          • ファイル名パターン [basename] の追加 (#15978)
          • SDXL でCLIP L の CLIP Skip を有効にするオプション (#15992)
          • 生成中に画面のスリープを防ぐオプション (#16001)
          • 画像ビューアに ToggleLivePriview ボタンを追加 (#16065)
          • リロード時と高速スクロール時の UI のちらつきを削除 (#16153)
          • 保存ボタン log.csv を無効にするオプション (#16242)

          拡張機能と API:

          • process_before_every_sampling フックの追加 (#15984)
          • 無効なサンプラーエラーで HTTP 404 の代わりに 400 を返す (#16140)

          パフォーマンス:

          • [パフォーマンス 1/6] use_checkpoint = False (#15803)
          • [パフォーマンス 2/6] einops.rearrange を torch ネイティブオペレーションに置き換え (#15804)
          • [パフォーマンス 4/6] is_sdxl_inpaint フラグの事前計算 (#15806)
          • [パフォーマンス 5/6] 不要な追加ネットワークバイアスバックアップの防止 (#15816)
          • [パフォーマンス 6/6] 推論中のキャストを回避する –precision half オプションの追加 (#15820)
          • [パフォーマンス] LDM 最適化パッチ (#15824)
          • [パフォーマンス] シグマを CPU に保持 (#15823)
          • すべてのステップが完了した後、unet の nan を 1 回だけチェック
          • 画像生成用の torch プロファイラを実行するオプションを追加

          バグ修正:

          • 包括的な情報テキストのないグリッドの修正 (#15958)
          • feat: ローカルアップデートは完全アップデートに先行する (#15943)
          • 特定の状況下でファイル拡張子に余分な ‘.’ が付くバグを修正 (#15893)
          • 破損したモデルの初期ロードループを修正 (#15600)
          • API で古いサンプラー名を使用できるようにする (#15656)
          • 古いサンプラースケジューラの互換性の向上 (#15681)
          • Hypertile xyz を修正 (#15831)
          • XYZ CSV skipinitialspace (#15832)
          • mps および xpu、torch_utils.float64 でのソフトインペイントを修正 (#15815)
          • メインブランチにない場合の拡張機能の更新を修正 (#15797)
          • pickle の安全なファイル名を更新
          • webui-assets css に相対パスを使用 (#15757)
          • 仮想環境の作成時に webui.bat/webui.sh の pip をアップグレード (#15750)
          • AttributeError を修正 (#15738)
          • launch_utils で webui ルートに script_path を使用 (#15705)
          • バッチモードの P 透明度の追加を修正 (#15664)
          • css で gradio テーマカラーを使用 (#15680)
          • プロンプト入力内のテキストのドラッグを修正 (#15657)
          • .mjs ファイルに正しい MIME タイプを追加 (#15654)
          • QOL 項目 – SD モデル、Lora、埋め込みのメタデータの問題をよりクリーンに処理 (#15632)
          • wsl-open を wslpath および explorer.exe に置き換え (#15968)
          • SDXL インペイントを修正 (#15976)
          • マルチサイズグリッド (#15988)
          • プレビューの置換を修正 (#16118)
          • 重み分解におけるスケールの誤りの修正 (#16151)
          • Mac および Linux で venv からの python の使用を保証 (#16116)
          • Linux および Mac で python3.10 と python3 の両方が利用可能な場合、python3.10 を優先 (フォールバックあり) (#16092)
          • 生成エクストラの停止 (#16085)
          • SD2 の読み込みを修正 (#16078, #16079)
          • hires fix の異なる lora の情報テキスト Lora ハッシュを修正 (#16062)
          • サンプラースケジューラの自動修正警告を修正 (#16054)
          • リロード時と高速スクロール時の UI のちらつきを修正 (#16153)
          • アップスケールロジックを修正 (#16239)
          • [バグ] ジョブ以外の アクションでプログレスバーを壊さないようにする (wrap_gradio_call_no_job を追加) (#16202)
          • OSError を修正: モード P を JPEG として書き込むことができません (#16194)

          その他:

          • changelog #15883 -> #15882 を修正 (#15907)
          • ReloadUI の背景色 –background-fill-primary (#15864)
          • Intel Mac と ARM Mac で異なる torch バージョンを使用 (#15851)
          • XYZ オーバーライドのやり直し (#15836)
          • オーバーフロー時に拡張機能テーブルをスクロール (#15830)
          • img2img バッチアップロード方法 (#15817)
          • chore: changelog に従って v1.8.0 パッケージを同期 (#15783)
          • MIME タイプの定義に AVIF MIME タイプのサポートを追加 (#15739)
          • imageviewer.js を更新 (#15730)
          • no-referrer (#15641)
          • .gitignore trace.json (#15980)
          • spandrel を 0.3.4 にバンプ (#16144)
          • 使われなくなった –max-batch-count (#16119)
          • docs: bug_report.yml を更新 (#16102)
          • アップグレードを必要とせずに Python 3.9 ユーザーのプロジェクトの互換性を維持 (#16088, #16169, #16192)
          • ARM Mac の torch を 2.3.1 に更新 (#16059)
          • 非推奨の設定 dont_fix_second_order_samplers_schedule を削除 (#16061)
          • chore: タイプミスを修正 (#16060)
          • コンソールログで shlex.join launch args を実行 (#16170)
          • venv .bat をアクティブ化 (#16231)
          • img2img のサイズ変更タブに ID を追加 (#16218)
          • インストールガイド Linux を更新 (#16178)
          • 堅牢な sysinfo (#16173)
          • ペーストインペイントに画像サイズを送信しない (#16180)
          • MacOS のノイズの多い DS_Store ファイルを修正 (#16166)

          Originally published at https://note.com on July 28, 2024.

        4. img2img入門(1) i2iでできることを知ろう

          この記事では、画像とプロンプトをもとにして新たな画像を生成する『image-to-image』について解説します。

            image-to-imageとは

            『image-to-image』(以下『i2i』)とは、画像とテキストプロンプトをもとにして、新たな画像を生成する方法のことです。これにより、テキストのみでは伝えにくかった細かい雰囲気や色味などが再現しやすくなります。また、t2tで生成した画像の一部分のみの修正も行うことができます。

            画面上部のメニューの左から2番目の『img2img』を選択することで使用できます。

            画像
            この画面になります

            i2iには、『img2img』『Sketch』『Inpaint』『Inpaint scketch』『Inpaint upload』の5種類の機能があります。順番に試してみましょう。

            img2imgの使い方

            まず最初に、『img2img』です。これは、指定した画像とプロンプトをもとに全く別の新たな画像を生成する機能です。実際に試してみましょう。
            まず、t2tで生成した画像を用意します。

            モデル blue_pencil (今回はblue_pencil-XL-2.9.0を使っています)
            プロンプト masterpiece, best quality, ultra detailed, 1girl
            ネガティブプロンプト worst quality, low quality, normal quality, easynegative

            画像
            生成された画像

            これを赤枠内にドラッグアンドドロップ、または枠内をクリックしてフォルダから選択してアップロードします。

            画像

            まずは設定は何も変えずに生成してみます。

            画像

            生成されました。確かに雰囲気が似ていますね。
            では、プロンプトを指定してみましょう。t2tの際と同じようにプロンプトを入力します。
            プロンプト masterpiece, best quality, ultra detailed
            ネガティブプロンプト worst quality, low quality, normal quality, easynegative, 

            画像

            先ほどよりハイクオリティで、もとのイラストの雰囲気を残したイラストになりました。
            では、プロンプトで少し女の子の見た目を変えてみましょう。プロンプトに『smile』を追加してみます。

            画像
            笑顔になりました

            色味や雰囲気はそのままに、笑顔の女の子を生成することができました。
            このように、img2imgでは、画像とプロンプトをもとにして新しいものを生成することができます。
            では、細かい設定を見ていきましょう。これは他のi2iの機能でも共通して使用します。

            画像

            ① Resize mode 
            生成する画像のサイズを変えた時の(④)、元の画像との差の補完方法です。生成する画像の横幅を2倍にし、それ以外の条件を揃えて比較してみましょう。
            元画像

            画像

            Just resize
            元画像をそのまま引き伸ばします。

            画像

            Crop and resize
            縦横比を保ったまま、一部を切り取り拡大します。

            画像

            Resize and fill
            足りない部分を生成し補完します。

            画像

            Just resize(latent upscaler)
            『Just resize』を、異なるアップスケーラーを用いて行います。

            画像

            このように、画像の補完方法が全く異なるので、目的に応じて適したものを選びましょう。

            ②Sampling method
            t2tと共通の設定です。ノイズを除去し画像を生成する過程のアルゴリズムの種類を選択します。t2tの際と同じで、デフォルトのDPM++ 2M Karrasを使うことをおすすめします。

            ③Sampling steps
            こちらもt2tでも使う設定です。ノイズを除去する回数を指定します。詳しくはC3-コラムで解説しています。

            ④Resize to/Resize by
            生成する画像のサイズを指定します。『Resize to』を選択すると縦横のサイズを指定でき、『Resize by』を選択すると拡大縮小する倍率を指定することができます。

            ⑤Batch count
            t2tと共通の設定。指定した枚数の画像を順番に生成します。

            ⑥Batch size
            t2tと共通の設定。指定した枚数の画像を同時に生成します。

            ⑦CFG Scale
            t2tと共通の設定。生成画像をどれだけプロンプトに従わせるかを調節します。

            ⑧Denoising strength
            生成画像をどの程度元画像に近づけるかを設定します。

            Denoising strengthの使い方

            ここからは、先ほどの⑧『Denoising strength』というパラメーターについて実験と解説をしていきます。これは、img2imgの画像をアップロードする箇所の下部にあるメニューで設定する数値です。

            画像

            『Denoising strength』は、元の画像と生成する画像にどれだけ差をつけるかを表します。デフォルトは0.75ですが、0に近づくと元画像に忠実に、1に近づくと元画像とは違う画像になります。実際にi2iで画像を生成して比べてみましょう。

            まず、t2iで画像を生成します。
            モデル bluepencil
            プロンプト masterpiece, best quality, ultra detailed, 1girl, 
            ネガティブプロンプト worst quality, low quality, normal quality, easynegative, 

            画像

            これをi2iのX/Y/Z plotで、『Denoising』の数値を変えて生成します。

            画像

            これらを比較すると、Denoising:0.3のイラストは元のイラストとほとんど同じですが、Denoising:1.0のイラストは、女の子の服装、髪色、背景がかなり変わっていることがわかります。このように、Denoisingの値は小さいほど元のイラストと似たものになり、大きいほど元のイラストとの差が大きくなります。

            続きはこちら!

            https://note.com/aicu/n/n853810115170

            https://note.com/aicu/n/n65145ad4f762

            https://note.com/aicu/n/n0ce22c439af7

            ※本ブログは発売予定の新刊書籍に収録される予定です。期間限定で先行公開中しています。
            メンバー向けには先行してメンバーシップ版をお届けします
            Stable Diffusionをお手軽に、しかもめっちゃ丁寧に学べてしまう情報をシリーズでお送りします。
            メンバーは価値あるソースコードの入手や質問、依頼ができますので、お気軽にご参加いただければ幸いです!

            https://note.com/aicu/membership/join

            この下にGoogle Colabで動作する「AUTOMATIC1111/Stable Diffusion WebUI」へのリンクを紹介しています。
            メンバーシップ向けサポート掲示板はこちら!応援よろしくお願いします!

            https://note.com/aicu/membership/boards/61ab0aa9374e/posts/7cab00942b22?from=self


            この記事の続きはこちらから https://note.com/aicu/n/n08ebe0637a41

            Originally published at https://note.com on Jan 5, 2024.