From cc41c8f0fed0517560fe0b594ea8128aa2676dca Mon Sep 17 00:00:00 2001 From: Hayato M Yamanouchi <122147942+HMYamano@users.noreply.github.com> Date: Fri, 13 Mar 2026 15:40:07 +0900 Subject: [PATCH 1/5] Create train_ultralytics.py --- libs/train_ultralytics.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 libs/train_ultralytics.py diff --git a/libs/train_ultralytics.py b/libs/train_ultralytics.py new file mode 100644 index 0000000..3b68056 --- /dev/null +++ b/libs/train_ultralytics.py @@ -0,0 +1,35 @@ +import argparse + + +def parse_args(): + parser = argparse.ArgumentParser(description="Train YOLOv8/YOLO11 with Ultralytics") + parser.add_argument("--weights", type=str, default="yolov8s.pt", help="initial weights") + parser.add_argument("--data", type=str, required=True, help="path to dataset YAML") + parser.add_argument("--epochs", type=int, default=300) + parser.add_argument("--imgsz", type=int, default=640) + parser.add_argument("--batch", type=int, default=16) + parser.add_argument("--project", type=str, default="runs/train", help="output project dir") + parser.add_argument("--name", type=str, default="exp", help="run name") + parser.add_argument("--patience", type=int, default=50) + return parser.parse_args() + + +def main(): + args = parse_args() + + from ultralytics import YOLO + + model = YOLO(args.weights) + model.train( + data=args.data, + epochs=args.epochs, + imgsz=args.imgsz, + batch=args.batch, + project=args.project, + name=args.name, + patience=args.patience, + ) + + +if __name__ == "__main__": + main() From 6e27aead8f8fc1e8b325ed8857039b1a2b38456f Mon Sep 17 00:00:00 2001 From: Hayato M Yamanouchi <122147942+HMYamano@users.noreply.github.com> Date: Sat, 14 Mar 2026 22:19:03 +0900 Subject: [PATCH 2/5] update gitignore --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 06f0baa..ae134a0 100644 --- a/.gitignore +++ b/.gitignore @@ -181,4 +181,9 @@ custom_layout_analysis.ini custom_layout_evaluater_gui.ini desktop.ini -others/ \ No newline at end of file +others/ + +.claude/ +.history/ +settings.json +settings.*.json \ No newline at end of file From dbddbc8047bd32464fea7d1dd3948f029d5b39cb Mon Sep 17 00:00:00 2001 From: Hayato M Yamanouchi <122147942+HMYamano@users.noreply.github.com> Date: Sat, 14 Mar 2026 22:28:58 +0900 Subject: [PATCH 3/5] Bump version to 1.1.1 Co-Authored-By: Claude Sonnet 4.6 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f874322..68ca8a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "yoru" -version = "0.1.0" +version = "1.1.1" description = "YORU - Your Own Research Utility for real-time behavioral analysis" readme = "README.md" requires-python = ">=3.9,<3.10" From 321b7a9b9c18fc3bbe6c1c49c6a8b01ac4e4a161 Mon Sep 17 00:00:00 2001 From: Hayato M Yamanouchi <122147942+HMYamano@users.noreply.github.com> Date: Sat, 14 Mar 2026 22:42:40 +0900 Subject: [PATCH 4/5] Ad readme information in Readme --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index ea49cf3..55bb735 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,17 @@ “YORU” (Your Optimal Recognition Utility) is an open-source animal behavior recognition system using Python. YORU can detect animal behaviors, not only single-animal behaviors but also social behaviors. YORU also provides online/offline analysis and closed-loop manipulation. +## Versions + +| Channel | Version | Notes | +|---------|---------|-------| +| **Latest Release** | [v1.1.1](https://github.com/Kamikouchi-lab/YORU/releases/tag/v1.1.1) | Stable release recommended for general use | +| **Latest Beta** | [v2.0.0-beta.1](https://github.com/Kamikouchi-lab/YORU/releases/tag/v2.0.0-beta.1) | Preview of the next major version — may contain bugs | + +> To use the beta version, check out the corresponding tag: +> ``` +> git checkout v2.0.0-beta.1 +> ``` ## Features From 2e11978c7dbdba3b81c636f85e3c4707768759d6 Mon Sep 17 00:00:00 2001 From: Ryosuke Takeuchi Date: Thu, 26 Mar 2026 14:03:20 +0900 Subject: [PATCH 5/5] Add async GUI launcher and error reporting Add front-end error log UI and backend support for reporting GUI subprocess errors. web/gui_home.html: add an error display panel and expose displayError to prepend timestamped error entries. yoru/app.py: introduce threading and helper functions (_run_gui_subprocess and _launch_gui) to run GUI subprocesses on background threads, capture stdout/stderr, and notify the front end via eel.displayError; refactor run_cam_gui_YMH, run_analysis_gui, run_train_gui, and run_evaluate_gui to use the new launcher and add config-file-not-found handling for the real-time GUI. Also add working-example.md documenting the working environment and installed packages. --- web/gui_home.html | 14 ++++++ working-example.md | 121 +++++++++++++++++++++++++++++++++++++++++++++ yoru/app.py | 57 ++++++++++++++------- 3 files changed, 175 insertions(+), 17 deletions(-) create mode 100644 working-example.md diff --git a/web/gui_home.html b/web/gui_home.html index bfe682a..b5157bc 100644 --- a/web/gui_home.html +++ b/web/gui_home.html @@ -27,6 +27,9 @@ +