Termuxとstable-diffusion.cppを使って、メモリ3GBのスマホでSD1.5のLCMモデルで画像生成します
他の方に説明できる自信がないので、自分が後から見て分かる程度の説明とします
コマンドが間違えている可能性があります
前回は低スペックのデスクトップPCで画像生成をしました
今回はメモリ3GBのスマホでLinuxのターミナルが動くようにして、Linux上でstable-diffusion.cppを動かしてSD1.5のLCMモデルで画像生成します
Linuxのターミナルが動くようにするにはTermuxのアプリをインストールします
GooglePlayにあるものは旧式であり機能に制限があるそうです
野良アプリストアのF-Droidをインストールして、F-DroidのアプリからTermuxを検索してインストールします
Termuxを起動したら$ pkg update と $ pkg upgrade でパッケージを最新のものに更新
$ termux-setup-storage でアプリに権限を与えてスマホ内のファイルを参照できるようにします
$ pkg install git と $ pkg install cmake でそれぞれgitとcmakeを使えるようにします
stable-diffusion.cppの公式サイトに行き、説明の通りにリポジトリのクローンとビルドをします
( https://github.com/leejet/stable-diffusion.cpp )
Get the Codeの項目の2行と、Build from scratchの項目の4行のコマンドを実行すればOKです
Termux内のファイルは通常は他のスマホアプリから見ることはできません。しかしスマホ標準アプリのファイルであればアクセスして読み書きすることができます
起動方法はスマホの設定→ストレージ→ファイル です
ファイラーが起動したら左上の 三 のマークのボタンを押してメニューを開くとメニューの下にTermuxがあり、フォルダの一つのように扱うことができます
ビルドが終わると、termux → stable-diffusion.cpp → build → bin のフォルダの中にsdという名の実行ファイルができています
できたsdを、ファイルのアプリを使ってTermux内の一番上位のフォルダに移動します
SD1.5のLCMモデルであるtheHWondermix_v1.safetensorsをインストールして同じく一番上位のフォルダに移動します
WiFiファイルエクスプローラPROは有料アプリですが、同じwifiネットワーク上にあるパソコンからブラウザを使ってスマホのファイルにアクセスできて便利です
今回はモデルはパソコンでダウンロードして、WiFiファイルエクスプローラPROを使ってスマホに送りました
パソコン上でtxtファイルに書き込んでスマホに送ることで、コマンドプロンプトはスマホ上ではコピペだけで済むようにしました
sdには実行権限がないので $ chmod +rwx sd で権限を与えます
このコマンドで画像生成します
./sd --model ./theHWondermix_v1.safetensors -H 448 -W 448 --steps 10 --sampling-method lcm --cfg-scale 1.0 --seed -1 --type q8_0 --clip-skip 1 --diffusion-fa --prompt "girl, A girl in a dress is holding an apple in both hands. Looking up. Anime style, cinematic, dramatic lighting, high resolution, detailed, 8k" --negative-prompt "blurry, toy, clay, low quality, flag, nasa, mission patch"
スマホの3GBのメモリでは448x448ドットのサイズの画像生成が限界でした。512x512ではアプリが落ちてしまいました
画像サイズの指定は64の倍数のみ対応のようです
Tiny Decoderは入れると動かなかったので今回は外しました。
生成時間は17分16秒でした
sdと同じ場所に output.png という名で画像ファイルが生成されるので、ファイルのアプリで画像を開いて見たり、スマホ内のフォルダに移動します
駆け足での説明でしたが、終わります
Termuxはスマホでできることが広がって、面白いアプリだと思いました
・参考
個人的Termuxのセットアップメモ
https://zenn.dev/ryuu/scraps/6b2584294674b7
Termuxの基礎知識
https://zenn.dev/okayurisotto/articles/d5759e39a5674e
超省メモリQ4.0量子化Stable-diffusion.cppを使ってたった4GBしかメモリがないFire Max 11とTermuxで画像生成AIを動かした。swap 900MB入れてなんとか持ちこたえてる。メモリの少ない機種の人に特にオススメ。NetBSDでも動いた! - posfie
https://posfie.com/@kapper1224/p/GHOWyRb
元 バイク野郎のひとりごと: Termux のディレクトリやファイルを Android 側でも操作できるようにする
https://bike8615.blogspot.com/2024/11/termux_20.html
Linux での「許可が拒否されました」エラーの修正
https://ja.linux-console.net/?p=9848
・メモ
stable-diffusion.cppは、Nvidia GPUのCUDAや、AMD GPUのROCmを使うことができるみたい
FastSD CPUは、intelのOpenVINOを使ってNPUを使うことができるみたい
呪文
呪文を見るにはログイン・会員登録が必須です。