Japanese Manual · 1.0.0
AMADEUS
日本語マニュアル
AMADEUSの操作ガイドです。
1. 起動
お使いのOSのボタンからファイルをダウンロードし、実行してください。Gitの事前導入は不要です。macOSでは、以下に示す対応したPython環境が必要です。
macOSおよびLinuxでは、まだ十分な動作検証を行えていません。 エラーが発生した場合は、Yusuke Notomi(jpmyrmecol [at] gmail.com)まで、OS、インストール方法、表示されたエラーメッセージを添えてご連絡ください。
本体・uv・必要なパッケージを準備し、完了するとホーム画面が開きます。Windows・LinuxではPythonも自動で準備します。インターネット接続が必要です。
ダウンロードしたファイルの開き方
Windows:AMADEUS-Setup.bat をダブルクリックします。次回からはデスクトップの AMADEUS ショートカットでも起動できます。
macOS:AMADEUS-Setup.command を開きます。ブラウザーからのダウンロードでは実行権限が付かない場合があります。その場合はターミナルで chmod +x と入力し、末尾にファイルをドラッグしてEnterを押してから、再度開いてください。macOSが開く操作をブロックした場合は「システム設定 → プライバシーとセキュリティ」で表示を確認してください。
Linux:ファイルのプロパティで「プログラムとして実行」を許可し、AMADEUS-Setup.sh を「端末で実行」します。名称や操作はデスクトップ環境で異なります。デスクトップまたはWSLgのGUI表示環境が必要です。
macOSでは、Apple Siliconでネイティブに動作するPython 3.10–3.12とTcl/Tk 8.6が必要です。Tcl/Tk 9は現在のGUI依存関係に対応していません。Pythonは AMADEUS_PYTHON、使用する環境のフォルダーは AMADEUS_VENV で指定できます。設定手順を参照してください。
macOS・Linuxでは、次回も同じ起動用ファイルを実行できます。保存されたAMADEUS本体を使用します。
Gitを使ってインストールする場合(Windows・macOS・Linux)
Windows
Gitを導入済みなら、保存先のフォルダーでコマンドプロンプト(cmd)を開き、次の1行を実行します(Windows 10 / 11)。保存先に同名の AMADEUS フォルダーがない状態で実行してください。
git clone https://github.com/jpmyrmecol/AMADEUS.git && cd AMADEUS && AMADEUS.bat
uv・Python・必要なパッケージを自動で準備し、セットアップ完了後にホーム画面を開きます。初回セットアップにはインターネット接続が必要です。
次回からは、新しいコマンドプロンプトで次を実行します。作成された AMADEUS フォルダーは移動・削除せずに残してください。
amadeus
macOS (Apple Silicon)
Gitを導入後、保存先のターミナルで次の1行を実行します。
git clone https://github.com/jpmyrmecol/AMADEUS.git && cd AMADEUS && bash AMADEUS.shApple Siliconを対象としています。Intel Macは同梱のPyTorch 2.7.1構成の対象外です。Rosettaを使わず起動してください。
AMADEUS.command を開きます。実行権限のエラーが出る場合は、AMADEUSフォルダーのターミナルで chmod +x AMADEUS.command AMADEUS.sh を実行してください。
利用可能な場合はMPS、利用できない場合はCPUを選択します。MPSおよびmacOS実機での全工程は未検証です。
ターミナルから amadeus / amade を使うには ~/.local/bin をPATHに追加します。設定方法は起動時の案内を参照してください。エラーはターミナルで確認できます。
Linux (Ubuntu / WSL2)
Gitを導入後、保存先のターミナルで次の1行を実行します。
git clone https://github.com/jpmyrmecol/AMADEUS.git && cd AMADEUS && bash AMADEUS.shAMADEUSフォルダーで bash AMADEUS.sh を実行します。デスクトップ環境またはWSLgなどのGUI表示環境が必要です。
Tk・OpenCVや共有ライブラリのエラーが出た場合は、ターミナルに表示された不足項目を確認してください。対応するNVIDIA GPUではCUDA、その他ではCPUを利用します。
amadeus / amade を使うには ~/.local/bin をPATHに追加します。Linux x86_64のCPU環境構築は確認済みですが、実動画による全工程とLinux ARM実機は未検証です。
ZIPをダウンロードしてインストールする場合
Gitを使わない場合は、GitHubリポジトリの「Code → Download ZIP」からダウンロードします。
- AMADEUSのZIPファイルを展開します。
- OSに合ったランチャーを起動します。初回セットアップ後も同様に起動できます。
- 初回セットアップが完了すると、ホーム画面が開きます。
| OS | 起動方法 |
|---|---|
| Windows 10 / 11 | AMADEUS.bat をダブルクリック |
| macOS(Apple Silicon) | AMADEUS.command を開く |
| Ubuntu / WSL2 | bash AMADEUS.sh を実行 |
2. ホーム画面
| 画面 | 用途 |
|---|---|
| Easy Tracking | 標準的な追跡処理を少ない入力で実行 |
| Cropping & Trimming | 動画の範囲、時間、明るさなどを前処理 |
| Segmentation | 動物を背景から分離し、解析範囲を設定 |
| Advanced Tracking | 各工程とパラメータを詳しく設定 |
| Multi Config Batch | 複数の設定ファイルを順番に実行 |
| Refinement | 追跡方向や個体IDを目視で修正 |
| Colab(beta) | Google Drive向けのclean bundleを作り、AMADEUS Colab workflowを開く |
3. 基本の流れ
- 必要に応じて Cropping & Trimming で動画を整えます。
- Segmentation で動物が正しく抽出される設定を作ります。
- Easy Tracking で学習と追跡を実行します。
- 結果動画とCSVを確認し、必要なら Refinement で修正します。
細かい条件を指定する場合は、Easy Trackingの代わりに Advanced Tracking を使います。
4. Cropping & Trimming(任意)
解析する場所と時間を切り出し、見え方を整えた動画を作成します。
- Input Video で動画を選びます。
- Set In と Set Out で使用区間を決めます。
- Full を使うか、Add Crop で領域を追加します。
- 領域をドラッグ・リサイズし、出力する領域を選びます。
- 領域ごとに明るさ、コントラスト、カラー/グレースケールを設定します。
- 出力先、名前、FPSを確認して Export します。
5. Segmentation(前景抽出)
動画から動物の領域を抽出し、単独個体と接触個体を区別します。
- 動画と解析フレーム範囲を確認します。
- 前景の抽出方法を選びます。背景差分を使う場合は、Median・Maximum・Minimumから選択します。
- Threshold と Minimum Blob Area を調整します。
- Analyze を実行します。
- 単独個体が青、接触個体などが橙になるように外れ値範囲を調整します。
- (任意)前景として抽出されずに残った動物や動物の一部がある場合は、Additional Outlier で追加の閾値を設定し、それらが橙色でカバーされるように調整して除外します。
- Processing を押して保存します。
前景の抽出方法
| モード | 向いている映像 |
|---|---|
| Background difference | 背景との差が安定している |
| Dark region | 動物が背景より暗い |
| Bright region | 動物が背景より明るい |
| Dark + background difference | 暗さと背景差を組み合わせたい |
| Bright + background difference | 明るさと背景差を組み合わせたい |
結果は <Session>/segmentation/ に保存されます。
解析済み結果の読み込み(Result OBB Import)[Beta]
最近追加されたベータ版の機能で、まだ不完全です。 判定結果を確認したうえで使用してください。
面積だけでは、実際に大きな1個体と、接触した2個体とを区別できません。どちらも面積の外れ値になるため、大きな個体が接触個体として扱われ、単独個体の学習データから外れてしまいます。同じ動画をすでに一度追跡している場合は、その結果CSVを読み込むことでこの取り違えを解消できます。
サイドバーの Result OBB Import (beta)(既定は閉じた状態)を開き、Use imported result OBB にチェックを入れて、Reference から追跡結果CSV(<Session>/results/ の frame 列と ID ごとの cx・cy・w・h・heading 列を持つファイル)を選びます。別プロジェクトで解析した結果CSVでも、同じ動画の座標であれば読み込めます。
各OBBは、その中心を含むblob(中心が背景に落ちる場合は最も重なるblob)1つだけに割り当てられます。したがって、2個体が1つのblobを形成していればそのblobのOBB数は2になります。面積の外れ値と判定されたblobのうち、割り当てられたOBBがちょうど1つで、かつそのOBBがblob面積の Min OBB coverage(既定:0.7)以上を覆うものだけが、大きな1個体として外れ値から外されます。それ以外は面積による判定のままです。面積の範囲内にあるblob、Additional Outlierで抽出された領域、OBBが2つ以上のblob、結果CSVが説明しないblobは、いずれも変更されません。
被覆率の条件は、2個体のうち片方を追跡が取りこぼした場合を除外するためのものです。この場合もOBB数は1になりますが、OBBは自分が対応する個体の範囲しか覆わず、もう1個体の分が残るため、外れ値のまま残ります。OBBは1個体の外接矩形なので、検出とセグメンテーションが同じ個体を捉えていれば被覆率は1に近づきます。実際の値はblobにカーソルを合わせると表示されるので、自分のデータで確認して閾値を決めてください。
Frame offset は、結果CSVのフレーム番号から動画のフレーム番号を引いた値です(トリミング前の動画で追跡した場合などに使用、既定:0)。Show imported OBB をオンにすると、読み込んだOBBがプレビューと書き出し動画にマゼンタで重ね描きされ、位置ずれを目視で確認できます。プレビュー上部の result-single は外れ値から外されたblob数、blobにカーソルを合わせると割り当てOBB数と被覆率が表示されます。
設定は segmentation_gui_config.json に保存されます。読み込んだ結果を使わない場合は Clear imported result で解除するか、チェックを外してください。
6. Easy Tracking
個体数と2つの質問から設定を作り、学習から結果出力までをまとめて実行します。
- Video File と Session を指定します。
- Launch Segmentation で前景抽出を設定します。
- How many animals are in the video? に個体数を入力し、Enterボタンで反映します。
- 個体の重なり度合いと、後退する個体がいるかを選びます。
- Processing を押します。
| 入力 | 選択肢 | 意味 |
|---|---|---|
| How many animals are in the video? | 正の整数 | 追跡する個体数 |
| Use paste augmentation when animals = 1 | On / Off | 1個体でも合成画像を学習に使うか |
| How severe is the overlap? | Very heavy / Heavy / Light | 接触の強さ。Very heavyでは埋め込みID補正も実行 |
| Do the animals ever move backward? | Yes / No | Yesでは方向ラベルを追加調整 |
| Delete tmp files | On / Off | 完了後に一時ファイルを削除するか |
Save Config と Load Config でYAMLを保存・読込できます。Switch Advanced Mode では現在の設定をAdvanced Trackingで開きます。
自動処理
| 工程 | 内容 |
|---|---|
| Initial Tracking | 単独個体を追跡、パラメータを自動調整 |
| Direction Estimation | 移動軌跡から単独個体の向きを推定 |
| Refine Blobs | 必要に応じて誤った方向ラベルを除去 |
| Clustered / Mixed Paste | 仮想相互作用画像を合成 |
| Crop Images / Create Dataset | 学習用画像とデータセットを作成 |
| Training | 検出器を学習 |
| Detection / ID Tracking / ID Correction | 検出、個体対応、時系列補正 |
| Create Video | 追跡結果を重ねた動画を作成 |
方向推定なし(Without direction estimation)[Beta]
ベータ版機能です。追跡結果を確認したうえで使用してください。
front directionが不要な場合、または前後を安定して区別できない対象に使用できます。Easy TrackingとAdvanced Trackingの双方から有効化でき、初期値はオフです。
front direction classを割り当てずにOBBを推定し、ID trackingを行います。OBBの回転角は幾何情報として保持されますが、frontとrearは割り当てません。動きからfront directionを決められないことだけを理由に、静止した個体や軌跡の短い個体を除外することはありません。
出力は<Session>/without_direction_estimation/に保存されます。最終CSVにはframe, cx0, cy0, w0, h0, …が含まれ、heading列は含まれません。このモード用に生成した学習データとweightを使用してください。
個体数可変(Variable population)[Beta]
ベータ版機能です。追跡結果を確認したうえで使用してください。
画面への出入りなどで動画中の個体数が変わる場合に使用します。初期値はオフです。Easy Trackingではチェックを入れると個体数入力が無効になり、Advanced TrackingではMainのBasic Settingsから有効にできます。
新たに現れた個体には新しいIDを割り当て、長く見失ったIDは終了します。再入場した同一個体でも新しいIDになる場合があります。誤検出や対応失敗でもIDが増えることがあるため、実際の個体数を正確に推定する機能ではありません。
可変モードの結果は追跡出力フォルダ内のvariable/に保存されます。
7. Advanced Tracking
個体数が変わる場合は、MainのBasic SettingsでVariable populationを有効にしてください。
各工程とパラメータを詳しく設定します。
- セッション、学習動画、解析動画、個体数を指定します。
- Adjust Parameters で動画に合う初期値を測定します。
- 実行する工程と設定を確認します。
- Run を押します。
| セクション | 主な設定 |
|---|---|
| Basic | 動画、セッション、個体数、画像サイズ、フレーム範囲 |
| Initial Tracking | 単独個体の抽出とフレーム間対応 |
| Create single animal images | 軌跡、方向判定、方向ラベル調整 |
| Create with crossing | 接触場面の合成 |
| Create dataset | 学習画像数、クロップ、検証データ |
| Training | エポック、バッチ、デバイス、学習率 |
| Analysis | 検出、ID追跡、埋め込み補正 |
| Create Video | 出力範囲、FPS、描画内容 |
ランダムノイズ付与(Random noise on animals)[Beta]
通常・Clusteredの貼り付け完了後、合成画像ごとに個体の上に、背景で置き換えた小さなノイズを貼ります。天井やレンズのゴミの再現用で、Advanced Trackingのみ、既定はオフです。
Noise Size (% of body length) で体長に対する大きさ(既定:10)、Max Noise per Animal で1個体あたりの上限個数(既定:10、0からこの値までの乱数)を指定します。形状は毎回ランダムで、ラベルとマスクは変わりません。
skipチェックボックスをチェックすることで、必要な工程だけを実行できます。
解析する重みは last、best、または保存済みエポック番号で指定できます。
8. Multi Config Batch
複数のTracking設定を順番に実行します。
- EasyまたはAdvanced Trackingで設定をYAMLに保存します。
- Add Configs または Add Folder でconfigを追加します。
- Up / Down で実行順を整えます。
- Run Queue を押します。
9. Refinement
結果を動画に重ねて確認し、体の向きや個体IDを修正します。
- AMADEUS mode:
config.yaml、重み、結果を選択 - Dataset mode: 動画と追跡ファイルを選択
Dataset modeでは、AMADEUS形式のほか、SLEAP、DeepLabCut、idtracker.aiなどのCSV/H5を読み込めます。方向を修正する場合は、前端・後端の座標を持つデータを選びます。
| 操作 | 内容 |
|---|---|
| 矢印の端をドラッグ | 前端または後端を移動 |
| 矢印全体をドラッグ | 個体位置を移動 |
| 右クリック | 向きの反転、または2個体のID入れ替え |
| マウスホイール | 拡大・縮小 |
| 背景をドラッグ | 表示を移動 |
| 左右キー | 前後のフレームへ移動 |
| 上下キー | 選択する個体を変更 |
| Space | 再生・一時停止 |
| Ctrl+S(macOSではCommand+Sも可) | 保存 |
10. Colab(beta)
保存済みのAMADEUS設定をGoogle Colabで実行し、GPUを使って処理できます。
- Colab(beta) で保存済みの
config.yamlとGoogle Driveの保存先を選び、Prepare for Google Colab を押します。 - 準備後に Open Google Colab を押します。
- Colabで Run all を実行し、求められたらGoogle Driveを承認します。
GPU runtimeが必要です。最終CSV、結果動画、必要な学習済み重み、summary、logがGoogle Driveへ保存されます。
11. パラメータ調整
今後、主要なパラメータ調整の指針を追加します。基本的には標準設定で問題ありません。
| 症状 | 最初に確認する項目 |
|---|---|
| メモリ不足 | Advanced modeで、バッチサイズを指定(基本的には自動で調整されます) |
12. 出力
| 場所 | 内容 |
|---|---|
<Session>/config.yaml |
実行設定 |
<Session>/segmentation/ |
背景画像、Segmentation設定 |
<Session>/model/ |
ダウンロードした事前学習重み |
<Session>/main/<model>/ |
学習データ、学習済み重み、追跡結果、結果動画 |
<Session>/results/ |
最終CSV |
<Session>/log.txt、time.csv |
ログと処理時間 |
results/ には、tracked(後処理なし)、filled(通常後処理済み)、もしくはid_resolved(埋め込みID補正 + 後処理済み)の最終CSVが保存されます。
最終CSVは1行が1フレームで、frame と個体別の cx0, cy0, w0, h0, heading0, … を持ちます。個体IDは0から始まります。座標とOBB寸法は入力動画のピクセル単位、原点は左上、xは右向き、yは下向きです。heading は上を0°、時計回りを正とする0°以上360°未満の角度です。欠測は空欄(NaN)で、全個体が全フレームで必ず得られるわけではありません。
学習済み重みは <Session>/main/<model>/training/<動画名>/weights/ に保存されます。
13. 推奨撮影条件
- 比較的細長い体型で体軸が判別可能であり、初心者でも個体の前後を見分けられる動物であること。
- 固定した真上視点のカメラで撮影し、動きが概ね2次元平面内に収まっていること。
- カメラが固定され、照明が安定していること。
- 背景が基本的に静止していること。
- 個体と背景の間に十分なコントラストがあること。
- 初心者でも目視で個体を追跡できる程度の解像度があること。
- 初心者でもフレームごとに目視で個体を追跡できる程度のfpsとシャッタースピードで撮影されていること。
- 学習データ生成のため、個体同士が接触していない単独個体の場面が比較的頻繁に含まれていること。
ただし、撮影条件が同一であれば、学習用動画と解析用動画を別々に撮影しても構いません。
14. ライセンス
GNU Affero General Public License v3.0 only(AGPL-3.0-only)です。LICENSE と 第三者ライセンス情報 を参照してください。