【2020/5/18 更新あり】:「その後」セクション追加しました
トラッキング
やりたい開発について何か思うところがあったようで、息子くん先日トラッキングの勉強をしていました。
おもしろい成果物ができていたので、今日はそれについて書こうと思います。
ブログを書くにあたって私は詳しくないので息子先生に内容をよく教えてもらいました。
テクノロジーの大きなジャンルを広く理解しようとしている息子くんすごいなと改めて思いました。日常生活には難ありだけど・・・プラマイでプラスかなと思います。
ここでいうトラッキングとは、モノを認識してそれを追従する手法のことを指します。
OpenCVとは
OpenCVはオープンソースのライブラリで、この中にコンピューターで画像や動画を処理するのに必要な機能が入っています。機械学習とかも入ってます。
今回はこれを使ってトラッキングをやってみたそう。
そういえばOpenCVって前にも息子くんから聞いたことがあったような・・・
あっ2年前にブログ書いてた!
こんなブログ書いてたこと本気で忘れてました。
そして読んで懐かしみました。
『行き詰った時に「おかあさんも調べて!」とギャーギャー怒り出す』って!
そんな時代もあったな~~~、って感じです!
今では行き詰ると機嫌は悪くなるものの、私にしつこくあたってくるようなことは無くなりました。
多分今では「私に聞いてわかるくらいならネットで調べた方が断然解決する」という認識だと思われます^^;;
成長を感じました。
と、それは置いといて。
2年前にも息子くんOpenCVやってみてたんですね。本人はちゃんと覚えていました。
プログラムを動かしてみた
わりと前の記事のようですが、こちらを参考にしたとのこと。
ensekitt.hatenablog.com
この記事内にある実装例のサンプルコード(python)をまるぱくで大丈夫だったとのこと。
これを動かすとこうなりました。(ちょっと見づらいですけど・・)
息子くんの今日の成果物報告
— しろいとり子 (@siroitori0413) 2020年5月12日
リアルタイムトラッキング、というものらしいです。はい。Pythonのサンプルプログラムで、マスコットを四角い枠が追いかけています。 pic.twitter.com/8sq2gG67mS
この動画にはありませんが、まず最初に写真でピンクのメルくんマスコットを認識させています。
その次に上記動画の操作になるのですが、Macのインカメラでうつしているリアルタイムの動画からピンクのメルくんマスコットを認識すると緑色の四角い枠で囲むという処理をしています。
こうすることでずっとピンクメルくんを追いかけていく感じになってます。
トラッキングの種類について
OpenCVで使えるトラッキングにもいろいろと種類があるそうです。
というのは、上記参考にさせていただいた記事の中にも詳しく書いてあるのですが、以下の種類が存在するそうです。
- Boosting
- MIL(Multiple Instance Learning)
- KCF(Kernelized Correlation Filters)
- TLD(Tracking, learning and detection)
- MedianFlow
- GOTURN
今回のピンクメルくんトラッキングは「KCF」を使ったそうです。
それぞれ認識させるアルゴリズムが違っているみたいで、じゃあそれぞれ使ったら具体的にどんなふうになるのかというと息子くんが、「これがわかりやすいよ」ってYouTubeを教えてくれました。
めっちゃ全部英語やけど!
息子くんは調べ物はほとんど英語で、リスニング力鍛えられてるようです。
この動画を見ると、各種類のトラッキングでレーシングカーの動画とかチャップリンの動画とかどういうふうに認識されるかがわかります。
また、対象物が一時的に隠れてしまった場合どうなるかというのも説明してあります。
トラッキングできたら
トラッキングできたらこんなことができるようになるんですよね。すごい!
息子くんのやりたいことは果たして何なのか私にもよくわかっていないのですが、また何か進捗がありましたらブログでお知らせしたいです^^
その後
【2020/5/18 更新】
(この続きの話、長くなるかなと思いきやそう長くならなかったのでここに追加することにしました!)
息子くん、これをゲームを遊ぶためのツールにできないかなとたくらんでいたみたいなんです。
シューティングゲームだったらシューティングする対象を認識させてリアルタイムトラッキングしたら、常にロックオンできそうって!たしかに!
いっぽうScratchで動かしたネコちゃんへは安定のトラッキングでした😊 pic.twitter.com/PeX2xaPj1w
— しろいとり子 (@siroitori0413) 2020年5月15日
↑ Twitter動画、上:Roblox、下:Scratch
Roblox
上のほうの動画、ロブロックスでトラッキングを行った場合、ピンクメルくんのトラッキングのときに使用した「KCF」ではどうにも認識ができずいろいろなトラッキングの種類を試した結果「TLD」が一番認識が良かったのでそれを使用しました。
しかしTLDを使ってもロブロックスではトラッキングが外れる(四角の枠が外れる)ことが多々。キャラクターが3Dということがあるのでしょう。
Scratch
2DゲームのScratchではなかなか良い感じでした。
結論
Robloxをはじめとする3Dゲームでは使えなさそう。2Dゲームでは使えるかも?なにかよさそうなゲームがあったら試してみたいです。
悪いことには使わないです。はい。
関連記事
ピンクのメルくんマスコット、ちょいちょい登場しています。
siroitori.hatenablog.com
siroitori.hatenablog.com