前回の記事では、物体認識アルゴリズムであるYOLOを使用して風景を認識し、認識したタイミングでドラムを鳴らすシステムを構築した。このシステムは、街のオブジェクト(車や人)を認識し、リアルタイムで音楽を生成することに成功した。しかし、通常モードのYOLOは、自分が認識して欲しい木を認識しなかった。木は音楽のリズムに適していると考えられたため、認識して欲しかった。
木を認識させるには、YOLOに木を学習させる必要があるため、機械学習について調べたところ、膨大な数のデータを学習させないと認識しないことが分かった。いきなり膨大な学習をさせるのはハードルが高いため、まずはRoboflowという開発プラットフォームを使うことにした。Roboflowはデータ準備やアノテーションなどの面倒な開発作業を一つのプラットフォームで行うことができるだけでなく、他の人が学習したデータを気軽に試すことも可能である。
そこで、木の学習をしているデータセットを片っ端から試し、自分のライドの映像と相性が良いデータを探した。以下のデータが自分の映像と相性が良いと感じたものである。
このデータセットには木の3291枚の写真が学習に使用されていた。自分で膨大なデータを準備するのは大変なため、このようなサービスは非常に助かる。
木を大量に学習したデータセットを用いて前回の記事で制作したシステムに取り入れて音楽を生成させてみた。
今回は木を認識させることだけに絞り、車や人間を認識させるモデルは使用してない。映像を確認すると、木を高度に学習しているため、自分では「ただの木」と認識していた木が、YOLOを通して見ると木の名称まで認識し音楽を生成した。この筆者とAIの認識の差をどのように扱うかは今後の課題となりそうだ。また、木のモデルだけでなく、複数のモデルを読み込んだ際の認識の重複など、プログラム面での課題もまだ多く残されている。
課題
1. 複数のモデルを同時に読み込んだ際の認識の重複を避けるためのアルゴリズム改善。
2. AIと人間の認識の差を埋めるための手法の検討。
3. 木以外のオブジェクトも認識し、音楽生成に利用するためのモデルの統合。
全ての課題をいきなり解決することは難しいと思うが頑張っていきたい。次回は7月21日に公開予定。