Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 6日目
1日目はこちら
2日目はこちら
3日目はこちら
4日目はこちら
5日目はこちら
データセットの見直し
改めて、ドキュメントのデータセットを見直しました。
①データセットの CSV ファイルは、ヘッダを表す 1 行目と、データを表す 2 行目以降で構成されます。
②通常入力データには x、出力データには y を割り当てます。入出力が複数ある場合はそれぞれ x1、x2…、y1、y2…のように、x、y の後に数字を付加して区
別します。
③次元インデックスは、ベクトルの形をした変数である場合に、CSV の各列がベクトルの何次元目であるかを示します。次元インデックスは、変数名に続けて__(ダブルアンダースコア)と数字で表します。インデックスは 0 から始まり、例えば 10 次元のベクトルであれば 0~9 の値を取ります。
音声データの扱い
変数が波形データである場合は、各セルに波形データのファイル名を入力します。ファイル名には絶対パス、もしくはデータセット CSV ファイルからの相対パスを利用することができます。現在 Neural Network Console は拡張子が.wav であり、非圧縮(PCM)フォーマット、かつ 8bit もしくは 16bit の波形ファイルに対応しています。コアライブラリ内部において波形は各次元の要素数が(時間長,チャンネル数)である行列として扱われます。Neural Network Console において波形の振幅は、8bit 波形の場合は 1/128 倍、16bit 波形の場合は 1/32768 倍し、-1.0~1.0 の値として扱われます。
support.dl.sony.com
圧倒的にドキュメントが少ない感じがします。
ラベルを振りなおして再学習
yのラベルを0から振りなおして再学習すると、いつもの見慣れた混同行列になります。5日目で実行した1,2から0,1にしたんですがこのあたり、上記ドキュメントにも載っていないのでイマイチ分からない。混同行列で正解率が0.5を切っているので間違っている方が多いいことに。この方法はダメそうなので、新しいアノテーション方法を考えるか。
新しいラベル付け
Python, Janomeで日本語の形態素解析を使用してタグの頻度を算出してみました。テクノ、クラシックとか曲のジャンルで分けるか、ピアノ、シンセサイザー、ギターとか楽器で分けるのかどうしよう。何で分けても面白くはないな~
'ポップ': 3556, 'ジングル': 1480, '軽快': 1244, '映像': 1138, 'ロック': 1035, '楽しい': 960, 'CM': 925, '都会': 890, '的': 852, 'ゲーム': 847, 'フュージョン': 816, 'ギター': 814, '感': 788, 'バラード': 783, 'イベント': 755, 'さわやか': 744, '元気': 740, '明るい': 739, 'ピアノ': 726, 'シンセサイザー': 716, '情報': 715, 'ゆったり': 662, '優しい': 655, 'ドキュメント': 639, 'さ': 625, 'わくわく': 624, '映画': 619, '淡々': 605, 'ほのぼの': 595, 'テクノ': 582, '穏やか': 573, '希望': 553, 'ポップス': 549, 'おしゃれ': 549, 'ドラマ': 539, '爽やか': 536, '夜': 533, '哀愁': 530, 'クラシック': 526, 'アニメ': 519, '充実': 518, '店舗': 502, 'コミカル': 495, 'いきいき': 481, '環境': 465, 'ワールド': 460, '自然': 457, '思い出': 442, '上品': 440, '切ない': 439, 'エレキ': 439, '前進': 435, 'しっとり': 435, '感動': 433, '店内': 431, 'オープニング': 429, '挑戦': 429, 'リゾート': 407,
*一部抜粋
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 5日目
1日目はこちら
2日目はこちら
3日目はこちら
4日目はこちら
学習結果
50epoch
TrainingとValidationの差が大きい場合(過学習)は、モデルがTraining Dataに特化し過ぎた状態になりますが、今回は良い感じでしょうか。
検証用データに対する統計的な評価指標と混同行列できます。Accracyが0.5662なので、半分正解。2分の1なのでコインの裏表みたいなもんに(´;ω;`)。
Accuracy: 全データの内、正答した数の割合
Precision:予測を正と判断した中で、答えも正のものである割合
Recall:答えが正の中で、予測が正とされた割合
F-Measure: PrecisionとRecallの調和平均
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 4日目
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 3日目
データセット作成
初めてのデータセット作成ということでかなり苦戦しました。
Neural Network Consoleのデスクトップ版には画像分類データセット作成ツールがありますが、他のデータセットの作成の仕方が分かりませんでした。
*画像ではフォルダがごとに振り分けしていたら自動でtrain、testを作成してもらえます。メッチャ、便利そうです。今回は使えません。
クラウド版ではデータセットアップロードツールを使用します。このあたりが初見者殺しだと思います。私の脳みそが足りないだけかもしれませんが、
ここからデータセットを作成するところが苦戦しました。
データセットアップロードツールの使い方 – Docs - Neural Network Console
添付したリンクのツールを使い、同一ファルダに音声データ、xに音声データ名、yに種類分けした1~7を記したcsvを格納しアップロードします。その際に、train、valで分けてアップロードしないとダメなようです。データセットをクラウド内で分割とかできないと不便です。今回、再度分割してアップロードする気が失せてしまったので全てで学習させることにします。
音声データ編
今回、初めて音声データを扱うためNNCの使い方の上記ページを参考にします。必要な情報は音声データの時間、サンプリングレート、モノラルかステレオかの3つの情報です。
音声データは24秒とすぐわかりました。サンプリングレートはiTunesで8.000kHzと分かりましたので24×8000=192000のモノラルということが
分かりました。
↓このあたりを読んで納得しました。
サンプリングレート・サンプリング周波数|Web会議・テレビ会議システムならLiveOn(ライブオン)
学習推論編
まずはサンプル構成でトライしてみました。cpuで10エポック回してみます。
・
・
・
・
・
・
30分で1/10エポックの50%しか学習が進まない。一旦やめて、gpuを申請することにします。
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 2日目
前回の記事はこちら
テーマ設定2
本日も引き続き、テーマ設定を試行錯誤していきます。与えられている音声データには一行説明とタグ情報が付属しています。
そこでタグ情報を使って気分が良くなる楽曲を抽出し一先ず形態素解析を実施していきます。
手順
コピペ初心者なので上記リンクサイトを参考に今回抽出した楽曲のタグについて単語感情極性対応表にそって点数を振りました。
*1参考サイト
1)結果・・・・形態素解析した結果は以下の通りになります。
シンセサイザー 名詞,一般,*,*,*,*,シンセサイザー,シンセサイザー,シンセサイザー
日常 名詞,一般,*,*,*,*,日常,ニチジョウ,ニチジョー
大人 名詞,一般,*,*,*,*,大人,オトナ,オトナ
ムード 名詞,一般,*,*,*,*,ムード,ムード,ムード
ドラマ 名詞,一般,*,*,*,*,ドラマ,ドラマ,ドラマ
形態素解析した結果を、感情極性対応表にそって点数をつけていきます。
2)結果 点数が付いたものがこんな感じ!
[シンセサイザー,日常,大人,ムード,ドラマ]
[-0.395559, -0.757641, -0.960539, -0.174015, -0.188471]
3)結果 この点数のつけ方はイマイチピンときませんね。この点数を平均化し、欠損値は0で埋めました。以下はそれをヒストグラムにし[-1.0, -0.568]、[0.0278, 1.0] をネガティブ、ポジディブとします。
さて、ラベリングまで出来たら次はデータセット作りたい。
Neural Network Console Challenge~Audiostockの音声(BGM)データを解析~ 1日目
はじめに
企業データを用いてディープラーニングに挑むSonyとレッジが企画するAI開発コンテスト「Neural Network Console Challenge」が応募期間 2020.09.16 WED ~ 2020.10.19 MONで開催されています。
今回のテーマは、Neural Network Console を用いて、Audiostockの音声(BGM)データを解析し🅰の指定テーマまたは🅱の自由テーマを選んでご応募します。
(学習用データ提供:Audiostock)
★Aテーマ
AudiostockのBGM検索の自動分類アルゴリズムを作り出す
★Bテーマ
自由な発想で音声データを解析する
Neural Network Consoleのダウンロード
Neural Network Consoleのセットアップからサンプルプロジェクトの実行まで実施したことがなかったので、Windows版で練習、クラウド版を本番として実施しました。
【環境】
Windows版
プロセッサ:intel(R) Core(TM)i7-8750H
実装メモリ(RAM):32GB
GPU:NVIDIA GeForce RTX2070
Windows版で2点躓いたので記載しました。
①利用開始時のオンライン認証時にエラーが表示する。
Windows版Version 1.80でのエラーについて – Blog - Neural Network Console
②Visual Studio 2015 の Visual C++ 再頒布可能パッケージが上手く認識しない。最新のVisual C++ 2019を入れることで解決しました。
サンプルセットを使用し使い方の確認
今回、初めてNeural Network Consoleを使用するので、まずはサンプルセットで体験してみます。
GPUについてもドライバーが最新であれば、CUDAなど入れず使えるということで、mini_dcgan.sdcprojのプロジェクトを使用し、数字をGANで生成してみました。
★データセット
X:image、y:labelから新しい数字を生成します。
★生成結果
sigmoiで新たな数値が生成されています。6万枚のデータを100エポック、64バッチサイズで学習させて30分程度でした。GPUについても15%程度の稼働になっています。
pythonを使わずここまで手軽にできるのは便利で凄いです。もう少し触りながらテーマを考えていきます。
テーマ設定
今回の学習データはAudiostockの提供する音声(BGM)データ 約10,000点とタグ付けと説明のみ。
アノテーションすることでmy 分類機を作るのかGANを使って新しい音楽を作ってみるか
AI実装検定【S級】の出題範囲を勉強教材にしてみよう 1日目
2020年9月7日の公式サイトにてAI実装検定【S級】第1回試験のエントリー開始が始まりました。
①級の内容
AIの実装力だけでなく画像処理をメインとした実践的な力と、自然言語処理や有名モデルの実装などの応用的な実装に対しても挑戦できるレベルです。
また、現在AI資格試験の最高峰であるE資格(日本ディープラーニング協会主催)に比べるとカバーする範囲は狭いですが、各項目で求められる実装レベルは同程度です。
E資格の中間目標又はE資格後の実践的な力を試すことが出来る目標としても活用いただけます。
各級の紹介 | AI実装検定
紹介内容を見ると、E資格を意識しつつ勉強できるように内容になっていそうです。
②試験範囲
ディープラーニング 20題
「ディープラーニング∞Cheat」よりNLPと主要なMODELについて下記範囲を出題(2020#1)
画像処理 30題
「画像処理100本ノック」1-100問よりPythonによる実装を出題
この検定、出題範囲が割と他力本願な気もしますが、勉強はしやすそうです。まずは毎週、「画像処理100本ノック」を説いていくことにします。
③「画像処理100本ノック」1-100問
Q.1 チャネル入れ替え
画像を読み込み、RGBをBGRの順に入れ替えよ。
1つの画素の色を、R(赤)、G(緑)、B(青)の3原色を混ぜ合わせて表現し、RGBカラー画像という。
RGBカラー画像では、R, G, Bそれぞれの濃度を256階調(0~255 = 8bit)で表します。画像の形状は img.shape によって取得行数でき、行数,列数,チャンネル数(RGBデータ).
0番目が赤(Red)のデータ
1番目が緑(Green)のデータ
2番目が青(Blue)のデータ
def BGR2RGB(img):
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# RGB > BGR
img[:, :, 0] = r
img[:, :, 1] = g
img[:, :, 2] = b
return img
この関数だと、各色をコピーして、入れ替えて上書きしているようです。初めて勉強すると10個やるのも時間かかるな