歌みた動画のタイトルから楽曲名を推定するパイプラインを作りたい
情報収集と楽曲名推定の流れ
作ってみたパイプラインがこちらになります。
(2021/1/11更新)
大雑把には
- 各工程をFargate/AWS Batch/Lambdaで構成
- 各工程の成果物はS3を経由して次の工程へ渡される
- 以前のバージョンではRDS使ってましたが、
- 非同期で良い部分は自動起動でなんとなく時間をずらして管理
という流れです。
使い分けとしては
- CPUで処理が完結するものはFargate
- GPUが必要なものはAWS Batch
- g4dn.xlargeのスポットインスタンス
- (昔作ってそのままにしてあるLambda)
となっています
Fargateを利用すると、ローカルでの動作確認が容易 かつ 設定項目少なめで起動終了管理してくれるのでお手軽で良いなと思います。しかし、FargateはGPUインスタンスを扱えないため、GPUの処理が必要な場合はAWS Batchを使用する必要があります。Lambdaもローカルでの確認環境さえ整えられれば、無料枠があるので悪くない選択だとは思います。
なお、AWS Batchについてはいまいち情報がネット上に見当たらなかったので、ざっくりまとめた記事を別途作成しています。イメージファイルをアップすれば終わり、ではあるんですがイメージファイル自体がGPU非対応の場合は、GPUインスタンス立ち上げてもGPU使ってくれないという問題があったりします。
課題点
楽曲タイトル推論(ルールベース)
こちらも機械学習に持っていきたいのですが、まだ未着手です。
まずは現状のルールベースの物をいったん正解としてしまって、間違っていた物を適宜直す形になるのかなとは思っています。取り合えず歌みた動画らしさ推論と同じ枠組み(Transformersの日本語BertでFineTuning)でできるか試してみたいところです。
フィードバック機構の欠如
どのような手法を使うにせよ、誤判定は起こり得るのでそれをFBとして、システムに返すような枠組みは必須かと思っています。特に、上の方針でいく場合は判定が怪しい物を見つけやすくすることが重要になるのかなと思っています。
そもそもなんでこのアプリケーションが必要なのか?(ポエム)
ネット上のUGCとして、既存の楽曲を(ほぼ)同一の伴奏でカバーした「歌ってみた」というタイプの作品の創作が、以前から盛んに行われています。例えば、ニコニコ動画では約100万件投稿されています。
一方で、昨今機械学習・AIを用いて大量のデータから新しい知見を得ようとする取り組みが盛んに行われています。上記の「歌ってみた」の状況を勘案すると、100万件も動画があるなら何かしらの知見は得られるのでは?と考えるのは自然な流れかと思います。
しかし、機械学習を利用する場合、正確なラベル付きのデータの準備が(教師なし学習などの場合を除くと)必須となります。歌ってみたが既存の楽曲を歌ったコンテンツである以上、「どの楽曲を歌ったか?」は学習の際に是非とも利用したい情報です。ところが、これは容易な課題ではありません。
典型的なものであれば、
答え -> 甲賀忍法帖
のようにわかりやすいのですが、
下記のような動画タイトルになると(楽曲制作者・タイトルの事前情報がない場合、)人が見ても怪しくなってきます
答え -> 黒猫
答え -> ハロ/ハワユ
ということで、前置きが長くなりましたが、動画情報から楽曲名を推定したいという需要は常にあるのでは?と思っています。
(そして現時点では後半の例に対処する方法を特に思いつけていないです。。。)
Discussion