技術約7分で読めます

白黒アイコンをAnimaの絵柄で描き直せるか

いけさん目次

自分のアイコンにしている白黒の画像を、かなちゃんのLoRAでカラーに出し直せないかと思って、試してみた。

項目元絵
向き右斜め
片方の手口の横に人差し指を立てる
もう片方の手腹に当てる
開けている
元絵。白黒の画像で、右斜めを向き、人差し指を口の横に立て、もう片方の手を腹に当てて口を開けている

環境

項目設定
マシンM1 Max 64GB
ComfyUIv0.30.1
呼び出し自作の生成サーバー経由と直APIの両方
基準モデルWAI-Anima v1.0(waiANIMA_v10.safetensors
キャラLoRAkanachan-waianima-rework-v4_epoch180(model 1.0 / clip 0.8)
高速化Anima Turbo LoRA v0.1、10step、er_sde / simple
解像度832×1024
seed424246 / 424247 / 424248を固定。最後にランダム12個
遠回りで使ったものAnima-Base v1.0+kanachan-animabase-v2_epoch150(30〜40step、cfg 4.0)、Qwen-Image-Edit AIO

かなの見本はLoRAの学習画像で確認。

元絵をi2iに入れる

元絵をそのままi2iに入れて、Animaの画風で出ないかと思った。
denoiseは左から0.6、0.7、0.8。

denoise 0.6。白黒のまま網点が残る denoise 0.7。白い斑点と別の顔の複製 denoise 0.8。色は乗ったがサイドポニーが画面左

みた通り全部失敗、一応ポーズを寄せようとした形跡だけ見える。

Animaの自然文で指定してみる

her left hand と書いても、on the right side of the image と書いても、左右の手の構図が変わらず。
4人LoRAでポーズと関係を指定した実験で、ハイタッチの相手が名前で決まらなかったのと多分同じことが起きている。

Anima-Baseのcfg 4.0へ切り替え、finger to mouth を入れると、今度は画面右から別人の腕が伸びてきて、その指が口に突っ込まれた画像が出てきた。
今回のcfg 4.0の条件では、solo も、ネガティブの another person, extra arm でも、余計な出力を抑えられなかった。
口に指突っ込んでる絵面がちょっとセンシティブだったので省略。

別のモデルで元絵を変換する

Qwen-Image-Editで元絵をカラーのアニメ絵に変換した。

Qwen-Image-Editで元絵をカラーのアニメ絵に変換した出力

ポーズは元絵と微妙に違い、かなでもない。
上からかなLoRAでi2iを掛けても、髪だけインペイントしても、かなが出なかったのでこの方法はやめ。

かなが出ているかを先に確かめる

そもそも今の方式でかながちゃんと出せているか?最近ちゃんと出力してないし、まずはかなの意匠を固定してから徐々にプロンプト足すか、と思って、まずは普通に出してみた。
左2枚が学習画像、右2枚がseed 424246と424247の基準出力。

masterpiece, best quality, safe, 1girl, solo, kanachan, side ponytail, ahoge, Her side ponytail with a blue scrunchie is visible on the right side of the image, white shirt, collared shirt, red necktie, upper body, looking at viewer, white background, simple background
学習画像 kana_0060。正面立ち 学習画像 kana_0035。右向き3/4の顔 基準出力 seed 424246 基準出力 seed 424247

髪の構造、ポニーの側、シュシュ、アホゲ、目の色、服は同じ。
何も指定してないので表情がばらついてるが、これはあとで調整するのでよしとして、ここにプロンプトを足していく。

向きの固定から

seedは424247、three-quarter view は共通。

向きの指定結果
なし正面でカメラ目線
(facing right:1.3), (body turned to the right:1.3)右斜め。採用
(facing right:1.5), (body turned to the right:1.5)横顔寄り
向きの重みなし。正面でカメラ目線 facing right 1.3。右斜め facing right 1.5。横顔寄り
他に試した指定結果
four-fifths view重みなしと同じく正面(画像なし)
about 30 degrees同上(画像なし)

首の傾きがseedごとに違うので、she stands upright with her head and spine in one straight vertical line, without tilting her head の1文を足して固定した。

腕と手の指定を入れる

seedは424246。腹の手の言い回しは one hand pressed to her stomach
本来はお腹が空いておさえている構図だが、お腹が痛くておさえている構図の学習キャプションを流用した。

手の指定結果
her right hand is pressed to her stomach右手が腹に。汗マークと心配顔も一緒に出た
上に her left hand rests on her cheek を追加左手が頬に
頬の手に closed in a fist with her left index finger extended upward を追加頬の手は開いたまま変わらず。腹の手の指が曲がって人差し指だけ横に伸びた
右手を腹に。汗マークと心配顔が付く 左手を頬に添える 頬の手にこぶしと人差し指を指定。こぶしと指は腹の手に出た

表情差分を確認する

向き1.3、腹の右手、頬の左手、seed 424247は共通。12〜15はcfg 1.5に、泣き系と汗のネガティブを入れて出した(次の節)。

タグ結果
1hungry, open mouth困り顔。汗マーク。一覧では「哀」に分類されている
2excited, open mouth口を開けた笑顔
3curious, open mouth口を小さく開ける
4cheerful, open mouth口を開けた笑顔
5pleased, open mouth口を開けた笑顔
6happy, open mouth口を開けた笑顔
7joyful, open mouth口を開けた笑顔
8great joy, open mouth口を丸く開けた不安顔。汗マーク
9:d口を開けた笑顔
10joyful, amazed, open mouth目を見開いて口を丸く開ける。「すごい」ではなく「なんだこれ」の顔
11joyful, sparkling eyes, open mouth口を開けた笑顔。目にハイライト
12sad閉じ口の泣き顔
13a little sad閉じ口の困り顔
14neutral expression, closed mouth真顔。採用
15expressionless真顔
1 hungry 2 excited 3 curious 4 cheerful 5 pleased 6 happy 7 joyful 8 great joy 9 :d 10 joyful, amazed 11 joyful, sparkling eyes 12 sad 13 a little sad 14 neutral expression, closed mouth 15 expressionless

汗をネガティブで消す

seedは424247、表情は joyful, sparkling eyes, open mouth。ネガティブに sweat, sweatdrop, sweat drops, flying sweatdrops, tears, wet face を足した。

cfg結果
1.0左頬の1粒がそのまま。ネガティブを足す前の3枚とピクセル単位で完全に同じ
1.5このseedは左頬の1粒がそのまま((sweat:1.5) に上げても消えず)。ほかの2seedでは消えた。以後はcfg 1.5で進めた
汗ネガあり、cfg 1.0。汗は残る 汗ネガあり、cfg 1.5。頬に小さな汗が1つ残る

ComfyUI v0.30.1の通常のKSampler(CFGGuider)では、cfgが1.0で disable_cfg1_optimization が未設定のとき、ネガティブ側(unconditional)を計算しない(comfy/samplers.py L609-L627)。
CFG++系のサンプラーは内部でこのフラグを立てるので別。今回のer_sdeは通常のKSamplerなので該当する。

よだれをちょこっと

元絵には口の端に涎がある。neutral expression, closed mouth の末尾に足した。seedは424247。

追加結果
なし涎なし
drool口の端に小さな粒。採用
neutral expression, closed mouth droolを追加。口の端に小さな粒
他に試した指定結果
drooling1筋垂れた(画像なし)
a small bit of drool leaking from the corner of her mouth顎まで垂れた(画像なし)

下半身に服着てるか?

よくみたらシャツは着てるが下が不明、元絵でもまあ同じ構図だが、通常生成されたかなはスカートを履いてシャツを入れている。よってスカートの描写を入れてみることにした。

衣装の指定経緯
red pleated skirt を追加シャツの裾の下が何か分からない絵になっていた
shirt tucked in を追加スカートを足したならシャツインするはず
upper body(upper body:1.3)スカートを書くと画角が腰下まで広がった

人差し指を口元へ

her left hand rests on her cheek を、元絵の「口の横に人差し指」に当たるDanbooruのタグに差し替えた。seedは424247。

差し替え先結果
finger to mouth人差し指の先が口の端。採用。WAI-Anima+Turboのcfg 1.5では別人の手は出なかった
shushing指が唇の前に立つ
index finger raised手が上がらない
finger to mouth。人差し指の先が口の端 shushing。指が唇の前に立つ index finger raised。手が上がらない

ランダムシードでガチャ

固定値では右向きにしたときのサイドポニーの位置がブレるので、プロンプトを固定してseedをランダムに12枚出した。
意図した構図から外れたものを間引いたら、たまたま1枚いいのが残った。

seedサイドポニー
1175128881後頭部側に大きく出る
2221789380シュシュが頭頂のやや後ろ
1654146746シュシュが頭頂
3421689588頭の右上に覗く。採用
seed 1175128881。サイドポニーが後頭部側に大きく出る seed 2221789380。シュシュが頭頂のやや後ろ seed 1654146746。シュシュが頭頂 seed 3421689588。サイドポニーが頭の右上に覗く

このseedで closed mouthslightly parted lips に替えて、最終形にした。

最終出力。seed 3421689588、右斜め3/4、人差し指の先が下唇に触れ、口の端から短く垂れた涎、右手は腹、頭の右上にサイドポニーとシュシュ
masterpiece, best quality, safe, 1girl, solo, kanachan, side ponytail, ahoge, Her side ponytail with a blue scrunchie is visible on the right side of the image, pure white shirt, collared shirt, red necktie, red pleated skirt, shirt tucked in, (upper body:1.3), three-quarter view, (facing right:1.3), (body turned to the right:1.3), her head and body are both turned toward the viewer's right, she stands upright with her head and spine in one straight vertical line, without tilting her head, looking to the side, looking away, her right hand is pressed to her stomach, finger to mouth, neutral expression, slightly parted lips, drool, white background, simple background, anime coloring, cel shading, clean sharp lineart

ネガティブはこれ。cfg 1.5。

worst quality, low quality, score_1, score_2, score_3, blurry, jpeg artifacts, lowres, censor, twin tails, twintails, two side up, half updo, right side up, bowtie, bow tie, ribbon, red ribbon, sweat, sweatdrop, sweat drops, flying sweatdrops, tears, wet face, crying, sobbing, streaming tears, tearful

Turboを外すとシャツは白寄りになるか

シャツの色がもうちょっと明るく、白寄りにならないかのテスト。左胸のRGB中央値で比べた。

変更左胸のRGB中央値結果
white shirt(238, 236, 232)背景の255より少し暖色の灰色
pure white shirt(238, 236, 232)変わらず
Turboを外して30step、cfg 4.0(241, 243, 243)白くなったが、3seed中2seedで頬の手が消えたのでやめ

拡大する

300dpiを基準に計算すると、832×1024は7.0×8.7cmしかない。使える拡大モデルは、手元では 4x-UltraSharp.pth だけ。

工程結果
4x-UltraSharpで4倍バイキュービック補間と違って線が残る
2倍の1664×2048に縮小して、同じプロンプト・同じseedでi2i denoise 0.3MPSGraph does not support tensor dims larger than INT_MAX が出た
1.5倍の1248×1536に縮小して、同じくi2i denoise 0.3通った。線が描き直されて締まった
口元と指の等倍切り出し。左が4x-UltraSharpで1.5倍にしたもの、右がその上にi2i denoise 0.3を掛けたもの

元画像を4x-UltraSharpで4倍にし、1.5倍に縮小してi2i denoise 0.3で描き直し、もう一度4x-UltraSharpにかけてから目的のサイズへLANCZOS縮小した。

出力ピクセル300dpiでの寸法
元画像832×10247.0×8.7cm
4x-UltraSharpのみ4倍3328×409628.2×34.7cm
1.5倍でi2i後に4倍4992×614442.3×52.0cm
同上をA4短辺に合わせて縮小2480×305321.0×25.8cm

構図は元のままで、A4の短辺の寸法になった。