ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

「ディープラーニングを使って、事前に行動を予測して画面合成する」には、どうすればよいか

2019-01-03 15:47:17 | Weblog
昨日の姿勢推定の話だけど、まじめに考えたら、姿勢推定しなくても、
事前に行動を予測して画面合成することは、できそうな気がしたので、
ちょっと書いておく。




■まずはじめに、(予測はナシで)画面合成にディープラーニングを使うということは、どういうことかを示す

 Perfumeの3人と背景を合成することを考える。この合成結果の画像Xを構成するピクセル(画素)xは、
  ・Perfumeの3人の画像Aの当該画素aか
  ・背景画像Bの当該画素b
 のいずれかの値をとるはずである(というか、とるものとする)

で、A,Bどちらの値をとるかだが、「クロマキー」という方法をとる場合、簡単にできる
例えば、「赤」なら抜くとして場合、
  Aの画像の画素aが赤なら、Bの画素bを使う
  それ以外なら、Aの画素aを使う
とすればいい。

しかし、この場合、特殊な色でないと抜けない。黒とかだと、ひとみの色と一緒になってしまい、
目の中に拝啓が移ってしまう。

これを避けるためには、輪郭線をもとめ、輪郭内だったらa,輪郭外なら背景のbを使えばよい
 →切り抜きですね

この輪郭線の散りだし方は、行列を使ってうじゃうじゃしてもいいし、ディープラニングなどの機械学習を
使ってもいい。

機械学習を使う場合は、
 入力を画像A(の全画素a)
 出力は、合成画像Xの当該画素xがaの画像を使っていたら1、使っていなかったら0
 とすると、入力画面(実際にはその一部分を使うと思うけど)と画素Xの結果1,0の対応関係ができる。
 この対応関係を機械学習する

 もし学習できれば、輪郭を経ずに、ディープラーニングで画像合成ができたことになる。




■しかし、動画ではこの方法は使えない

もし、動画で行うとなると、たとえば、1秒間に25フレーム(計算しやすくするため、この数字にした)だとすると、1フレーム当たり1/25=0.04秒=40ミリ秒で画面合成しないといけない。

 いま、200X200の画素だったとすると(実際はもっともっと)1画面は200X200=4万画素なので、
 1画素あたりに許される計算量は、40ミリ秒÷4万画素=1マイクロ秒になる。

 A,Bどちらの画像を使うかは、クロマキーならAの画素が赤かだけを判断すればよいから、
 (a & RGB(RED))の結果が分かればいい。つまり、AND1回路でできるが、秋葉原で売っている
 AND回路を使っても(汎用の75系のチップ)1マイクロはかかる。

 なので、並列処理させないといけない。
 が、並列にも、限界がある




■事前に行動を予測して画面合成する方法

しかし、もし、5秒前の画像を入力し、現在の画像を出力させたらどうなるだろう。

   入力  5秒前の画像A
   出力  現在の画像 X
   (ここで、Aの画素a、Xの画素xは32ビットで、α、R,G,Bを8ビットで構成しているものとする)
    aは、5秒前の画像のRGBを保持し、
    xは、現在の画像が、背景を使う場合はαが255、Aを使う場合はα=0で、RGBは現在の画像の値とする)

 もし、これで学習が成立すると、このAIは、入力に対し、5秒後の出力を出すAIになる。
 だから

  入力 今取ったリアルタイム画像
  出力 予測した5秒後の画像

 ということができるこになり、事前に行動を予測していることになる。

 これを画面合成するには背景色が多い場合(背景は事前に計算できるのであれば)
   αが255のところは、5秒後の画像を5秒間かけて処理し
   αが0のところは、  5秒後に今取った画像をそのまま流して
 合成すれば、合成処理が完成する(背景が少ないと、間に合うかどうか疑問)。




このように、事前にX秒(分・時間・日)の状態を予測したかったら、
X秒(分・時間・日)前の状態を入力(説明変数)、
現在の状態を出力(教師信号、目的変数)として機械学習させるとできる


・・・姿勢推定つかわなかったね(^^;)

もちろん、これも入力にしていいけど・・・

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« PoC貧乏からPoC不況へ | トップ | ロケットの作り方が、トラン... »
最新の画像もっと見る

Weblog」カテゴリの最新記事