自動撮影カメラを使ううえで一番大変なのは,撮影された画像を一枚一枚確認することだ.カメラの性能も完璧からほど遠いので,何も撮影されていない画像が7割を占めることもある.俗に言う「空打ち」かどうかを慎重に見極めながら,撮影された動物の種判別を行うこと.この作業には膨大な時間がかかる.
最近,こうした作業にAI(いわゆる深層学習)が用いられるようになってきた.深層学習による自動判別の大きな問題は,「その道の人」しか使えないということだが,いくつかのグループが,一般ピープルに使いやすいようにパッケージ化してくれている.例えば,この論文では,GUIベースで動物の判別が出来るようにしたアプリを開発し,フリーでダウンロードできるようにしてくれている.
今のところ手に入るパッケージのほとんどは,静止画のみを対象としたものだが,動画向けのパッケージもいくつかある.マックスプランクのプロジェクト,Project Zambaもその一つだ.このプロジェクトは,2017年の終わりにコンペを開催し,中央アフリカで撮影された動物の種同定の成功率を世界中のグループ(90ヵ国以上から参加があったらしい)に競わせた.そして,もっとも優れたパフォーマンスを示したモデルをパッケージ化して研究者や保全活動家に無料で提供した.それがZamba(らしい).
前々からちょっと試してみたいと思っていたところ,ようやく時間が取れたので,気合を入れて取り組んでみた.調べたいのは,このモデルを日本で取得した動画に適用したらどうなるか,ということだ.分類群も姿かたちも振る舞いも大して変わらないし,アフリカの方が圧倒的に多様性が高いから,学習済みモデルでも,そのままある程度適用できるのではないかという気もする.とくに,私にとって最も重要な「空打ち」動画の判別には使えるのでは,という期待もある
以下,注意点.
・zambaは種までの判別はしてくれない(分類群くらいだと思ったらよい.詳細はここ)
・15秒の動画に最適化されているらしいが,そうでなくても判別はしてくれる
・動画の拡張子は代表的なものなら何でもOK
・Cloud web applicationを使えば,以下のような面倒な手続きはすっ飛ばせる(はず).だけど動画をアップロードする必要あり.
・多くの深層学習パッケージのように,pythonやTensorflowのバージョン依存で動いたり動かなくなったりする.必ず指定されたバージョンを使うこと.
・CPU版とGPU版がある.以下の手順はCPU版(手元のパソコンにはGPUを入れてない).
・以下の手順は,Windows 10,64bit版の利用を前提
なお,以下では最新版のAnacondaを入れて,古いバージョンのpythonを事後的に使えるようにする方針をとっている.Anacondaのバージョンとpythonのバージョンの対応がイマイチよくわからないので,多少面倒くさいが,こっちの方がスムーズだと思う.ということで以下,覚書代わりにインストールの手順を解説しておく.
1. Anaconda経由でpython最新版をインストール
・最初にここからAnacondaの最新版をダウンロード
・exeファイルをダブルクリックして開き,そのまま進んでいく.最後にパスを加えるかどうかを聞いてくる.意味が分からなかったらデフォルトのままチェックを外しておいた方が良いが,そうでなければチェックを入れておく(赤字になってビビるが,困ったらシステムの環境変数をいじるだけ)
・Anacondaを入れたら自動的にpythonもインストールされる(Anacondaはそういうためのもの.念のため).
2. 旧バージョンのpython(3.6)をインストール
・windowsの検索でanaと入力して,Anaconda Promptを起動する.
・conda create -n python36 python=3.6と入力してEnterキーを押す.途中でy/nか聞かれたら,キーボードのyを押してEnterキーを押す
3. XGBOOST 0.71をインストール
・次にXGBOOSTを入手.どういうものかは,ここを参照(私はよく分かってません).
・最新版はここから入手できるが,最新版では動かなかった.トリセツにある0.71版をどこからダウンロード出来るのかが分からない・・・
・仕方ないので,ここのを使わせてもらう.画面右中央辺りにあるダウンロードをクリック
・xgboost-0.71-cp36-cp36m-win_amd64.whlというファイルが「ダウンロード」フォルダにあることを確認(デスクトップとかにあったら,ダウンロードに移動)
・Anaconda Promptに「activate python36」と入力,Enter(python36はスペースなし.python 36では駄目)
・Anaconda Promptに「cd Downloads」と入力,Enter(「ダウンロード」フォルダにxgboost-0.71-cp36-cp36m-win_amd64.whlがあることが前提)
・Anaconda Promptに「pip install xgboost-0.71-cp36-cp36m-win_amd64.whl」と入力,Enter(インストールが始まる)
・終わったら,いったんAnaconda Promptを終了
4. FFMPEGのインストール
・これは最新版でよい
・ここからffmpeg-n4.4-151-g5e61fce832-win64-gpl-4.4.zipを入手
・zipファイルを解凍
・CドライブのProgramFilesの中にffmpegというフォルダを自分で作成
・解凍されたフォルダの中身(binフォルダとか)をffmpegフォルダの中に移動
・次にパスの追加.Windowsの検索で,「システム環境変数」と入力,「システム環境変数の編集」をクリックして立ち上げる
・「システムのプロパティ」という画面になるので,下の方の「環境変数」をクリック
・下側の画面からPathを探し選択
・右下の編集ボタンをクリック
・一番下側に「C:\Program Files\ffmpeg\bin\」と手入力(あるいはコピペ)
5. zambaのインストール
・Anaconda Promptでactivate python36と入力,Enterした後,pip install zamba[cpu]と入力&Enterすると,zambaのCPU版のインストールが開始される.
・GPUを使う場合はpip install zamba[gpu]だが,+αの設定が必要.ここを参照(まだ私はやってない).
6. zambaによる同定
・「vids_to_classify」というフォルダを作り,その直下に同定対象の動画を収める.(vids_to_classify内にフォルダがあるといったような階層構造には対応していない)
・Anaconda Promptを立ち上げたときに表示されるディレクトリーに「vids_to_classify」をコピー(私の場合は,C:/Users/yosshにコピペ.日本語が混じってる場合は新しいユーザーを作成するしかない...)
・Anaconda Promptで「activate python36」と入力&Enterキーを押し,「ls vids_to_classify/」と入力&Enter.収めたビデオのファイル名が表示されるかを確認.
・表示されたら,「zamba predict vids_to_classify/ --output_class_names」と入力,Enterキーを押すと同定が始まる.
手順としては以上の通り.
1回目は,weightsファイルをダウンロードするとかで,異常に時間がかかる.2回目以降は多少マシになる.同定結果は,,,やはり日本の動物でも結構うまくいく.ただし,夜間の赤外光が弱い動画では,明らかに動物が写っているのに空打ち判定されてしまう.古いBrowningは赤外光が弱いので,他の機種だとうまくいくかもしれない(ちょっとやってみた感じだと,少なくとも昼間の動画だと,正答率はかなり高い).CPUでやっているので時間がかかりすぎる.その点を除けば(GPUを使えば),結構実用に足るかも.まあ気軽にやってみてほしい.