nn-morse,再び2024/03/26 08:05

モールス信号を深層学習:nn-morseでデコードする話の続き。

トーン周波数の範囲設定が、オリジナルの100~950Hzに対して、 解読させたいsatnogsのAudioファイルでは(ざっくり)200~2800Hzなので、 周波数範囲とサンプリング周波数を変更して、Google Colabを使って再学習した (その設定は、従来環境:実PCでは、計算時間とGPUメモリの兼ね合いで、トライできなかった)。

loss値が下がらないので、入力層の数:spectrogram_size∝サンプリング周波数なので、中間層の数を増やしてみたが、決定打にならず。 Audioファイルでのトーン周波数のヒストグラムを作成して、 出現頻度の高い周波数(680〜1680Hz)に絞ったのが、一番効いたかも。

その変更+オリジナルにない符号(Slash, Hyphen, Colon)を学習させたら、 lossは(2200stepまで回すことになったが)0.30でサチった。オリジナルに比べるとちょと高め...だが良しとしよう。 以下は、実データによるデコード結果。 実マシンで学習したときと大差は無かった💦けど、

HSU-SAT1はnn-morseの圧勝だし、耳だと短点連打の完コピーは難しい。

0JS1YHSHSUSAT104.19V0.10A8.46DEEEEETETTTE 

KOSEN-1ではHyphenを正しく認識できている。

HJR5YGJ KOSEN-1 S1 3E 1E 93 AE     S2 1E 00 00 00 

このモデルをエッジ環境でも動かしたいので、Pytorch⇛ONNX変換して、onnxruntimeで動くようにしてみた。 ONNX変換は、画像処理(入力サイズが固定長)の事例ばかりで、 信号処理のような「入力サイズが可変長」のリンクが見付からず、難儀した。

それから、Pytorchで記述された処理(入力データの用意、推論結果から文字列への変換)をnumpyに置き換える必要があり、 PyTorchで定義されたテンソルをNumpy配列に変換する作業は、Rubyistの自分には書けないので、 Google ColabのAIコーディング機能(Colab AI)を使ってコード修正したら・何とか・なった。

以下は、ONNXモデルによるデコード結果で、Pytorchと同じ文字列が得られた。

HSU-SAT1

0JS1YHSHSUSAT104.19V0.10A8.46DEEEEETETTTE 

KOSEN-1

HJR5YGJ KOSEN-1 S1 3E 1E 93 AE     S2 1E 00 00 00

CaribouLite #102024/02/03 11:57

ラズパイ HATなSDR: Cariboulite、 今月もソフト更新あり。「Invert IQが必要」な件が解消して良かったが、受信中に信号が頻繁に何度も途切れる症状にカイゼンなし。ただしSDRソフトをGqrxからSDR++に変更したら解消した。謎だ...

本日の衛星: RS-44で交信。

新・GPU機械学習環境の構築2024/01/27 11:03

ディープラーニングを使ったモールス信号の解読にあたり、 深層学習の環境を実マシンからGoogle Colabに移行した。

いま試しているソフト:nn-morse、 オリジナル版はpytorch 1.5対応だったが、Colab標準のpytorch 2.1でもコードの修正 ほぼなし で使うことができた。 修正点は、ColabのCPUコア数=2に合わせて、DataLoaderのnum_workers=2としただけ。 GPUメモリは15.4GBと大きいので、batchサイズの修正は不要だった。

で、my実マシンで1.6日かかる計算が、無料版で使えるGPU/Telsa T4では8時間で終わって素晴しい!

が、あの「GPUバックエンドに接続できません」が表示されて、学習が途中で切断されてイラッとしたので、 有料版Google Colab Proを契約した。 それはGoogleの思う壺なのだろうが、コスパは良い(¥23円/時間)し,GPUの使用上限に達する頻度が減った気がする。

本日の衛星: RS-44で交信。

CaribouLite #92024/01/20 17:55

ラズパイ HATなSDR: Cariboulite、 今月のソフト更新あり。周波数を動作範囲外に設定したときのバグは解消したが、受信中に信号が頻繁に何度も途切れる新たなバグが発生して、泣いてます。

本日の衛星: RS-44で交信。

全文検索はRecollに戻る2023/12/24 16:01

Recoll

全文検索システム:Fessを諦めて、Recollに戻った。 ネット情報は少ないが、文書ファイル+メールの検索&プレビュー表示が可能で、ステキです(添付画像、参照)。

検索は画像ファイルも対象にできるが、インデックスされた画像は(何故か)少ない。例えばDX局のコールサインで検索したら受領したeQSLカードはヒットしない.と(自分的には)程よいSNR感。

検索INDEXの作成にあたっては、前回の教訓を活かして、各種の生ファイルを対象外(skippedNames)に指定した。 INDEX対象に$HOMEを指定したら、 INDEX作成は短時間で終了したが、日々の更新はcrontabで夜間にスケジュール化している。

検索はCUIからも可能と判ったが、(下記の通り)ファイル名の表示+ヒットした文章の前後の表示だけで、プレビューが不可なので使わないかも。

$ recoll -t -q "ポールジロー ジュース"
:3:common/rclinit.cpp:391::Recoll 1.36.2 + Xapian 1.4.17 [/home/jh4xsy/.recoll]
Recoll query: Query10 * (ポー PHRASE 5 ルジ PHRASE 5 ロー) AND 10 * (ジュ PHRASE 3 ース)
27 results
message/rfc822	[file:///home/jh4xsy/.thunderbird/...]	[■■ポールジロージュース...] 5668 bytes
message/rfc822	[file:///home/jh4xsy/.thunderbird/...]	[...ーズデビュー!ポールジロジュースも再...] 24721 bytes	
message/rfc822	[file:///home/jh4xsy/.thunderbird/...]	[OMC10周年記念ラフロイグ!ポールジロ...] 25731 bytes	
...

本日の衛星: RS-44で交信。