顯示具有 電腦 標籤的文章。 顯示所有文章
顯示具有 電腦 標籤的文章。 顯示所有文章

2023年6月5日 星期一

在樹莓派玩AI算圖,使用篇(模型轉檔)

這兩篇文章都只是隨筆等級的,之後有要補充什麼可能會回來編輯

安裝篇提到的參考來源,裡面的範例程式app.py是使用上的基礎,要算圖就先去看他怎麼寫的

因為用diffusers的關係,模型必須符合diffusers的格式,也就是包含一個model index和scheduler、text encoder、tokenizer、unet、vae等資料夾的型態...不符合也沒關係,可以轉檔

並且在各資料夾內的檔案格式,避免是bin檔,而是使用safetensors檔來免除載入記憶體的大麻煩

先講個小地方:model_index.json裡面的scheduler,如果是PNDMScheduler,個人偏好改成DDIMScheduler,我覺得PNDM的表現實在不怎樣

這裡是很重要的參考資料:

https://huggingface.co/docs/diffusers/index

轉檔的時候會用到這裡面的scripts,不過好像有檔案相依,所以把整個專案用zip壓縮抓下來,找個妥當地方解開備用,然後切換到你下載模型的資料夾去,這裡假定你下載了一個單檔safetensors的模型:

python /home/pi/diffusers-main/scripts/convert_original_stable_diffusion_to_diffusers.py --from_safetensors --checkpoint_path='v1-5-pruned.safetensors' --to_safetensors --dump_path='output/'

這樣模型就會拆開成適合diffusers使用的型態,並且各資料夾內的檔案會是safetensors

如果下載回來的是ckpt,就不要加--from_safetensors,如果有特殊需求要拆成各資料夾是bin檔,就不要加--to_safetensors

有些時候,模型需要搭配特定的VAE,但是又沒有包好,導致拆出來的模型算圖顏色不對,可是diffusers也不吃.vae.pt?轉檔,不過這次事情稍微複雜一點:因為轉VAE的script沒有考慮到要轉成safetensors的需求,所以不能帶參數要它轉出safetensors,轉出來也固定是bin。這也不難解決:

去scripts目錄找出convert_vae_pt_to_diffusers.py,複製貼上改成convert_vae_pt_to_diffusers_safetensors.py方便辨識使用,然後打開新的檔案,把140行vae.save_pretrained(output_path)改成vae.save_pretrained(output_path, safe_serialization=True),就有一個可以轉出safetensors格式VAE的工具了

題詞太長怎麼辦?webui可以設定題詞強度,diffusers可以嗎?
可以裝lpw來達成,參考https://self-development.info/%E3%80%90stable-diffusion%E3%80%91%E9%95%B7%E3%81%84%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

在樹莓派玩AI算圖,安裝篇

這篇文章是我開玩一段時間以後,才憑印象寫的,可能會多少有點小錯誤,不過大方向應該沒問題啦

stable diffusion最常見的操作界面往往是個網頁,一般叫他webui,這對樹莓派來說有點太重了...事實上目前為止我也沒有成功把webui裝起來

因此樹莓派需要的,是使用名叫diffusers的工具來簡化操作,並且所有算圖操作都會用寫python指令的方式完成

 一開始的參考文章是這篇:

https://github.com/straczowski/raspberry-pi-stable-diffusion

使用的硬體是樹莓派4 8GB版本,有裝散熱片。512GB的記憶卡(不要小於128G,至少256G,模型很吃空間的)

第一件他沒講的事情:把樹莓派的swap(虛擬記憶體)改大一點,改法先自己查,我是直接改到16G,這和顯卡算圖不同,因為是cpu算圖,吃的是主記憶體,所以記憶體不足的時候,是可以把硬碟(SD卡)拉來坦的...但是這種行為對快閃記憶體來說會扣血,所以比較像是備而不用,偶爾用一下沒關係,不要拼命用就好

其他還有幾個地方不要完全照做:

    總之先把python盡量更新一下,寫文章時樹莓派最新是3.9版

    不要急著進文字模式,其實可以在gui模式做完所有事情。如果你是讓視窗養大的希望這句話可以讓你安心點(?

    雖然裝了git lfs,可是在我實戰的時候,下一行git clone會直接把記憶體塞滿然後死當(????);改打git lfs clone可以迴避問題(不過會跟你說這方法以後遲早會拔掉。另外,上面講的swap改大有可能解決這問題

所以到這邊為止要敲的指令是

git lfs install

git clone https://huggingface.co/runwayml/stable-diffusion-v1-5

pip install --upgrade diffusers 

 繼續往下的時候,電腦會說要安裝transformsers和pytorch,照著提示安裝就行(以下憑印象):

pip install transformers

pip install torch torchvision torchaudio

這裡有個地雷要迴避:pytorch2.0版的arm執行檔是壞的 ,請手動裝1.3版或者去抓最新的2.01版(寫文章時最新)來裝(看到討論有人回報說在AWS的arm伺服器上一樣會炸掉我快笑死)

接下來有個跟記憶體使用量非常有關係的東西要裝:

pip install safetensors

這元件能讓diffusers可以直接吃safetensors格式的檔案。這有多重要?

裝了這個,算圖階段不需要把模型讀到記憶體佔空間!程式只會在需要的時候,直接去讀SD卡上的safetensors檔案需要的部份。我說不需要進文字模式,也是因為這個元件的存在。參考文章的老兄如果有裝到這個應該玩瘋了吧w

2019年2月11日 星期一

Raspberry pi 3B+,node red連接小米溫溼度計的flow

其實還有另一個flow是控制我以前用esp8266做的小燈的開關啦...

Raspberry pi 3B+,node red安裝、node red支援藍牙節點

這步可以很簡單,我卻雷殘好多次

Raspberry pi 3B+,初始安裝、RTC安裝

這幾篇比較接近放假時的玩樂筆記,在回到工作之前寫下來,給以後的自己當作筆記看

2018年7月10日 星期二

windows(10)以萬國語系列出檔案清單(dir)避免檔名亂碼(unicode)

先上解答
chcp 65001
X:
dir /b /s >testdir.txt

chcp 65001會切換字碼表到65001(utf8)直到這個cmd視窗關閉
X:是切換工作路徑到某個硬碟根目錄(你也可以先切)
dir /b /s >testdir.txt就是把工作目錄的檔案列表存到文字檔,每個檔案都帶有完整路徑(但是沒有檔案時間和檔案大小,應該說好像沒辦法和完整路徑一起用)

另外,我爬資料的來源說那個字碼表切換似乎有失敗的機會...會讓cmd當掉的樣子,不過不清楚是為了顯示出來才當掉還是切換就會當。不過我的目的是印進文字檔,所以如果是前者,那我應該剛好閃過了

總之,這樣就能把混雜中日韓文檔名的資料夾結構也正常印出來,不會滿臉問號了w

參考資料:

註:有看到另一個概念好像一樣的用法是cmd /u,試過沒用(有其他效果啦),應該不是治這個問題用的

2018年5月27日 星期日

ubuntu禁止滑鼠喚醒睡眠中的電腦

動力來自電力供應不足...好啦其實就是我以前過得太奢侈了都在浪費電orz

點進來之前,我用的其實是lubuntu分支,並且禁止的是所有usb喚醒(參考資料有禁用單一裝置的方法)。符合需求請往下看

2015年5月2日 星期六

linux高品質聲音之二,直接跳過系統重取樣輸出音樂

上一篇追求音質的惡搞裡面,我用了直接改掉整個系統設定的方法來達成目標,結果在14.4的時候發生其他軟體的音效設定對不起來,反而變成沒聲音的慘劇!

不過呢,看到MEEEEE大的回文以後,猛然驚覺!

是啊!把播放程式的輸出目標改掉,預設是輸出到系統混音單元,那就改輸出到裝置,這意思就和foobar2000註明的核心音訊流(Kernel Streaming)一個樣啊。那我之前還搞的這麼複雜,真是!@#$%&*...


就是這邊,預設音訊裝置會輸出到系統混音去混一混再輸出,改成直接選下面裝置,就可以讓輸出串流不經過系統混音,直接輸出到指定裝置去了。

不經一事不長一智,沒想到就這麼簡單啊...


至於其他軟體想用改系統取樣的方式雞犬升天只能說抱歉了...因為系統混音的取樣轉換沒有deadbeef這麼講究用sinc算法,所以其他軟體的輸出應該沒什麼差別...

2015年2月15日 星期日

修改lubuntu的預設瀏覽器

這問題好像上次就遇過了,不過上次糊里糊塗的好了就沒弄清楚;這次又碰上了,找到解法,記錄下來。

主要的問題是lubuntu 14.4現在的預設瀏覽器採用firefox,不過我被google綁標了...所以要用chrome,結果skype收到別人的訊息帶連結的,點下去卻又用firefox開了。

第一個想到要改的大概都是偏好設定裡的LX預設應用程式,把瀏覽器選成chrome。不過這設定好像只對LX有效,上網查了別人的解法,看起來skype是不看LX的設定...他直接看整個X的設定(似乎是這樣),改LX預設是改不到整個X的。

解法也簡單,一行命令下去
sudo update-alternatives --config x-www-browser

因為是sudo,所以會跟你要具有管理權的密碼
接著會出現幾個選項給你選,基本上就是你已經安裝的瀏覽器,用輸入數字的方法選你要讓哪個成為預設值
替代項目 x-www-browser(提供 /usr/bin/x-www-browser)有 2 個選擇。
  選項       路徑                     優先權  狀態
------------------------------------------------------------
* 0            /usr/bin/firefox            40        自動模式
  1            /usr/bin/chromium-browser   40        手動模式
  2            /usr/bin/firefox            40        手動模式
按 [enter] 保留目前選項 [*],或輸入選項編號:1
update-alternatives: 以 /usr/bin/chromium-browser 提供 手動模式 中的 /usr/bin/x-www-browser (x-www-browser)

以我的情況就是按1選成chrome...
...以後skype點開連結就會去找chrome開網頁了。固的。

2014年12月8日 星期一

小小殼改裝文

看到某人貼的自家製diy鋁機殼,心底小小悸動了一下...就來曬一下自己的小小機殼吧

(以下照片不是同時間拍攝,有顆風扇換過了,所以會不太一樣)

2013年10月22日 星期二

linux要享受高品質的聲音...取樣率要和windows一樣要斤斤計較(lubuntu的alsa修改預設音效取樣率)

2015/05/01更新:新的改法(適用deadbeef player),感謝MEEEEE大

首先要提一下ac97和hdaudio,不過我只簡單提一下取樣率的那些事

ac97規定音效卡的取樣率是48khz,深度16bits,遵守就對了...你做更多功能ac97也不會多支援的
hdaudio除了48k/16bits之外,可以支援到96k/24bits,似乎允許混搭(例如工作在96k/16bits)

問題來了,cd用的44.1khz從來沒被支援過。

於是市場上有不少稍微講究點的卡片就這樣冒出來,同時支援了ac97、hdaudio用的48k和96k取樣,還額外支援了cd的44.1k取樣,只要你的播放程式支援,就能夠在不做重新取樣的情況直接輸出cd品質的聲音

至於內建音效嘛...雖然spec寫說晶片有支援,可是往下翻幾頁就會看到支援方式...把44.1k塞幾個重複的取樣點變成48khz,難怪不好聽。

於是高品質的軟體重取樣就登場了。

高品質的軟體重取樣技術,是基於傅立葉的數學公式,使用sinc放在每個紀錄點上面加總,藉此有限的重建出更細密的原始訊號波形...當然還是要遵守取樣限制啦,就是取樣率最高只能紀錄到取樣率一半頻率的那個限制...

既然可以重建出細密的訊號波形,那就可以用正確的速度和符合硬體限制的取樣率再重新取樣一次,然後輸出...是的,基本上就是作白工繞遠路,不過差異是聽得出來的。

而我習慣的設定,則是完全倚重重取樣,將44.1khz取樣率的訊號「拉皮」用96khz輸出,至少在理論上能夠將sinc重建的訊號波形的所有細節,都盡可能的輸出。使用96khz的理由則是因為我周圍的機器都已經支援到96k的輸出能力了,偏不好好支援44.1k(嘆


有在windows用過foobar2000的使用者,應該都對那堆難搞的設定有印象,偏偏foobar2000又是windows上音質出名的播放程式,而他其中一個有梗的地方,是可以使用dsp做軟體重取樣來配合一般電腦不怎樣的內建音效晶片的聲音取樣率...當然不能讓一顆一塊美金的便宜音效晶片身價暴漲,但是至少可以讓他「演得像一點」,不至於被內建的簡易取樣率轉換毀掉音質。

我曾經讓同學盲聽測試,不開重取樣直接播放air原聲帶第一曲,那些鋼琴音銳得像是刀片,就連便宜的mp3都比較好聽;開了重取樣之後,聽起來就正常多了...當然不能和有點身價的音效卡pk,也算是聊勝於無啦...

當然,linux上的deadbeef,也有這樣的重取樣dsp能用,也可以設定重取樣到什麼頻率去...如果王子和公主真的幸福美滿那我就不用寫啦!那個重取樣設定最後還是要跟著你的系統音效處理跑啊!

我剛用linux不久,也只知道一個alsa音效層,這一層做了一件事情,一件軟體工程師會笑,音響工程師會哭的事情
他又重取樣了一次!對!他又重取樣了一次!有沒有很熟悉?windows也會這樣重取樣一次!所以foobar2000才要搞出核心音訊流和asio繞過win那層機車api,結果到了linux他又重取樣了一次!

也就是說,就算我在deadbeef用高品質的sinc重取樣「拉皮」到96k取樣,輸出之前經過alsa又要被alsa用內部設定拉...到設定值去。

我不清楚linux尤其是各發行版在安裝的時候會怎麼設定這個值,不過我用的lubuntu12.4看來是用了一個安全值,48k取樣,一個通吃ac97和hdaudio還有幾乎所有音效卡的設定,說不定對一些軟體來說也是個安全數值。

不過我想發揮全部的音效潛力...呃,我說的是升頻之後

所以,來改系統取樣率啦!

放個我自己也很悶的警告:lubuntu14.4.1照文章修改可能導致chromium裡youtube無聲音但是niconico有聲音(重開後才發生,超無言),有請高手分享解決辦法,感恩orz

參考資料,alsa的網頁:http://www.alsa-project.org/main/index.php/Asoundrc

alsa的網頁提到了一個alsa設定檔,只要修改這個設定檔,就能夠改變一些進階設定...

...再次聲明,玩掛了不要找我負責,因為我也不懂(炸

首先可以在終端機輸入cat /proc/asound/card0/pcm0p/sub0/hw_params看到你的alsa部份設定,其中就有關於取樣率的設定

參考資料,ubuntu的問答:http://unix.stackexchange.com/questions/74558/change-sampling-rate-in-alsa

rate這項就是目前的系統取樣率了。如果你想要把系統取樣率拉高到硬體的最高設定,那就打開那個alsa設定檔吧。以我的電腦為例,他在usr/share/alsa裡面,那個alsa.conf就是了

要注意的是,這個檔案的所有人是root,你必須用root權限才能修改這個設定檔

要修改的是這行

defaults.pcm.dmix.rate 48000

我的內建音效晶片最高可以工作到96k,那麼我就改他變成:

defaults.pcm.dmix.rate 96000

最後存檔

可惜目前還不知道有沒有辦法只在某軟體運作的時候用特定取樣率(例如有好音效卡的話,播放時使用44.1k,播放停止就回到系統設定)

接下來重開deadbeef,外掛裡面那個alsa輸出設定的「使用alsa再取樣」可以拿掉了,dsp裡那個resampler就讓他重取樣到你設定的,呃,像我就是96k。理論上這次他會乖乖的重取樣到96k並且輸出96k了。


釋疑:就算沒大費周章改alsa,重取樣還是可以設定成96k?

答:就算重取樣到96k,只要外掛那個alsa輸出設定的「使用alsa再取樣」沒拿掉,那96k會再被轉一次,使他和alsa輸出設定相同...就真的做白工了


釋疑:不改alsa設定,只把「alsa再取樣」取消會怎樣?

答:理論上重取樣的dsp應該要去跟alsa要一個96k輸出的通道來用(大概吧)不過載我的電腦顯然是沒去要來,反而讓音樂播放速度變成0.5倍速了orz(96k用48k播放剛好是半速)


釋疑:這麼麻煩,我插張好音效卡搞定他?

答:除非deadbeef哪天學foobar2000搞個核心音訊流什麼的方法繞過alsa重取樣,否則,換了卡片還是要去改alsa...只是這次你可以改成44100或者他的倍數了


釋疑:沒圖沒真相,我看不懂

答:我在逃避所以才跑來寫這個不能當論文發的鬼東西,寫寫又想睡啦,哪天有想到的話再考慮補圖吧...而且我也不知道要補啥w

2013年9月3日 星期二

在ubuntu使用串列UART界面或者USB UART轉接器(gtkTerm無法打開ttyUSB0的解決辦法)

這篇文章是在說明當你裝好了像是gtkterm之類類似超級終端機的程式之後,卻碰到如Cannot open /dev/ttyUSB0: Permission denied之類錯誤的解決辦法。

網路上幾乎都是說去敲什麼什麼指令,不過這篇文章的解法只需要動滑鼠就好...(而且那個指令不懂功能亂敲好像會有風險w)

對了,我用的是lubuntu,麻煩ubuntu使用者自己找一下名稱類似位置類似的地方有沒有長得很像的選項可以用...

2013年5月12日 星期日

linux/ubuntu系的os沒找到主機板溫度/風扇資訊的解決辦法

其實也不難...
1.裝好lm-sensors之後(不管你是敲指令安裝還是synaptic安裝)
2.打開終端機
3.輸入sudo sensors-detect,這可以讓他重新偵測電腦上的所有感應器,務必按照畫面上的提示操作
4.首先他應該會問你你的root密碼...因為你用了sudo
5.之後是一大堆全英文問答問你要不要在電腦的哪裡找找看有沒有感應器,懶的看就一路yes到底,不過還是看一下比較安全啦基本上就是你yes到底結果電腦掛了不要找我的意思
6.重點在最後面,他全都偵測完之後,會列出你的系統應該要啟動哪些東西才能秀出這些感應器的資料,馬上就接著下一個問題問你說他可以幫你把這些該啟動的東西加進系統,要加嗎?
當然要加啊!
加好以後不會馬上作用,要下指令要求系統重新照列表啟動一次...如果你看得懂這句話你應該會操作,不會操作或者看不懂那就......用windows的老方法重開機吧wwwwwwwwww
7.重開機完以後這些資料就可以被應用程式調用、顯示出來了。我裝了psensor和xsonsers兩隻都能夠顯示像是溫度或者風扇轉速的資料我絕對不會承認我裝兩隻是因為本來以為是這些前端程式的問題才不能顯示

2012年4月9日 星期一

在fedora16啟用觸控板的點選功能

其實我裝的是lxde版本,所以也不知道其他版本會不會有類似問題就是

2012年1月16日 星期一

ATI THEATER 550 PRO之自製梅花線

這兩天有根筋不對,跑去網拍買了一張電視卡...

2012年1月5日 星期四

你的一文不值,我的適才適所--HD6450入手與HD5450散熱改裝

今天顯然有點恍神,迷迷糊糊的...(恍神的原因估計是期末考症候群(?
...回過神來的時候

2011年9月30日 星期五

關於筆電與底座的新想法


我還蠻喜歡技嘉那種直立式的底座就是...不過今天早上突然有了點新想法就寫下來

2011年9月14日 星期三

IROCKS RF6496無線鍵盤(鍵鼠組?)入手


其實這隻出來之前羅技就出了一把類似的產品,不過觸控區域感覺就...小。好死不死前後用幾隻艾瑞克感覺都不錯,觸控板設計也很適合在電視前面用所以就手滑了...(你能想像拿一隻滑鼠到處找平面嚕還感應不良嗎XD

2011年9月4日 星期日

圖解N3DS連線到日本的原理(不是實作)

其實我看一些教學沒寫清楚原理,偶爾會搞不清楚到底是在做什麼,偏偏我又覺得沒搞清楚原理就不會真正懂...正好有人問我這東西(如何用N3DS連線到日本取得專用的立體節目),我就用小畫家畫張簡圖給他看
灰色粗線條是本來的普通網路,黑色細線條是經過VPN的連線路徑
其實會貼上來有一半是覺得我用小畫家畫到這樣很強大的樣子,但是一大堆高手比我強大就是了w