反面教師あり学習

*/

(旧)反面教師あり学習

Negative Supervised Learning

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

f:id:eqseqs:20200610225548g:plain:w500

概要

動物の自動追跡は行動や運動の定量解析を高いスループットで行う上で重要. また,自動追跡によってObserver Biasを避けられるため,解析の再現性を上げられる.

Tracktorはノイズのある環境下で単数オブジェクトを追跡, および平坦な環境下での複数オブジェクトを追跡することができるソフトウェア (つまり,時刻間で個体のIDを保持しつつ位置を検出できる).

ソフトウェアについて

github.com

画像処理によって単数・複数物体のトラッキングを行うソフトウェア. ソフトウェアといっても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

ラッキングを実行してみた

パッケージに含まれているゼブラフィッシュの動画でトラッキングを実行してみた.

f:id:eqseqs:20200610225548g:plain:w800

サンプルとしてパッケージに含まれている他の動画を見てもわかる通り, 動物の動画を撮影する時点で画像処理がしやすいように撮像系を設計する必要がある.

実行速度

サンプルコードのような書き方だと, 動画の入力と画像処理が並列化されてないのであまり処理速度が速くない. threadingをちゃんとやるとかなり速くなるはず.

eqseqs.hatenablog.com

コード

Gistに上げた. サンプルコードとやっていることは一緒だけど, OpenCVGUIを切ってtqdmによるプログレスバーを追加してある.

Tracking Zebrafish by Tracktor

所感

依存パッケージがかなり少ないのでインストールはどのOSでもすんなりできるはず.

ラッキング処理の中身があまり抽象化されてないのでユーザが手間をかけないといけない部分が多いという印象 (一応,サンプルコードをコピペすればトラッキングも動画生成も可能ではあるが).