Tracktor: Image‐based automated tracking of animal movement and behaviour
文献情報
[V. Sridhar+, Methods in Ecol. Evol., 2019]
https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.13166
概要
動物の自動追跡は行動や運動の定量解析を高いスループットで行う上で重要. また,自動追跡によってObserver Biasを避けられるため,解析の再現性を上げられる.
Tracktorはノイズのある環境下で単数オブジェクトを追跡, および平坦な環境下での複数オブジェクトを追跡することができるソフトウェア (つまり,時刻間で個体のIDを保持しつつ位置を検出できる).
ソフトウェアについて
画像処理によって単数・複数物体のトラッキングを行うソフトウェア. ソフトウェアといってもPythonのモジュールとして実装されている. モジュール本体はかなり軽量で,250行程度のファイルひとつにまとまっている.
READMEによれば,GUIは無いがRを使える程度のコーディングスキルがあるユーザなら大丈夫らしい. サンプルコード見た感じ,自分で書かないといけない部分が多いので OpenCV for Pythonは使えるぐらいのスキルがないとしんどいと思う.
インストール(?)
Windows 10のAnaconda環境でやった.
コミットの番号は記事執筆時点で最新版の5ca521114bce2d2690719a081eb15ab36b192413
を使った.
まずはコードを落としてくる:
$ git clone https://github.com/vivekhsridhar/tracktor.git
作業ディレクトリにtracktor
という名前のディレクトリがあるとimportのときにバグるので
適当なディレクトリを別に作ってその中に配置するとよい(自分はmodules
という名前でディレクトリ作った).
setup.py
があるのでpipでインストール出来そうに見えるが,それをやるとバグのあるモジュールがインストールされてしまう模様.
examples
の中にあるtracktor.py
を読み込めばきちんと動く.なんじゃそりゃ.
とりあえず,コードの始めに次のようにパッケージへのパスを通す処理を書くことでインストールの代用とした.
import sys sys.path.append('modules/tracktor/examples/') import tracktor as tr
トラッキングを実行してみた
パッケージに含まれているゼブラフィッシュの動画でトラッキングを実行してみた.
サンプルとしてパッケージに含まれている他の動画を見てもわかる通り, 動物の動画を撮影する時点で画像処理がしやすいように撮像系を設計する必要がある.
実行速度
サンプルコードのような書き方だと, 動画の入力と画像処理が並列化されてないのであまり処理速度が速くない. threadingをちゃんとやるとかなり速くなるはず.
コード
Gistに上げた. サンプルコードとやっていることは一緒だけど, OpenCVのGUIを切ってtqdmによるプログレスバーを追加してある.
Tracking Zebrafish by Tracktor
所感
依存パッケージがかなり少ないのでインストールはどのOSでもすんなりできるはず.
トラッキング処理の中身があまり抽象化されてないのでユーザが手間をかけないといけない部分が多いという印象 (一応,サンプルコードをコピペすればトラッキングも動画生成も可能ではあるが).