オープンソースの画像生成AIをセットアップから使い方まで解説する『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)発売中(→本のサポートページ

自作キーボードのイベント「天キー5」に行ってきた

「天下一キーボードわいわい会vol.5」、略して「天キー5」へ行ってきた。コンピュータ用キーボードのイベントである。

天キー5のページ
天下一キーボードわいわい会 Vol.5 - connpass
中継録画
Daihuku(@Daihuku0015)さんによる会場レポート
会場入口の案内看板はレゴで作られていた

そのほかは当日のツイートから。

奇抜なキーボードはほかにもあったけれど、どんどん写真を撮る気分ではなかったのでこれだけです。ハッシュタグ#天キー」をたどるといろいろなキーボードを見られます。

セッションはサリチル酸@Salicylic_acid3)さんの「自作キーボードとポインティングデバイス」(中継録画では14分40秒あたりから)などを拝見。サリチル酸さんのテンションがやや高めで、今日も寝不足なのかなと心配になったりした。

それからイベントの最後に、キーボード関連の即売会「キーボードマーケットトーキョー」(キーケット)の開催が発表された。「自作キーボードのコミケというイメージ」だそうで、来年の3月2日に浅草の東京都立産業貿易センター 台東館で行われるとのこと。

自作キーボードの店「遊舎工房」でフリーマーケットが行われることもあったが、キーケットは参加サークル30ともうちょっと規模が大きい。どんなものが出てくるか楽しみだ。

天キーのほうは次回、来年の5月4日に開催する予定で準備中だそう。「ここの会場を次回も借りられるかは今日の皆さんのお行儀にかかっています」だったので確定ではない。おお心配。

蛇口のアタッチメントがまたねじ切れた

台所の水道の蛇口にはアタッチメントをつけている。ジンバル(首ふり)機構があり、シャワー/ストレートの切り換えができるタイプである。

そのアタッチメントのヘッド部分がねじ切れてしまったため交換したところまたねじ切れた。前回ねじ切れて交換したのは2021年9月23日。2年しかもたなかった。その前も同じくらいだと思う。

今まで使っていたのはこれ。近所のホームセンターで条件に合うのはこれしかなかった。

クリシャワースイング

今回は少し遠くのホームセンターでこれを買った。今度は長持ちするといいな。

SANEI キッチンシャワー

(2023年11月2日記)

Lama CleanerをCUDA対応でvenvにインストールした(GPUなしでもいけます)

画像の一部を高精度に消去できる「Lama Cleaner」をインストールした。

これを
こうできるソフトです

インストール方法を調べると標準的な手法がないようで、CUDAに対応させつつ仮想環境にインストールする方法はこれというページが見つからなかった。自分用も兼ねてここにまとめておきたい。

ついでにNVIDIAGPUがない人(ノートパソコンの人とか)向けのインストール方法も適宜解説します。

(「Windows 1click Installer – Lama Cleaner」という、Lama CleanerのWindowsインストーラのページはあるが有料だそうだ)

インストールの手順

  1. Pythonのインストール
  2. CUDA Toolkitのインストール
  3. venvの仮想環境を作る
  4. PyTorchのインストール
  5. Lama Cleanerのインストール

Pythonのインストール

Windows版のPythonは以下からダウンロードできる。

Pythonは「とりあえず一番新しいのを入れておけばいいんでしょ」とはならない。Pythonの最新安定版は3.11.5だが、Lama CleanerはPython3.10.x上で動くので、記事執筆時点でインストーラつきの一番新しい3.10.xである「Python 3.10.11 Windows installer (64-bit)」(27.7MB)をインストールする。

インストーラを起動して出てくる最初のダイアログボックスで、「Add python.exe to PATH」をオンにするのを忘れずに。

(3.10.9のインストーラ画面の使い回しで恐縮です)

CUDA Toolkitのインストール

NVIDIAGPUがあるパソコンならLama Cleanerの実行を早くできる。そのためにCUDAというライブラリをインストールする。

NVIDIAGPUがない人向けのインストール方法もあとで解説します。次の項へ進んでください)

現在最新のCUDA Toolkitは12.2.2だが、PyTorchが対応しているのは11.8まで。CUDAが入っていない、あるいはバージョンが11.8でない人はインストールする。

CUDA Toolkit Archive | NVIDIA Developer」から「CUDA Toolkit 11.8.0」をダウンロード、インストールする。

CUDA Toolkitをインストールしたかどうかやバージョンを忘れちゃったときは、コマンドプロンプトを開き「nvcc -V[Enter]」。「-V」のVは大文字で。自分の環境ではこういうのが出た。

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

venvの仮想環境を作る

仮想環境とはフォルダ内に作る独立した環境のことで、OS全体に影響を与えずにライブラリやアプリケーションをインストールできる。使わなくなったらフォルダごと削除してしまってよい。

Lama Cleanerをインストールするフォルダを作り、その中をエクスプローラーで表示する。たとえば「c:\LamaCleaner」など。

アドレスバーに「cmd[Enter]」と入力すると、コマンドプロンプトのウィンドウが開く。

コマンドプロンプトに以下のコマンドを入力し[Enter]。このコマンドでは、「venv_lama」が仮想環境のフォルダ名となる。

python -m venv venv_lama

少し待つとコマンドが完了する。コマンドプロンプトのウィンドウはそのままにしておく。

エクスプローラーで「c:\LamaCleaner」を見ると「venv_lama」フォルダができている。


PyTorchのインストール

PyTorchは、Pythonを使った機械学習のライブラリである。これをvenv内にインストールする。

venvに入るには、先ほどのコマンドプロンプトのウィンドウで以下のように入力し[Enter]。

venv_lama\scripts\activate.bat

下の画像のように、コマンドプロンプトが「(venv_lama)c:\LamaCleaner>」という表示になる。ここから先の操作は「venv_lama」フォルダの仮想環境内で完結しており、OS本体とは別に扱われる。

このあと使う「pip」コマンドをアップデートしておく。以下のコマンドをコマンドプロンプトに入力し[Enter]。

python -m pip install --upgrade pip setuptools

PyTorchのインストールコマンドを取得するためにPyTorchの公式サイトへ行く。少し下に「INSTALL PYTORCH」というセクションがある。その中の表は、インストール時の条件を選ぶとそれに合ったインストールコマンドを作ってくれるというもの。

NVIDIAGPUがある人は以下を選ぶ。

  • PyTorch Build…Stable(2.0.1)
  • Your OS…Windows
  • Package…Pip
  • Language…Python
  • Compute Platform…CUDA 11.8

これで出てくるインストールコマンドは以下。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

NVIDIAGPUがない人は、「Compute Platform」を「CPU」にする。その場合のインストールコマンドは以下。


pip3 install torch torchvision torchaudio

いずれかのコマンドを入力し[Enter]キーを押して3~4分待つ(ここから先は、[Enter]キーを押す操作は明記しない)。

Lama Cleanerのインストール

これで準備は完了で、いよいよLama Cleanerのインストールに進む。入力するコマンドは以下。

pip install lama-cleaner

また2~3分待ってコマンド入力できるようになったら、Lama Cleanerのインストールは完了である。インストール後の「c:\LamaCleaner」フォルダの容量は約5.3GBだった。

Lama Cleanerの起動

Lama Cleanerの起動コマンドは以下の通り。これはNVIDIAGPUがある人向け。

lama-cleaner --model=lama --device=cuda --port=8080

NVIDIAGPUがない人は下のコマンドでLama Cleanerを起動する。「--device=cuda」を「--device=cpu」にする。

lama-cleaner --model=lama --device=cpu --port=8080

上のように「Running on http://127.0.0.1:8080」と表示されたら、Webブラウザで「http://127.0.0.1:8080」へアクセスする。

あとは画像をドラッグ&ドロップして、消したい範囲を塗ればすぐに処理が始まる。

画像をドラッグ&ドロップ
消したい範囲を塗る
塗り終えるとすぐに処理が始まり、塗った範囲が消去される

イラストだけでなく写真の一部も消去できる。

SDXLで出力したオウム
右端のオウムを消した

Stable Diffusionで出力した画像に意図せず入ってしまったシグネチャも。

こんなふうに文字が入ってしまっているのも
きれいに消してくれた

操作のポイントは以下。

  • 消したい範囲を塗るときはわりとはみ出ても大丈夫。むしろ塗り残しがあると「そこは消さないんですね」と判断される
  • 消し残された範囲があったらそこをもう一度塗って消すとよい
  • マウスのホイールで画像表示の拡大/縮小、ホイールボタンのドラッグまたはスペースキーを押しながらのドラッグでパンする。[Esc]キーを押すと元の表示サイズで中央に戻る
  • 複数の範囲を塗りたいときやブラシの太さを変えつつ塗りたいときなどは、[Ctrl]キーを押している間は消す処理が始まらない。[Ctrl]キーを押すのをやめると処理が始まる
    • [S]キーを押すか右上の歯車アイコンで設定メニューを出し「Manual Inpainting Mode」を選んでもよい。下部ツールバーに出てくる消しゴムアイコンをクリックすると消去する処理が始まるようになる
  • 消去の処理が完了したあと、目玉のアイコンを押すか[Tab]キーを押すとオリジナルの画像を見ることができる
  • [H]キーを押すか右上のキーボードのアイコンをクリックするとショートカットキーが表示される

Lama Cleanerを終了する時はコマンドプロンプトのウィンドウで[Ctrl]+[C]を押す。コマンドを入力できる状態に戻ったらコマンドプロンプトのウィンドウは閉じてよい。

Lama Cleaner起動用のバッチファイルを作る

Lama Cleanerを使おうとするたびにコマンドプロンプトを開いてvenvに入って…とやるのは効率が悪い。起動用のバッチファイルを作っておく。

Lama Cleanerをインストールしたフォルダで右クリックし、「新規作成」-「テキストドキュメント」としてファイル名を「LamaCleaner.bat」などとする。「LamaCleaner」の部分は任意である。

バッチファイルの中身はこのようにする。NVIDIAGPUがない人は「--device=cuda」を「--device=cpu」にする。

call .\venv_lama\scripts\activate.bat
lama-cleaner --model=lama --device=cuda --port=8080

これで、バッチファイルを実行するとLama Cleanerが起動するようになる。

バッチファイルから起動したLama Cleanerを終了させようとコマンドプロンプトのウィンドウで[Ctrl]+[C]を押したとき、「バッチジョブを終了しますか(Y/N)」と表示されるようになる。「Y」を押す(実は「N」でも結果は同じ)。

Lama Cleanerのアンインストール

Lama Cleanerをインストールしたフォルダをそのまま削除すればよい。

なお、このフォルダは別の場所に移動するとlama-cleanerを見つけられず起動しなかった。

Lama Cleanerで作ったGIFアニメーション

Lama Cleanerをインストールしたのは、こういうアニメーションを作りたかったから。

Stable DiffusionにControlNetとAnimateDiffをインストールし、出力したGIFアニメーションのタイミングをGiamで調整して動きをダイナミックにした。

参考にした記事

Lama Cleanerのインストールで参考にしたのは以下。ありがとうございます。というより、この3つの記事を読んで1つにまとめたようなものである。

追記:宣伝を忘れてた

Stable Diffusionの解説本『Stable Diffusion AI画像生成ガイドブック』がソシムから出ています。ぜひご覧ください。

本の内容や目次
『Stable Diffusion AI画像生成ガイドブック』が3月31日ごろ出ます
書籍のサポートページ
『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)サポートページ

NHKスペシャル「新・ドキュメント太平洋戦争」

NHKスペシャルの「新・ドキュメント太平洋戦争」は面白いんだけど、コンセプトが「ドキュメント太平洋戦争」からまったく変わってしまっている。旧版は市井の人々や前線の兵卒の苦労話ではなく、なぜ戦争に負けたのかを分析し教訓を探る内容だった。

第1集「大日本帝国のアキレス腱 〜太平洋シーレーン作戦〜」(1992年12月6日)
(略)明確な目的もなく漫然と戦線を拡大していった大本営の無能と、その結果として通商破壊で商船の撃沈が相次いた悲劇を描く。
第2集「敵を知らず己を知らず 〜ガダルカナル〜」(1993年1月10日)
(略)同じ失敗を何度も繰り返し、教訓に学ぼうとしなかった大本営の傲慢さを描くと共に、現代の官僚機構や企業体質への警告として描いている。
第3集「エレクトロニクスが戦を制す〜マリアナサイパン〜」(1993年2月7日)
(略)科学技術を結集し防御装備にも重きを置いたアメリカ軍に対して、精神力と正面兵力の攻撃力ばかりを重視して、防御や最新技術を軽視した日本軍の姿を通して、売れる商品の開発に予算・人員を集中する日本企業が、本当に戦争から学んでいるのかを問いかける。
第4集「責任なき戦場 〜ビルマインパール〜」(1993年6月13日)
(略)無謀な作戦が強行された実態と、日本軍幹部の無責任体質がもたらした悲劇を描くと共に、責任の所在が曖昧な日本型組織の危うさを問う。
第5集「踏みにじられた南の島 〜レイテ・フィリピン〜」(1993年8月8日)
(略)現地の風習を無視し、住民を敵に回してしまった日本の軍政統治の拙劣さと、他国を戦渦に巻き込む事で生じる悲劇を描くと共に、現代日本が他国へ経済進出する際の教訓を問う。
第6集「一億玉砕への道 〜日ソ終戦工作〜」(1993年8月15日)
(略)国際感覚・現実感覚に乏しく、自らの都合でしか物事を考えない政府・軍部の姿を浮き彫りにし、日本人は第二次世界大戦の悲劇を忘れ、戦争を反省したのかを問う。
ドキュメント太平洋戦争 - Wikipedia

今日も17時からNHK総合で再放送される「日本人はなぜ戦争へと向かったのか」シリーズのほうがむしろ旧版の「ドキュメント太平洋戦争」に近い。再放送の第3回「“熱狂”はこうして作られた」では、売り上げ減を気にする新聞社が反戦記事への不買運動に負けて翼賛的な論調に変化する過程が描かれている。

ただ放送当時の反響が大きかったこの回にも不満はあって、翼賛調へ傾いていく新聞を買っていた一般読者の責任に踏み込んでいない。人々は読みたい記事が載っている新聞を買う。それは当たり前だけれど、そこで国民の多くが世界の情勢を正しく理解していれば開戦が無理筋だと理解できたのではないか。

戦後の国民は「すべて軍部にだまされていた」ということにして、開戦や戦争の遂行に対する自分たちの責任を放棄してしまっていないだろうか。「戦争はいけない」としきりに言うのも単に負けたからで、「今度は絶対負けません」と言われたらコロッと開戦論に傾きやしないだろうか。それが心配だ。

反戦番組の多くは冒頭に述べた「市井の人々や前線の兵卒の苦労話」が多い。反戦番組がないよりはずっとよいが、そもそも戦争に向かった理由や負けた原因を分析して、同じ悲劇が起きないようにする方法や教訓を探る番組ももっと作ってほしいものだ。旧版の「ドキュメント太平洋戦争」もぜひ再放送してほしい。

「やぶへび」「ガクチカ」などフレーズの4文字略語を集めたい

フレーズを4文字に略した言葉って面白いなと考えていて、気付いたら書き留めている。今までに集めたのは以下。なんとなく古くからありそうな順(適当)に並べた。

  • やぶへび←「藪をつついて蛇を出す」
  • カモネギ←「鴨がネギをしょってくる」
  • たなぼた←「棚からぼた餅」
  • きよぶた←「清水の舞台から飛び降りる」
  • ダメモト←「だめでもともと」
  • ポイ捨て←「ポイッと捨てる」
  • 早弁←「規定の時刻より早く弁当を食べる」
  • パンチラ←「パンツがチラリと見えている」
  • パンモロ←「パンツがモロに見えている」
  • 耳タコ←「耳にタコができるほど聞いた」
  • あけおめ←「あけましておめでとう」
  • ことよろ←「今年もよろしく」
  • たんおめ←「誕生日おめでとう」
  • なるはや←「なるべく早く」
  • 家電いえでん←「家の電話」
  • ウエメセ←「上から目線」
  • ちりつも←「ちりも積もれば山となる」
  • おま国←「お前の国では売ってやらない」
  • 微レ存びれそん←「微粒子レベルで存在」(「~の可能性が微レ存」というフレーズとして使う)
  • 隙自語すきじご←「隙あらば自分語り」
  • ほんこれ←「本当にこれ」
  • 残当←「残念ながら当然だ」
  • ガクチカ←「学生のときに力を入れていたこと」
  • オヤカク←「内定承諾の意思に関する親の意向の確認」

(以下は記事公開後の追加分)

  • あたおか←「頭がおかしい」
  • ブラチラ←「ブラジャーがチラリと見えている」

そのほかにもたくさんありそう。面白いものをブコメTwitter(現X)で教えてください。「ガクチカ」のような比較的新しい言葉、また「ウエメセ」のような俗語が好みです。除外する条件は以下です。

名詞は除外
「ケータイ」(携帯電話)、「編プロ」(編集プロダクション)、「パソコン」(パーソナルコンピュータ)など名詞を4文字に略した言葉は無数にあるため。
名詞だけを取り出しても通じるフレーズは除外
「完敗」←完全な敗北(完全敗北でも通じる)、など多くありそうなので。
作品タイトルは除外
こうしておかないと「ブラクラ」(BLACK LAGOON)、「あの花」(あの日見た花の名前を僕達はまだ知らない。)、「はにはに」(月は東に日は西に)、「金カム」(ゴールデンカムイ)、「おにまい」(お兄ちゃんはおしまい!)などなどが大量に押し寄せてきてしまうため。それはそれで集めると面白そうだけれどまたの機会に。

これだけだとものすごい数が集まってしまいそう。特にことわざが危ない。でもお願いします。

SD/WebUIのダークテーマを少し明るくするなど

AUTOMATIC1111版Stable Diffusion WebUI(以下SD/WebUI)はダークテーマでも起動できる。通常の白いページ(ライトテーマ)をまぶしいと感じてダークテーマを選ぶ人もいるだろう。

SD/WebUIをダークテーマにする方法は2つある。

①URLで指定する
ブラウザで「http://127.0.0.1:7860」(など)へアクセスする際、「/?__theme=dark」をつけて「http://127.0.0.1:7860/?__theme=dark」へアクセスする
②起動オプションで指定する
「webui-user.bat」の「set COMMANDLINE_ARGS=」に「--theme dark」を追加する。ブラウザをダークテーマに設定しているなら「--theme」だけでよいようだ

2つめの方法は起動後テーマを変更できないので、1番目の方法をおすすめしたい。

SD/WebUIのライトテーマ(デフォルト)
SD/WebUIのダークテーマはこんな感じ

しかししばらく使っていて、ダークテーマはちょっと暗すぎると感じるようになった。文字と背景のコントラストが強すぎて、しばらく見つめたあと白いところへ目を移すと残像が見えることがある。

そこでスタイルシートCSS)で調整することにした。SD/WebUIをインストールしたフォルダ(「webui-user.bat」などがあるところ)に「user.css」というファイルを配置して、SD/WebUIを起動したり「Reload UI」したりするとuser.cssを読み込んでくれる。内容はこのようにした。

.dark {
    --body-background-fill: var(--neutral-600)!important;
}
これが
こうなった

背景色を少し明るくしただけだが、これでだいぶ目に優しくなった。

ついでにライトテーマの背景も少し暗くしてみよう。「user.css」に以下を追加した。

:root {
    --background-fill-primary: var(--neutral-100)!important;
}
これが
こうなった

ライトテーマのまぶしさが少し軽減されたのではないだろうか。

こうなると欲が出てくる。ページ最上部の「SD VAE」や「Clip skip」といった設定項目の幅を小さくできないか。そうすれば、ここにさらにいくつか設定項目を表示できそうだ。

「user.css」に以下を追加した。ブラウザに表示している文字の大きさによって、各項目のちょうどいい数字は変わってくると思う。

div#setting_sd_vae {
  width: 260px !important;
  max-width: 260px !important;
  min-width: 260px !important;
}

div#setting_CLIP_stop_at_last_layers {
  width: 140px !important;
  max-width: 140px !important;
  min-width: 140px !important;
}

div#setting_save_mask,
div#setting_save_mask_composite {
  width: 159px !important;
  max-width: 159px !important;
  min-width: 159px !important;
}

div#setting_eta_noise_seed_delta {
  width: 120px !important;
  max-width: 120px !important;
  min-width: 120px !important;
}
これが
こうなった(画面最上部に注目)

設定項目を2つ追加表示できた。あと1つくらいならさらに追加できそうだ。

宣伝

Stable Diffusionの解説本『Stable Diffusion AI画像生成ガイドブック』がソシムから出ています。ぜひご覧ください。

本の内容や目次
『Stable Diffusion AI画像生成ガイドブック』が3月31日ごろ出ます
書籍のサポートページ
『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)サポートページ

「キー部5%」に参加して自作キーボードのことを思い出した

16日の日曜日、キーボードのイベント「キー部5%」に参加してきた。

以前はキーボードを自作した(が動作しない)ところまで来たのだけど、最近はごぶさたになっていた。

2021年12月の記事
親指シフトを意識したキーボードをSU120で作る

Stable Diffusionが去年の8月末に出てから画像生成AIを追うのに注力し、Stable Diffusion本を作るとなるとそれが加速して、ほかのことはすべて後回しになっていた。3月に第4回の「天キー(天下一キーボードわいわい会)」があり、今回もぜひ参加したかったが本の制作が追い込みで残念ながら欠席になったりもしていた。

天キー4のページ
天下一キーボードわいわい会 Vol.4 - connpass
天キー4の記事
3年4カ月ぶりに自作キーボードマニアが250人集まる! 『天下一キーボードわいわい会』開催! | Dig-it [ディグ・イット]
泣く泣く欠席した結果できあがった本

本が出たあとも画像生成AIには次々に興味深い新技術が出てくるため、自作キーボードの情報収集はすっかり止まってしまっていたのだった。でも時間はできたので、今回の「キー部5%」には参加できた。上の記事で作ったキーボードも持っていった。

この自作キーボードは配線がよくなかったようで動作はしない。それに親指シフト向けといっても、今親指シフトを使っているどころか知っている人は、自作キーボードに興味がある人でも多くはないだろう。でもキーボードを自作するという点では共通なので、ほかの参加者の皆さんといろいろ話ができた。

イベントレポート
キー部 5% 行ってきた - たのしい人生
当日の様子のネット中継
当日出展されていたキーボードの写真
キー部 5% (2023/7/16) - Google フォト

いやー、楽しいですね自作キーボード。人それぞれのアイデアがキーボードの形に具現化されるのはとてもすばらしいことだと思う。

そんな中で、1キーサイズのトラックボールが気になった。パレットシステムが出している「az1uball」だそうだ。

自分のキーボードにはロータリーエンコーダ(つまみをくるくる回してスクロールホイールや音量調整などとして使う)が2つある。いろいろ見る中で、ひょっとしてロータリーエンコーダは親指近くにあったらいいのかなと思って、そこを気にしながらほかのキーボードを見せてもらった。

ロータリーエンコーダつきのキーボードを展示している方に話を聞いた。親指の位置にロータリーエンコーダがあると、上からつまむのではなく軸の横に親指の腹をつけて回したくなる。実はこれがけっこう難しいという。なるほど、自分のキーボードにつけている市販の普通のつまみだと、親指とつまみの間の摩擦が少なく空回りしてしまう。ロータリーエンコーダの軸を回すのに必要な力が案外大きいということでもある。さてどうしよう。と思っていたところに「az1uball」を見つけたのだった。これならスクロールだけでなくマウスポインタそのものを動かすことができ、キーと組み合わせてクリックまでできる。

右手をどっこいしょとマウスまで移動して操作し、またどっこいしょとホームポジションへ戻すのはわずらわしい。これをせずにすむならいい感じだ。

というふうに、自分のキーボードをどうするかの指針ができてきた。分割キーボードに興味があったから分割にしてみたが、以前GL516(という自作キーボード用のケース)向けに同じレイアウトの一体型としてPCB設計までしたものがある。あれを実際に作ってみることにしよう。もちろん親指付近にはトラックボールがつくよう改良して。

そんな感じで、自作キーボードへの情熱が戻ってきた気がする。自分のメンタルと相談しながら、今度こそ動作するキーボードを作り上げたい。