しょくふんのしつけのためのシステムを作ってみた (しつけタイミングの検出編)

こんにちは、hatpoppoです。

今回は「ペットのしょくふんをしつけたい」の第2弾であるしつけタイミングの検出編について書いていこうと思います。

前回の記事でも述べたように、しつけにおいて、しかるタイミングはとても重要です。

そのタイミングをシステムのみで検出するにはどんな方法を取れば良いか考えました。

今回の問題は、しょくふんをしつけるための最適なしかりタイミングを検知すること
つまりは、「うんちをした瞬間に飼い主へ通知が行けば良い」と言い換えることができると思います。

そこでビーグルズ(飼っている2匹のビーグルのことです)がうんちをしているタイミングを検知するにはどんな方法があるのか考え、リストアップしてみました。

また、このシステムでは「画像」を用いることに焦点を当てています。

  1. トイレにビーグルズが入った時を検知
  2. うんちをする体勢をしたときを検知
  3. うんちがトイレに置かれている状態を検知
  4. トイレをする前に行う犬の習性(トイレをの上をぐるぐる回るように何度も動く)を検知

ここで考えられるメリットとデメリットをまとめます。

検知方法デメリットメリット
1. トイレにビーグルズが入った時を検知
・ただトイレに入った場合に、誤検知となる
・実装が簡単
・うんちをする可能性がある場合に、最も早く通知できる
2. うんちをする体勢をしたときを検知
・実装が難しい
・うんちをする体勢を検知できるなら、ほぼ完璧に検知可能
3. うんちがトイレに置かれている状態を検知
・うんちをした後に検知するので、しょくふんを一瞬でされてしまうと、しかるタイミングがなくなる
・実装が1より難し
・実装が2よりは簡単
・1よりも誤検知が少ない(うんちそのものを検知しようとしているから)
4. トイレをする前に行う犬の習性を検知・実装が1より難しい
・うんちではない場合があり、誤検知する可能性がある
・1よりも誤検知する可能性が低い
・実装が2よりは簡単

これらを考慮した結果、今回は「1」の検知方法を採用することにしました。

1は、言い換えるならば、「トイレがある領域における動体検知」と言えると思います。

また、このシステムでは画像を用いるので、画像処理を利用していくことにします。

画像処理の流れは以下で行なっていきます。
エッジ抽出、2値化、差分、平均値算出、閾値処理

この一連の処理を要約すると、
画像に写る物体の輪郭のみがわかる画像(輪郭画像)を作成する。
輪郭画像の見た目をきれいに分かりやすくする。
数秒前の輪郭画像と比較する。
どれだけ違うかを数値(動体検知値)で表す。
動体検知値が大きい時(今回は15より大きいとき)に、
ビーグルズがトイレに入ったと判断することにする。

実際に利用される画像はこのような感じになっています。

これで、しょくふんをしかる最適なタイミングを飼い主に通知できる検知システムを作成することができました。(第1段階)

画像による検知はとても難しくて、人間にとっては同じ景色でも、光の当たり方が少し違うだけで、全く異なる画像が出来てしまいます。それを軽減するために、今回は上述した画像処理を施しましたが、精度としては誤検知があったりとまだまだです…

ですので、後々は、上述した他の検知方法を採用したりして、精度の向上を目指していきたいと思います。

感想や改善点など何かありましたら、コメントなど頂けると幸いです。
最後までこの記事を見ていただきまして、ありがとうございました。