Airspyの新ドライバ ― 2022/11/23 10:05
Libre Spaceのコミュニティで新ドライバにてgainmodeが追加されたことを知った。 従来のドライバ:SoapyAirspyだと,ゲイン設定が難解なマニュアルのみで linearity,sensitivityなモードを利用した簡易設定ができなかった。
$ SoapySDRUtil --probe ... ---------------------------------------------------- -- Peripheral summary ---------------------------------------------------- Channels: 1 Rx, 0 Tx Timestamps: NO Other Settings: * Bias tee - Enable the 4.5v DC Bias tee to power SpyVerter / LNA / etc. via antenna connection. [key=biastee, default=false, type=bool] * Bit pack - Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB trafic. [key=bitpack, default=false, type=bool] * Gain Mode - 0 = linearity, 1 = sensitivity, 2 = manual [key=gainmode, default=0, type=int]
トライしてみたら,Pi4が[INFO] SoapyAirspy::rx_callback: ringbuffer write timeout なるエラーっぽいメッセージを吐いたので,GitHubにissueを作成して,作者とPE0SAT局からのアドバイス(主にラズパイのパフォーマンス設定)を試したら,USBケーブルの交換が効いて発生回数が激減した。問題は自分のハードにあったというオチだった。
ついでに書くと,放置していたOverrun,Underflowな問題は,Airspy MiniをUSB3端子に接続することで解消できた。
nn-morse ― 2022/11/26 18:46
ディープラーニングを使ったモールス信号の解読,次は学習を体感すべく,PD0WM局のLSTMによる実装nn-morseを試した。
機械学習は教師データが命だが,モールス信号だと実データを用意しなくても, プログラムで トーン周波数,送信速度,信号/ノイズ強度を変えたサンプルデータを合成すれば良い.見本になっている。
torchな環境を構築して,作者が提供するモデルを使って,実データ/録音したwavファイルを食わせた/再生したら,デコードできない 😟
コードを眺めると教師データのトーン周波数が 100-950Hz だったので,実データに合わせて 200-2800Hz として再学習したらLOSSが0.3あたり(2000 step)でサチった。このアタリはTensorBoardを使ってプロット更新をモニタリングできたので,簡単だった。
ちなみに,学習に要する時間は,WillemさんのGPU(Pascal世代)では半日と書いてあったが,自分のCPU(core i5)では5日かかった。 学習で数時間回したらCPU温度計が真っ赤になったので,長期・連続運転を見越して,Turbo Boostを無効化してCPU温度を下げておいた。計算にはメモリも必要みたいで,主記憶16GBのうち7.4GBを使用していた。
新モデルを以下の3衛星でベンチマークしたら,解読の正答率がsatnogs-clientより高くなって良かった。
HUS-SAT1 耳コピーだと後半部は難しいよね
・・・ 0JS1YHSHSUSAT104.19V0.10A8.46DEEEEETETTTE ・・・
KOSEN-1 符号:ハイフンを教えるのを忘れてた
・・・ R5YGJ KOSENV1 S13E1E 93 AE S21E 00 00 00 ・・・
KITSUNE データ部はデタラメですね
・・・ 3G6YNH KITSUNE D390A534 ・・・
本日の衛星: JO-97で交信,FALCONSAT 3をデコード!PSLV-C54で打ち上げられた衛星(Thybolt)は予約して寝ます。
Thyboltを受信 ― 2022/11/27 12:18
新衛星,深夜パスは不発だったが,午前パスではThybolt-1のCWビーコンが強力に入感していたので,受信レポートをDhruva Space webから送っておく。
Mission infoのページには,Store-and-Forward messagingなミッションが言及されており,今後が楽しみな衛星です。
その他の衛星: HO-113, CAS-4A, RS-44で交信。
GPU機械学習環境の構築 ― 2022/11/29 18:50
機械学習を手軽に試すため「kepler世代,Compute Capability 3.5」な中古GPUカード(ハーフサイズで外部電源不要)を3千円で購入した。
使っているPyTorchのバージョン(1.10.0)に合わせて,nvidia-driver(470.141)⇛CUDA(10.2)⇛cuDNN(7.6)の順番にインストールして,morseangelを試したら, PyTorch no longer supports this GPU because it is too old. と表示されてCUDAが使えない!
>>> print(torch.cuda.get_arch_list()) ['sm_37', 'sm_50', 'sm_60', 'sm_70'] >>> print(torch.cuda.get_device_capability()) (3, 5) 💦
この条件にあう・入手可能なGPUはPascal世代になるが,予算オーバーなので, Kepler世代のグラボ向けにPyTorchをビルドする記事を参考にして 野良ビルドして切り抜ける。
$ pip3 install torch-1.10.0a0+git71f889c-cp36-cp36m-linux_x86_64.whl ... >>> print(torch.cuda.get_arch_list()) ['sm_35'] 💖
が,morseangelの動作はCUDAを使ってもモッサリしてた。
nn-morseはRuntimeError: CUDA out of memory.が出て学習に至らず。GPUメモリは2GBなのでシカタガナイか。 データサイズが96MiBと少ないのに,2GのGPUメモリに載らないのがツライ...
Tried to allocate 96.00 MiB (GPU 0; 1.95 GiB total capacity; 1.17 GiB already allocated; 79.25 MiB free; 1.37 GiB reserved in total by PyTorch)
最近のコメント