消防設備士甲種4を次回受けよう
頭の体操に消防設備士甲種4を受けようと考えています。
科目免除などもあるので調べているんですが、電気工事士を持っていると、電気関係の10問+12問は免除になるようです。
3時間15分のテストが2時間30分になると、筆記試消防法、電気の基礎知識、規格・構造の3科目で最低合格点数が40点験以上で合計が180点以上であれば合格。 筆記試験が合格すると実施されていた鑑定と製図試験の試験が採点され60以上であれば消防設備士甲種4類試験が合格。
・・・・科目4割、合計で6割か。免除されることで配分が重くなるのはマイナスですが、まあいっか。
直近でいつ受けれるのか探すと、神奈川は5月以降の試験は 試験会場が未定のため、決定次第ホームページでお知らせいたします。
東京は、令和3年6月5日(土)試験で、4/8〜4/19で書面申請との事、免除資格者は最初は書面で受けないといけないのか。
まずは、都内の消防署に行きますかね。
pandasでのデータ可視化メモ
df.plot(引数)
【折れ線でよく使う引数】
引数y: y軸の変数指定
引数x: x軸の変数指定
引数figsize: サイズ(tuple型で指定)
引数subplots: サブプロットをするかどうか(True もしくはFalse)
引数layout: サブプロットの行数、列数の指定
引数sharex: x軸の範囲の共有可否(True もしくはFalse)
引数sharey: y軸の範囲の共有可否(True もしくはFalse)
引数title: グラフタイトル
引数grid: グリッドの有無(True もしくはFalse)
引数colormap: 色(色の名前もしくはカラーコードを指定)
引数legend: 凡例の有無(True もしくはFalse)
引数alpha: 透過率(0〜1で1が濃く、0が薄い)
*サブプロットする際に、X,Y軸の共有が便利。
pandas.pydata.org
使うとき、引数がアレって思うからメモらないと忘れてしまう。
音声検知モデル学習にあたっての備忘録メモ
import librosa
load関数は音声データ(1次元のNumPy浮動小数点配列)とサンプリングレートという2つの値を返します。サンプリングレートはオーディオの秒当たりのサンプルの数です。デフォルトでは、すべてのオーディオはモノラルにミキシングされ、ロード時に22050Hzにリサンプリングされます。
Tutorial — librosa 0.8.0 documentation
秒数 = データ数/サンプリングレート
描写の仕方
import matplotlib.pyplot as plt
y, sr = librosa.load('ファイル')
plt.plot(y)
plt.show()
音声の特徴
音声データの振幅は正の値と負の値をとり、平均値を計算すると0なる。音声データでは、振幅を2乗した値の平均値の平方根を平均振幅とする。
librosa.zero_crossings(y、threshold = 1e-10、ref_magnitude = None、pad = True、zero_pos = True、axis = -1)
librosa.zero_crossings — librosa 0.8.0 documentation
yが多次元の場合、指定されaxisに沿ってゼロクロス数(正負の交差点)が計算される。
下記の本を読んでみたいけど、高い。NO MONEY
検索用キーワード
・パワースペクトル
音のグラフの縦軸を「音圧レベル」に、横軸を「周波数」に取り直すことをさします。
パワースペクトル - 「音」とはそもそも何だろうか!? - Cute.Guides at 九州大学 Kyushu University
・メルスペクトログラム
librosa.feature.melspectrogram(X)
・メルスペクトログラムからデシベル(dB)
librosa.amplitude_to_db(X)
Neural Network Console Challenge ~~音楽ジャンルで分類~
Neural Network Consoleを用いてAudiostockの音声(BGM)データを解析
企業データを用いてディープラーニングに挑むSonyとレッジが企画するAI開発コンテスト第2弾になります。第1弾は画像分類がテーマに今回は音声データ解析がテーマになります。
nnc-challenge.com
学習用データ提供:Audiostock
選んだテーマは、A「AudiostockのBGM検索の自動分類アルゴリズムを作り出す」にしました。与えられた音声データと、説明、タグを使用しテキストマイニング実施することで、いくつかの分類データを作成し学習させた中で一番精度の良かったモデルを検証していきます。
NNの使い方とインストールについて
Neural Network Consoleはディープラーニングをノンプログラミングで使用できるアプリでクラウド版、Windowsアプリ版の2種類があります。今回、推論用GPU、学習用GPU共に有料サービスですが、本コンテスト参加者の方(希望者のみ)には1万円分(合算)の無料枠を使用できます。今回は、クラウド版をメインで使用しました。
実際、Windowsアプリ版で学習データとNNW構成を考えて、クラウド版を合わせて活用すると便利だと感じました。
アノテーション
今回、楽曲のタグを利用し三種類の分類データを作成し学習・推論させます。
(1)感情による分類
単語感情極性対応表を利用してタグのpositive・negativeを数値化しました。-1に近いほどnegative、+1に近いほどpositiveに分けていきます。タグの単語の下記の表に沿って点数をつけ平均化しbin分けました。上位、下位の1500の音声データを使用し、positive、negativeな曲分類を作成しました。
〇単語感情極性対応表(例)
優れる:すぐれる:動詞:1
良い:よい:形容詞:0.999995
喜ぶ:よろこぶ:動詞:0.999979
褒める:ほめる:動詞:0.999979
めでたい:めでたい:形容詞:0.999645
~~~~
ない:ない:助動詞:-0.999997
酷い:ひどい:形容詞:-0.999997
病気:びょうき:名詞:-0.999998
死ぬ:しぬ:動詞:-0.999999
悪い:わるい:形容詞:-1
*1
図1では1曲当たりの平均化された数値をヒストグラムにしています。positive・negativeに特化した曲数はあまりありませんでした。点数が付かなかった曲はゼロとしました。
図1.Happy 分類
"学習とネットワーク設定
まずは、音声解析を実施したことがないので、サンプルプロジェクト(wav_keyboard_sound)を利用してNNWを構成しました。10層のコンボリューションと1個の結合層で学習していきます。
図3.学習用NNW
結果
やってみた結果、すべてのモデルで正解率が0.5を切っており、あてずっぽより精度が低かったです。
表1.学習結果正解率
(1)例として、図4は感情による分類になります。学習に2811曲使用しgpuを使用し10分程度で終わりました。VALIDATION ERRORは20エポック以降、過学習ぎみになっています。
図4.感情による分類の学習率
改良(ネットワーク設計)を見直しました。
11層のコンボリューションに変更し、Afine手前のプーリング処理をMaxPoolingにしました。また、構造探索できるツールをUNITに追加し、より細かいパラメータで探索できるようにしました。
最後に、Dropoutを入れることで、複数の異なるネットワークの多数決に近いアンサンブル学習し近いことができるようになっているはずです。認識違い等があればすいません。
詳しくは過去の記事を参照
図5.再構成したニューラルネットワーク
再学習
今回、(1)~(3)の中で一番精度が向上した(2)音楽ジャンルで分類について考察していきます。学習に3000曲使用し、検証用に676曲使用しました。
図6.音楽ジャンル分類の学習率
図7.Confusion Matrix
Precison(実際に正解だった率)を見ると、y'__3("ポップス")が0.5と低いです。"ポップス"って自分自身聞いても、ポピュラーソング、またはポピュラー音楽なんで定義が曖昧でした。併せて、Recallでも0.3475と低くなっています。
結論としては"ポップス"が予測できていないことが分かりました。”ポップス”について、除いたら全体的に精度は向上すると考え、アノテーションを修正しました。
改良(アノテーション)/再学習
再学習した結果より、"ポップス"を除いた、"ロック", "フュージョン","バラード","クラシック"の4ジャンルで再度学習させました。学習の際は重みづけを前回と同様にして実施します。
学習結果からRe-editを使うと、選択中の学習/評価のネットワークの重み付きで再学習することができます。
図8.Re-edit画面
図9.再学習結果
図9、図7を比較しPrecisonが大幅に向上し、Accuracyが0.7703まで向上しました。
分類の一つ一つの間違いについて確認しました。y:labelは正解ラベルで、"y'__0:ロック", "y'__1:フュージョン","y'__2:バラード","y'__3:クラシック"の中で、確率になっています。データセットを作成する際に、xの名前がラベリングしなおされているようなので、曲を探すとき分かりづらかったです。
推論
Neural Network Consoleで作成した学習済みモデルをAPIで公開することで、ユーザは推論の実行をAPI経由で行うことが可能でEVALUATIONでタブのPublish APIを使用すると、リクエスト数課金、インスタンス占有の2種類が選べます。
今回は、wavなどの音楽形式のデータのためインスタンス占有タイプのみになります。起動時間をAlwaysかScheduleで選べました。
〇詳しくはコチラ
【金額】
・CPUインスタンス :85円/時間
・GPUインスタンス :560円/時間
推論は、python3を使用し、outputsに実行結果にはoutputsに出力レイヤーの名称と確率が返ってきます。こちらを使用することで、音楽ジャンル分類機が完成しました。
{"version": "20201001_022242346291", "outputs": [{"name": "y'", "data": "0.0480295866727829, 0.941403329372406, 0.010470078326761723, 9.703217074275017e-05, 4.2797791977022825e-09"}]}
インスタを立ち上げると、URLとKeyが確認でき、Publicをonにすると使用が始まります。
インスタの使用回数は横の画面で時間とcountが分かります。
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 9日目
"ロック", "フュージョン","バラード","ポップス","クラシック"の分類
精度向上の取り組み①
波形の位置を考慮した認識の場合と、位置を平均化した場合とでAfine手前のプーリング処理を変える必要があるとのことでした。今回、音楽ジャンル分けということでリズムについては平均の方が良いのかと思いました。
(1)MaxPooling
(2)Global Average Pooling
*1
精度向上の取り組み③
探索箇所を限定しての探索や複雑なネットワーク全体を
探索できます。使うことで、何回もtrainingが走るのでGPUの消費が結構ありました。
今回の構造
11層のコンボリューション用いたNNWになっており、
精度取り組み①~③まで反映しています。
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 8日目
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 8日目は
インプットの時間に当ててドキュメントを読んでます。
ニューラルネットワークの勉強
教師データの作成で精度が向上しないので、ニューラルネットの構造を変更することで精度を上げられないか検討します。音声データと、波形データでは次元の数が異なっており、(64,3)のものを、(3,64)にTransposeして(3,1,64)の次元にReshapeすれば画像データと同じようにCNNを使用できるとのこと。この形を基本にまずは、簡単なCNNを組んでみようかな。
見本では10層の畳み込みニューラルネットワークで構成していました。