Xiaomi Smart Band 8 でも秒数を表示したい!

はじめに

Xiaomi Smart Band 8, 軽いしバッテリー持ちもよくて良いんだけど, 秒数を表示できる文字盤が公式にないのが残念だった.

あと, デザインが気に入った文字盤も天気や気温を表示できなかったり, 心拍数を表示できなかったりと, なんかイマイチなので困っていた.

そこで, 文字盤を自作しようと思ったけど, 文字盤自作に関する日本語の情報ソースがなかったのでこのブログを書きます.

こんな文字盤を作れます

文字盤の作成

https://www.mibandwatchfaces.com/mi_band8_watchface_maker/

このサイトで json と画像をコネコネして文字盤を作る.

具体的なやり方は, まずいくつかほしい要素のあるテンプレートをダウンロードする.

そしたらそれらの文字盤の json をサイトにある Info を参考にしながら VSCode でガッチャンコし, 数字等の画像を GIMP で色味やサイズ調整する.

完成した json と画像を例のサイトに投げて自作文字盤を zip で DL する.

面倒ならこういうサイトとかから野良の文字盤を拾うといいんじゃないかな.

作成した文字盤のインストール

https://play.google.com/store/apps/details?id=asn.ark.miband8

このアプリを使う. (iPhoneは知らん, Apple Watch でも使ってろ.)

最近のバージョンの Android (正確には /storage/emulated/0/Android/data/ 以下へのアクセスが制限されているバージョン) では, SYNC DIRECTLY を選ばなければいけないので注意.

基本的にはアプリ内の指示通りに進めればインストールできるはず.

このアプリで文字盤をインストールすると一時的に Smart Band 8 と Mi Fitness が同期できなくなるが, 一度スマホBluetooth をオフにしてからオンに戻せば大丈夫.

RamDisk に Temp を置いていると HoYoPlay をインストールできない

TL;DR

ユーザー環境変数 "TMP" を RamDisk 以外に置け.


ゼンレスゾーンゼロをやるかー, となってインストーラを起動したらこうなった.

空き容量は足りているはずだが?

インストールしようとすると空き容量が足りないとエラーが出る.

別ドライブを指定したりサポートに連絡したりしたが解決しなかった.

4 TB 空いてるが?

他ドライブもだめ.

他ドライブもだめ2 (ツー) .

もうだめかーと思って一つ思い当たることがあった.

それは Temp フォルダを RamDisk 上に置いていること.

SSD の寿命を伸ばすことを目的としてこうしていた.

今までこれが原因で問題が起きたことは一度もなかったが, 一応試してみた.

R: は RamDisk.

これを,

TMP と TEMP を C:\Temp に変更.

こうした.

さて, どうなるかな……

おっ?

エラーが出てこない!

インストールできたーーー

インストールできたーーー

インストール後は再び Temp を RamDisk に戻しても問題なかった.

その後, 4つの TMP/TEMP のうちどれが原因なのか気になり, 調べたらユーザー環境変数の TMP だと分かった.

ユーザー環境変数の TMP だけ非 RamDisk にしたらインストールできた.

続・キャラクター再現 LoRA の作り方 (高品質なモデルを目指す)

前回, 簡単な LoRA の学習方法を説明した.

前回の記事で例示したパラメータは手軽さを優先したもので, 更に高品質を目指す余地がある.

今回はより高品質なモデルを作る方法について説明する.


データセット

まず, データセットは300~500枚ほど用意する.

hint: character_name, solo, sort:score:desc, pages:1-10

先日の記事のやり方のおよそ10倍の量を用意することになるので, 多分ここが一番時間面倒.

学習対象のキャラクターがメインに写っていない画像や, キャプションが正しくない画像は手動で弾いたり修正したりする.

学習パラメータ

画像の繰り返し回数は1でよい.

LR Scheduler は cosine.

Optimizer は Prodigy.

Optimizer extra arguments は betas=(0.9,0.99) safeguard_warmup=True safeguard_warmup=True use_bias_correction=True とする.

Leraning rate は1.

その他のパラメータは先日の記事と同じで大丈夫.

試してみた感じ, この設定で大体10 Epochs 程度で学習が完了する.

キャラクター再現 LoRA の作り方 (SDXL Pony)

データセットの用意

画像収集

最初に, 再現したいキャラクターがよく写っている画像を収集しよう.

大体30~50枚程度あれば十分.

集めた画像は専用のフォルダにまとめておこう.

因みに筆者はこのようなディレクトリ構成にして, dataset フォルダ内に画像をまとめている.

当記事ではこのディレクトリ構成を前提に話を進めていく

Pixiv や Twitter (現X) などから手動で集めてもよいが, このようなツールを使うと簡単に集められる.

github.com

キャプショニング

画像を集め終わったら, 集めた画像にキャプションを付ける.

この際, さっき紹介したツールで画像をダウンロードしていたならば, 既にキャプションは付けられているのでこの手順は必要ない.

それ以外の方法で画像を集めたならこの手順を参考にキャプションを付けよう.

まず, Stable Diffusion web UI をインストールする.

インストールの手順については README の Installation and Running の項を参考にしよう.

github.com

インストールが終わって Stable Diffusion web UI がブラウザに表示されたら, Extensions のタブを開き, 更にその中の Available のタブを開こう.

そうするとオレンジ色の Load From: と書かれたボタンがあるのでクリックする.

画像中に示されたテキストボックス内に wd と入力すれば WD 1.4 Tagger が出てくるので, その右ある Install ボタンをクリックする.

WD 1.4 Tagger のインストール手順

WD 1.4 Tagger のインストールが終わったら一度 Stable Diffusion web UI を再起動しよう.

Stable Diffusion web UI の再起動

再起動後には新たに Tagger というタブが追加されているはずだ.

Tagger タブを選択し, 更にその中の Batch from directory タブを選択する.

Input Directory に最初の手順でダウンロードした画像が含まれるフォルダのパスを入力する.

Output Directory には特に何も指定しなくてもよい.

Interrogator が WD14 moat tagger v2 になっているのを確認したら, オレンジ色の大きな Interrogate ボタンをクリックし, タグ付けが終わるのを待とう.

WD 1.4 Tagger の使い方

最初の実行時にはモデルをダウンロードする必要があるので少々時間がかかるが, 焦らないで待ってね.

パラメータの設定が終わったらページ最下部の Start training をクリックし, 学習が終わるまでのんびりと待とう.

学習 (ローカル編)

学習を始める前に Stable Diffusion web UI は終了しておこう.

次に学習に使用するモデルをダウンロードしよう.

今回は Pony Diffusion V6 XL を用いる.

ダウンロードにはそれなりの時間がかかるので, 次の手順を並行して行うとよい.

civitai.com

ローカルでの学習には Kohya's GUI を使用する.

インストール手順は README の Installation を参考に.

github.com

インストールが終わり, 起動したら LoRA のタブを開き, パラメータを入力していく.

まずは画像を参考に各自の環境に合わせてフォルダやモデルを指定しよう.

繰り返し回数_キャラ名というフォルダには, dataset フォルダの中身をコピーしておこう.

ここで 200 < 繰り返し回数 * 画像の枚数 となるように繰り返し回数を設定しよう.

例えば, 画像の枚数が30枚でキャラ名が miku ならばフォルダ名は 7_miku にする.

Kohya's GUI フォルダ編

次に学習のパラメータを設定していく.

ここが一番の鬼門であり, LoRA の出来栄えを左右する項目である.

以下に筆者が使用していた例を示す.

はてなブログだと画像が潰れて読めないかもしれないので, Google Drive にもアップロードしておいた.

Kohya's GUI パラメータ編

drive.google.com

ついでに config もアップロードしたので, 使ってみてね.

drive.google.com

これは SDXL - LoRA AI_characters standard v1.1 というプリセットからいくつかの項目を変更して VRAM 消費量を削減したものだ.

筆者は VRAM が 8 GB しかない RTX 3070 を使用しているのでこのような設定にしているが, もっと強い GPU を使用しているならもっとバッチサイズを大きくして学習を速めることができる.

パラメータの設定が終わったらページ最下部にある Start training をクリックして, 学習が終わるまでのんびりと待とう.


2024-06-24追記

今説明したのよりも, ちょっと面倒だけどより高品質な学習をさせるためのパラメータあるよ~.

0uts1de.hateblo.jp

(追記おわり)


学習 (Google Colab 編)

Google Colab は無料でも使用できるが, 快適に使いたいなら Pro 以上を推奨する.

大体1回 LoRA を作成するのに L4 GPU で90分かかる.

A100 にはなかなか繋がらないので知らん.

Colab での学習にはこのノートブックを使う.

colab.research.google.com

学習パラメータは学習 (ローカル編) を参考に調整すると成功しやすいかも.

用意したデータセットGoogle Drive に入れて学習を開始すれば後は待つだけ.

ただし, Pro+ でなければバックグラウンド実行はできないので, 学習中はタブを開いたままにしておこう.

(なお経験上 Pro でも5分くらい離れてもリソース確認ができなくなるだけでインスタンスは残っている.)

おしまい

4090 欲しい!!!

第10世代以降の Intel プロセッサを搭載した PC で, UE4 によって作られたゲームが起動しないとき

イベントビューアーを確認して

例外コード: 0xc0000005

障害オフセット: 0x0000000000019d63

となっていたなら,

環境変数名: OPENSSL_ia32cap

値: ~0x20000000

このように設定すれば起動するようになることがある.

特定のバージョンの UE4 で静的にリンクされている OpenSSL に存在するバグが原因らしい.[1]

[1]https://steamcommunity.com/app/813630/discussions/0/2449343663462327665/?ctp=3#c2971776551535584364

PC 組み立てた記

組み立てたのは去年の11月なんですけどね. 今更ですが講評しようと思います.

構成

構成は以下の通り.

では, 講評しようと思います.

講評

CPU

KF ではなく K を選んだのは QSV が使いたかったから.

空冷で冷やせるのはこれがギリギリだと思う.

ASRock マザボのデフォルト設定では電圧盛りすぎで発熱がエグいため, ある程度低電圧化するといい感じ.

P-Core 5.3 GHz, E-Core 4.3 GHz にオーバークロックして使ってる.

CPUクーラー

皆さんご存知コスパ最強クーラー.

180 W 程度までなら冷やしきれる.

グリスにはアイネックスのナノカーボングリスを使った.

GPU

中古品です. ショップの保証付きで4.7万円だったのでいいと思う.

分解歴はなかったけど, 自分で分解してグリスを塗り替えた.

購入するサーマルパッドの厚さを間違えたので, 本来はサーマルパッドを用いる VRAM や 電源回路をグリスで熱伝導させてある.

きっとそのうちサーマルパッドを買って貼り直す.

M/B

Z690 チップセットマザーで最安値だった.

デフォルト設定の電圧盛りすぎということ以外に不満はない.

RAM

組み立て当初は CFD Standard の 16 GB * 2 を使っていた.

このメモリが問題で, 自称 JEDEC 準拠のネイティブメモリなのだが, なんと 3200 MHz で POST しない.

メーカーの互換性確認済みリストに無いものを選んだ自分が悪いのだけど, まさか今の時代にネイティブメモリで相性問題が発生するとは思っていなかった.

2666 MHz で安定している.

しばらくして, ローカルで大きめの言語モデルを動かしたいという欲が出てきたので, メモリを買い足すことにした.

反省を活かして, メーカーの互換性確認済みリストにある上に, 信頼の置ける Crucial 製メモリを買うことにした.

こちらはすんなりと動いたし, Memtest もパスした. さす Micron.

96 GB の RAM は心の余裕を生む.

最近は使用量が 32 GB を超えることも多いので増やして本当に良かった (VRAMも増やせればいいのに).

SSD

SSD はファブを持っているメーカー以外からは買わないようにしている.

2 TB の Exceria G2 に Windows を, 512 GB の Exceria G2 に Linux Mint をインストールしてデュアルブートにしている.

660p はノートにデフォルトで搭載されていたけど, 買った当日に換装したので余っていたものを使いまわしただけ.

QLC 故に書き込み性能が終わっているので, ゲーム専用ディスクにしている.

HDD

選定理由は宗教と CMR 方式を採用しているから.

IntelliPark を無効化して長寿命化を狙っている.

PSU

電源容量は CPU の TDPGPUTDP の合計の 2 倍という説が蔓延っているけど, 絶対過剰だと思う.

CPU と GPU が同時にフルロードすることなんて滅多にないので.

ケース

選定理由は値段.

Zalman T8 のほうが安いけど, そちらはエアフローが良くないらしいのでこっちにした.

サイドのアクリルパネルに開いている取り付け用の穴の位置が少々ズレていたけど, 安いので妥協.

フロント USB ポートは 4 つあるけど, あまり電流を供給できないので, 無線ドングル (Wi-Fi, BT, Unifying) とヘッドセットで埋めている.

フロントのメッシュに吸気方向でファンを増設してある.

モニタ

VA パネルで 165 Hz.

思ったより色は綺麗で視野角も広かったので満足.

モニターアームが欲しい.

OS

Windows の Home エディションって意外と縛りがあって不便なので Pro にした.

Linux Mint は見た目が好き.

最近は WSL で事足りることも多いけど, やっぱり Linux はよい.

おわりに

グラボ欲しい.

謎の AI 半導体メーカーは VRAM をケチるな.