From 863c788f67f05b6fbf447a0ad13dc74f3de26427 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 13 Feb 2024 20:07:54 +0100 Subject: [PATCH] `ultralytics 8.1.13` fix `yolo train time=` bug (#8179) Signed-off-by: Glenn Jocher --- tests/test_explorer.py | 4 ++-- ultralytics/__init__.py | 2 +- ultralytics/engine/trainer.py | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/test_explorer.py b/tests/test_explorer.py index 12960dd2..5b11c447 100644 --- a/tests/test_explorer.py +++ b/tests/test_explorer.py @@ -1,10 +1,10 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license +import PIL + from ultralytics import Explorer from ultralytics.utils import ASSETS -import PIL - def test_similarity(): """Test similarity calculations and SQL queries for correctness and response length.""" diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py index 60d4b009..97aa35fe 100644 --- a/ultralytics/__init__.py +++ b/ultralytics/__init__.py @@ -1,6 +1,6 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license -__version__ = "8.1.12" +__version__ = "8.1.13" from ultralytics.data.explorer.explorer import Explorer from ultralytics.models import RTDETR, SAM, YOLO diff --git a/ultralytics/engine/trainer.py b/ultralytics/engine/trainer.py index 770bad1b..e03aa9de 100644 --- a/ultralytics/engine/trainer.py +++ b/ultralytics/engine/trainer.py @@ -337,8 +337,8 @@ class BaseTrainer: if self.args.close_mosaic: base_idx = (self.epochs - self.args.close_mosaic) * nb self.plot_idx.extend([base_idx, base_idx + 1, base_idx + 2]) - epoch = self.epochs # predefine for resume fully trained model edge cases - for epoch in range(self.start_epoch, self.epochs): + epoch = self.start_epoch + while True: self.epoch = epoch self.run_callbacks("on_train_epoch_start") self.model.train() @@ -423,7 +423,7 @@ class BaseTrainer: if self.args.val or final_epoch or self.stopper.possible_stop or self.stop: self.metrics, self.fitness = self.validate() self.save_metrics(metrics={**self.label_loss_items(self.tloss), **self.metrics, **self.lr}) - self.stop |= self.stopper(epoch + 1, self.fitness) + self.stop |= self.stopper(epoch + 1, self.fitness) or final_epoch if self.args.time: self.stop |= (time.time() - self.train_time_start) > (self.args.time * 3600) @@ -455,6 +455,7 @@ class BaseTrainer: self.stop = broadcast_list[0] if self.stop: break # must break all DDP ranks + epoch += 1 if RANK in (-1, 0): # Do final val with best.pt