Megadetectorによる空打ち削除の可能性の検討

Megadetectorについて

  • Megadetectorは,人,動物,車を判定するMicrosoft開発のAI.判定結果は,.jsonで出力される.

  • Timelapse2を使えば,出力ファイルをもとに,バウンディングボックスを画像に表示していくれる(以下,参照).ただし,tdb/ddbファイルと同じ場所に保存する必要あり.

Megadetectorの結果をTimelapse2で表示させたもの
  • Megadetectorは,静止画にしか対応していないので,動画→静止画に変換する必要あり。変換+動物の有無の判定にどれくらい時間がかかるかが課題。また,人が見た場合との信頼度の差も気になるところ。これらの点についてテストしてみた.

テストの条件

  • パソコンのスペック

    • プロセッサ 12th Gen Intel(R) Core(TM) i7-12700K 3.60 GHz

    • 実装 RAM 32.0 GB (31.7 GB 使用可能)

    • GPU RTX 3070

  • 画像の切り出しは,RstudioからpythonまたはRを利用。

  • 切り出した画像は,パソコンのHDD内に保存

  • Megadetectorの利用は,マニュアル通りAnaconda promptから(下手に環境変えるのが怖い…)

テストの内容

  • N180812のBSN0869, BSN0942, BSN0943, BSN0945, BSN0946, BSN0975, BSN0977内の1047の動画を対象にする。

  • 人による動物の在・不在判定の結果とMegadetectorによる結果を比較する。

  • 以下,4つの条件(判定の信頼度?とはMegadetectorの出力値を指す)

    1. 画像を1秒ごとに切り出したもの  判定の信頼度 > 0.1

    2. 画像を1秒ごとに切り出したもの + 冒頭の2秒を5フレームごと(2*30/5枚)判定の信頼度 > 0.1

    3. 画像を1秒ごとに切り出したもの  判定の信頼度 > 0.05

    4. 画像を1秒ごとに切り出したもの + 冒頭の2秒を5フレームごと 判定の信頼度 > 0.05

  • Rとpythonによる切り出しには自分で書いたコードを利用

結果

  • Pythonだと1047動画の1秒ごとの切り出しに19.7分(Rのav:av_video_images関数だと35.3分),冒頭2秒を5フレームごと(1/6秒ごと)に切り出しに13.5分

  • 前者で19552枚,後者で12537枚の静止画像に

  • Megadetectorによる判定に前者で30分,後者で18分

  • 信頼度の分布は以下の通り

  • 信頼度の分布

Megadetectorの判定結果の信頼度の頻度分布
  • 判定結果

  • 結果まとめ

    • 当然のことながら,偽陰性と偽陽性はトレードオフになる

    • 偽陰性のほうを避けたいので条件4が妥当?

    • 最初の2秒間だけ映る動物が結構多い(今回は2秒にしたけど1秒で十分)

    • 実際に見過ごした種リストが以下.ほとんどがネズミ類

   Station         File Animal Species_human  Species
1  BSN0869 IMG_0030.AVI ネズミ類
2  BSN0869 IMG_0057.AVI ネズミ類
3  BSN0869 IMG_0119.AVI     シカ
4  BSN0942 IMG_0008.AVI   ウサギ
5  BSN0943 IMG_0046.AVI ネズミ類
6  BSN0943 IMG_0047.AVI     鳥類
7  BSN0945 IMG_0056.AVI     サル
8  BSN0946 IMG_0007.AVI ネズミ類
9  BSN0946 IMG_0024.AVI ネズミ類
10 BSN0946 IMG_0030.AVI ネズミ類
11 BSN0946 IMG_0088.AVI ネズミ類
12 BSN0946 IMG_0109.AVI ネズミ類
13 BSN0946 IMG_0110.AVI ネズミ類
14 BSN0946 IMG_0144.AVI ネズミ類
15 BSN0946 IMG_0270.AVI     鳥類
16 BSN0975 IMG_0033.AVI     鳥類
  • 見落とした動画

結論

  • Megadetectorすごい...

いいなと思ったら応援しよう!