Kohya_ssでLoRA学習させようとしてエラーを吐く
Kohya_ssを用いてLoRAの学習をさせようとしていたら次のようなエラーを吐いた。
File "■\module.py", line 1671, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for UNet2DConditionModel:
size mismatch for down_blocks.0.attentions.0.transformer_blocks.0.attn2.to_k.weight: copying a param with shape torch.Size([320, 768]) from checkpoint, the shape in current model is torch.Size([320, 1024]).
~
Traceback (most recent call last):
File "■\runpy.py", line 196, in _run_module_as_main
~
raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
~
結論はソースモデルにv2のチェックが入っていたことだった。えぇ…
ちなみに、たぶんこれを見に来た人は次でまた止まると思うので…
このページを参考に…
dreamboothのPlease configure some concepts.エラーについて
stable diffusionでdreamboothのWebUIを使って学習させようとしたら「Please configure some concepts.」と出るが解決方法が調べても分からなかったので記載。
結論から言えば自分はDataset Directoryのパス指定で\を/にしたら動いた。あーそういう。
あとパス指定を絶対パスではなく相対パスにする必要があった。(Windowsではこのstable-diffusion-webuiフォルダはLinux内のフォルダ奥深くに眠っているのでstable-diffusion-webuiで検索をかけて探し出す)
というのもModel SelectionのところのLoaded Modelを見ると
/stable-diffusion-webui/models/dreambooth/
と書いてあるので、要するにここに表記を合わせれば行けるんじゃね?と思ったら案の定行けた感じだ。
絶対パス指定する方法を知っていたら教えて欲しい
CustomBlockerでTwitterのトレンド欄を消す
CustomBlockerとはなんぞや
Twitterを見ていて、「トレンド欄」や「おすすめユーザー」の欄を要らないと思ったことはないだろうか?
トレンド欄の方はブロックしている人の記事すら貫通して載せてくるし、おすすめユーザーはもう動いてないアカウントを平気でおすすめしてくる。正直、要らないのにTwitter側で消すことは出来ない。
そこで便利なのはChromeの拡張機能であるCustomBlockerである。
これはwebページの条件に合った要素を強制的に排除できる。ただし、使い方がやや難しい。
CustomBlockerを設定する
①入れ終わったら、Twitterのトレンド欄など消したい欄で右クリックし、検証を押す。②消したい要素がブルーアウトするElements欄を右クリックし、Copy→Copy Xpathを押す。これで、ここを指している要素(Xpath)を抽出できた。
③拡張機能のボタンを押し、新しいルールを作成を押す。
④隠す要素をXpathにチェックを入れ、欄に先ほどコピーしたXpathを貼り付け。(Ctrl+v)
このままだとホームでしか隠せなくなってしまうので、URL欄を「https://twitter.com/*」に変更し、正規表現で指定にチェックを入れる。無条件で隠すを押す。
⑤同様のことをおすすめユーザー欄でも行う。
これで、ウザったいトレンド欄ともおさらば。
応用すれば、「○○さんがいいねしました」のような出さなくていいツイートも排除できる。
Minecraftウィザーリアクター① 実験炉を作ろう!
Minecraftでトップクラスに危険な建物とは何だろう?
答えはウィザーを利用した建造物。
ウィザーの利用価値としては、あらゆるブロックの破壊が可能なこと。例えばMinecraftバニラで、理論上唯一の全自動木材回収装置が作れる存在である(もっとも植えるのは手動だろうが)。
そんなロマン建造物の原型を作ってみよう。
まずはウィザーについて知ろう
ウィザーはあまりの危険さ故にその特性があまり知られていない。
実はウィザーはかなりおとなしい生物なのだ。激しく動くイメージがあるかもしれないが、ヤバい状態はモブと敵対状態になった時に限られる。
しかもウィザーの探知範囲はかなり狭く、およそ16マス程度。安全を考慮するなら20マス離れていれば、ウィザーに探知されることはない。また、視界をブロックで遮られていれば非常に近くまで行っても敵対することはない。
つまり、敵対状態にさえしなければ、このような2段の内側に向かう水流でウィザーを固定できる。
しかし、ウィザーの立つ部分は必要なので、そこは自動再生壁で作る必要がある。
実験炉作り
どのような型でも構わないからこのような2×2の縦型の全自動再生壁を作る必要がある。
例えば次のように溶岩を配置し、水を流した上で、溶岩に蓋をする。
ピストンを横から見て、下のように回路を作ると2×2のピストンが同時に動く。
後は適当なクロック回路を作りオンオフする信号を入れてやる。
あとは全自動壁の上に水流を作った後、ブロックを破壊すれば完成だ。
このように下からウィザーを眺めていても襲われることはない。
攻撃範囲と検知範囲の差からウィザーローズの採取も可能だ。
次はこの建造物を生かしていこう。
えもふりでVtuberの真似事をする⑦ キー入力で表情を変える2
前回までの状態だとウィンドウが非アクティブになると表情が動かせなくなってしまう。
今回は改善を行っていこう。
https://github.com/Elringus/UnityRawInput
からUnityRawInputを落としてAsets内へ入れる。
これで準備が整った。
あとはtest3内をこう書き換える。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityRawInput;
public class Test3 : MonoBehaviour
{
public EmotePlayer targetPlayer;
public float time;
// Start is called before the first frame update
void Start()
{
if (targetPlayer == null)
targetPlayer = this.GetComponent(typeof(EmotePlayer)) as EmotePlayer;
time=600;
}
private void OnEnable()
{
//バックグラウンドの時もキー入力を受け付ける
RawKeyInput.Start( true );
RawKeyInput.OnKeyUp += OnKeyUp ;
RawKeyInput.OnKeyDown += OnKeyDown;
}
// キーが離された時の動作
private void OnKeyUp( RawKey key )
{
Debug.Log( "OnKeyUp: " + key );
}
// キーが押された時の動作
private void OnKeyDown( RawKey key )
{
Debug.Log( "OnKeyDown: " + key );
if (RawKeyInput.IsKeyDown(RawKey.A)) {targetPlayer.mainTimelineLabel="sample_驚00";
time=240;
}
if (RawKeyInput.IsKeyDown(RawKey.S)) {targetPlayer.mainTimelineLabel="sample_楽00";
time=240;
}
if (RawKeyInput.IsKeyDown(RawKey.D)) {targetPlayer.mainTimelineLabel="微笑";
time=240;
}
if (RawKeyInput.IsKeyDown(RawKey.W)) {targetPlayer.mainTimelineLabel="考える";
time=240;
}
}
// Update is called once per frame
void Update()
{
if (time>1) time--;
else targetPlayer.mainTimelineLabel="動作リセット";
}
}
動いたからこれでよし。なんか色々変な気はするけど。