メインコンテンツへスキップ
見出し画像

ComfyUIでTaggaerでプロンプトを取得してimg2imgで後からHires.fixと後からFacedetailerの画質が上がるか検証

    img2imgはほぼしません。
    ただ、奇跡の画像の目だけを良くしたいやHires.fix忘れてたという時がちょくちょく発生したのでimg2imgを実施したいと思いました。

    ComfyUIのimg2imgをする時に気づくのは、txt2img同様にpositiveやnegativeにmodelなどが必要なり、positiveだけの取得が手間だったので、Taggerを活用して後からHires.fixや後からFacedetailerでそのまま画質が向上するか検証してみました。

    最初に考えていたimg2imgを楽にする方法

    ComfyUIはプロンプトをどのように残すか自分で実施できます。
    a1111系のようにポジティブプロンプトとネガティブプロンプトをしっかり残して、そのプロンプトをポジティブのノードとネガティブプロンプトのノードに分けてtextで出力するものを作ろうと思っていました。
    ただ上記の場合、プロンプトをしっかり残す前提で残っていないものに関して実施できないので、後からどんな画像でもHires.fixやFacedetailerができるとは思えないので、Taggerを活用する事にしました。

    img2imgのワークフローの内容

    img2imgの時にDenoiseは0.4から0.6ぐらいなので、ポジティブプロンプトはある程度ざっくりで良いと思っています。

    今回の目的は後から質を上げる事です。
    流れとしては、2パターンあります。

    • 1枚の画像の場合は、Tagger認識+品質タグ+キャラタグ

    • バッチ処理の場合は、Tagger認識+品質タグ

    1枚の画像の場合は、キャラタグがあるなら入れておく方が精度は上がります。
    バッチ処理の場合は、処理する画像が複数あり、キャラタグを1行ずつ認識するノードで列挙すればできますが、順番通りに入れないといけないのと作業が手間過ぎるので実施するには効率が悪すぎます。

    Taggerを活用したimg2imgを楽にする処理について

    img2imgであってもcheckPointとVAEが必要です。
    次に画像を読み込むノードを準備します。

    画像

    処理はめちゃくちゃカンタンです。

    画像

    WD14 Tagger 🐍を入力スロットのimageを画像を読み込むからのものを受け取ります。
    WD14 Tagger 🐍が画像を受け取るとtext型でプロンプトを出力します。

    画像

    品質タグを入れるノードは、あらかじめてよく自分が使っている品質タグを準備して入れておきます。
    キャラタグを入れるノードは、画像単体の時に使用するようにおいています。
    Taggaerからのtext、品質タグのtext、キャラタグのtextの3つをText Concatenateで結合します。
    あとは通常の処理でtext型からConditining(条件付け)をポジティブプロンプトとして活用し、別で準備したネガティブプロンプトでKサンプラーに接続するかになります。

    画像

    あとからHires.fix、Facedetailerを検証

    1.25倍で拡大してdenoise.04でHires.fixを実施します。

    画像

    normalの画像のチェックポイントはillustriousXL1.1でHires.fixで使用したcheckPointはOneObsessionです。
    checkPointが相違しているのでHires.fixの画風が変わり、同じであれば既存の画像がパワーアップします。

    同一のcheckPointでも実施してみます。

    画像

    ちょっと画風がHires.fixであっても変わります。
    これについては始めから分かっていました。
    説明は後の方で実施します。

    次にFacedetailerの実施。
    Facedetailerのモデルは、AnzhcFace-v-1024を使用しました。

    画像

    checkPoint違うのでdenoise0.4でもかなり変わりました。
    Hires.fixと同じようにcheckPointを同一にしてFacedetailerを実施してみます。

    画像

    こちらも結構かわります。

    あとからHires.fixとFacedetailerで顔が変化した理由

    checkPointに差異があるなら変化するのは当たり前ですが、Hires.fixとFacedetailer時に同じcheckPointの場合は、denoiseの値を増やさないと大きくは変わることはありません。

    今回大きく変わってしまった原因は画風のLoRAです。
    初期画像には、AIイラストおじさんのLoRAを入れています。
    今回img2imgでプロンプトのみ取得してLoRAを取得していないのが原因だと思います。
    ただ・・・・jsonからLoRAを抜き取るノードがあるのかなとという段階で、無ければ自作で拡張ノードを作って検証したいと思います。

    あなたへのおすすめ