はじめに
こんにちは、はなたです。
今回は(一般的な?)機械学習プロジェクトの一連の流れである
データ収集→データ整形→機械学習(AI)モデル開発→モデル活用・公開
を全てPythonでやってみたよ、という記事です。プロジェクトと書きましたが、あくまで個人の趣味開発レベルです。
動機
大学院に入学してから機械学習について勉強し始めたのですが、実践する機会があまりありませんでした。kaggleは精度を競うゲームみたいな感じで個人的にはそこまで惹かれておらず、また自分で何か機械学習のモデルを作ろうと思っても「別に予測したいものなんてねえよ(笑)」という感じでした。
つい先日、Webスクレイピングの記事を書いたのですが、これを書き終えた後に今回のテーマを閃きました。今回のテーマは**「コード進行から曲のキーを判別するAIを作る」**です。自分の趣味である音楽の内容かつ、他に誰もやっていなさそうなアイデアだったので、寝食を忘れて開発に没頭しました。
完成したWebアプリがこちら
Djangoを使用して開発、herokuで公開しています。
https://kja-app.herokuapp.com/
現在は各キーの予測確率も表示させています。
コード譜掲載サイトで有名なU-fretに掲載されている曲のURLを入力すると、その曲のキーをAIが判断して表示してくれます。
※今のところU-fret以外のサイトは非対応です。今後、他のサイトやcsvインポートに対応するかも?
開発手順
以下の順序で開発しました。それぞれ詳細は記事にしましたので、興味のある部分を読んで頂ければ幸いです。
0.設計編(キーを判別するAIとは?)
今回の目的である「キーを判別するAI」をプログラムに落とし込む過程が書いてあります。「そもそもコード進行とかキーってなんぞや?」という方のために、その辺の音楽理論についても軽く触れています。
1.データ収集(クローリング)
今回作るAIは機械学習のモデルなので、訓練データが必要です。訓練データ収集について書いてあります。
2.データ整形(スクレイピング)
集めたデータを機械学習モデルに突っ込めるよう、データ整形を行います。コード進行の情報を上手く扱うために、クラス設計を行いました。
3.機械学習を用いたAIの開発←執筆中です
機械学習モデルとハイパーパラメータ選定について書いています。
4.Djangoを用いたWebアプリ開発
Django+Herokuでのデプロイについて書いてあります。
おわりに
データ収集からWebアプリ開発まで、最初から最後までやり遂げられて非常に満足しています。しかし、モデルの予測精度やWebアプリの見た目など改善すべきところはたくさんあるので、時間を見つけて修正していきたいと思います。ここ直した方が良いよ、というコメントをお待ちしております!!!
あと予測が全然合ってねえよ!って曲がありましたら、教えていただけると幸いでございます。