dgenerate-ultralytics-headless 8.3.213__py3-none-any.whl → 8.3.214__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.213
3
+ Version: 8.3.214
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -1,4 +1,4 @@
1
- dgenerate_ultralytics_headless-8.3.213.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.214.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
2
2
  tests/__init__.py,sha256=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
3
3
  tests/conftest.py,sha256=LXtQJcFNWPGuzauTGkiXgsvVC3llJKfg22WcmhRzuQc,2593
4
4
  tests/test_cli.py,sha256=0jqS6RfzmJeqgjozUqfT4AoP2d_IhUR0Ej-5ToQBK7A,5463
@@ -8,7 +8,7 @@ tests/test_exports.py,sha256=3o-qqPrPqjD1a_U6KBvwAusZ_Wy6S1WzmuvgRRUXmcA,11099
8
8
  tests/test_integrations.py,sha256=ehRcYMpGvUI3KvgsaT1pkN1rXkr7tDSlYYMqIcXyGbg,6220
9
9
  tests/test_python.py,sha256=x2q5Wx3eOl32ymmr_4p6srz7ebO-O8zFttuerys_OWg,28083
10
10
  tests/test_solutions.py,sha256=oaTz5BttPDIeHkQh9oEaw-O73L4iYDP3Lfe82V7DeKM,13416
11
- ultralytics/__init__.py,sha256=1UAecgYYPQuMuPeNmOT8HW8hSQkiu5Z6jQ9yehBWUqo,1302
11
+ ultralytics/__init__.py,sha256=k3IEmJ-I53V1LVgbSIEiVObKPJmj-HpFj6IQ5-YBqrU,1302
12
12
  ultralytics/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
13
13
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
14
14
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
@@ -126,7 +126,7 @@ ultralytics/engine/exporter.py,sha256=BFzmv7tn2e9zUPwFspb677o1QzzJlOfcVyl3gXmVGW
126
126
  ultralytics/engine/model.py,sha256=uX6cTFdlLllGRbz8Lr90IZGb4OrtMDIHQEg7DxUqwe8,53449
127
127
  ultralytics/engine/predictor.py,sha256=4lfw2RbBDE7939011FcSCuznscrcnMuabZtc8GXaKO4,22735
128
128
  ultralytics/engine/results.py,sha256=uQ_tgvdxKAg28pRgb5WCHiqx9Ktu7wYiVbwZy_IJ5bo,71499
129
- ultralytics/engine/trainer.py,sha256=cd1Qq0SxToCLh7NWIRKKTyWZ-rGQGi3TjwKZ0u02gWk,43529
129
+ ultralytics/engine/trainer.py,sha256=URv3-BKeipw0Szl1xrnTH5cCIU3_SA10mx89GSA7Vs4,43832
130
130
  ultralytics/engine/tuner.py,sha256=8uiZ9DSYdjHmbhfiuzbMPw--1DLS3cpfZPeSzJ9dGEA,21664
131
131
  ultralytics/engine/validator.py,sha256=s7cKMqj2HgVm-GL9bUc76QBeue2jb4cKPk-uQQG5nck,16949
132
132
  ultralytics/hub/__init__.py,sha256=xCF02lzlPKbdmGfO3NxLuXl5Kb0MaBZp_-fAWDHZ8zw,6698
@@ -171,7 +171,7 @@ ultralytics/models/yolo/model.py,sha256=PH8nXl0ZulgjWMr9M-XAK2TcdaBNXX5AzofIhcKb
171
171
  ultralytics/models/yolo/classify/__init__.py,sha256=9--HVaNOfI1K7rn_rRqclL8FUAnpfeBrRqEQIaQw2xM,383
172
172
  ultralytics/models/yolo/classify/predict.py,sha256=o7pDE8xwjkHUUIIOph7ZVQZyGZyob24dYDQ460v_7R0,4149
173
173
  ultralytics/models/yolo/classify/train.py,sha256=juAdpi0wIsnleACkq9Rct9io-Gr1A4gG511VqIUvu8E,9656
174
- ultralytics/models/yolo/classify/val.py,sha256=vmafe9oCqpy8Elab3jZwxMtXhzHodCVRo_vrsOLLhuQ,10091
174
+ ultralytics/models/yolo/classify/val.py,sha256=FUTTrvIMlFxdJm8dlrsguKsDvfRdDtGNlIMdJ_-PMtE,10134
175
175
  ultralytics/models/yolo/detect/__init__.py,sha256=GIRsLYR-kT4JJx7lh4ZZAFGBZj0aebokuU0A7JbjDVA,257
176
176
  ultralytics/models/yolo/detect/predict.py,sha256=Vtpqb2gHI7hv9TaBBXsnoScQ8HrSnj0PPOkEu07MwLc,5394
177
177
  ultralytics/models/yolo/detect/train.py,sha256=rnmCt0TG5bdySE2TVUsUqwyyF_LTy4dZdlACoM1MhcU,10554
@@ -256,7 +256,7 @@ ultralytics/utils/metrics.py,sha256=DC-JuakuhHfeCeLvUHb7wj1HPhuFakx00rqXicTka5Y,
256
256
  ultralytics/utils/nms.py,sha256=AVOmPuUTEJqmq2J6rvjq-nHNxYIyabgzHdc41siyA0w,14161
257
257
  ultralytics/utils/ops.py,sha256=PW3fgw1d18CA2ZNQZVJqUy054cJ_9tIcxd1XnA0FPgU,26905
258
258
  ultralytics/utils/patches.py,sha256=0-2G4jXCIPnMonlft-cPcjfFcOXQS6ODwUDNUwanfg4,6541
259
- ultralytics/utils/plotting.py,sha256=TtEAUGpGh0cL_5RvUD3jyils5pY1yke1_d_bOvZ3Ivc,47948
259
+ ultralytics/utils/plotting.py,sha256=jpnOxvfabGPBHCP-G-oVAc1PAURhEx90ygEh0xyAW84,48014
260
260
  ultralytics/utils/tal.py,sha256=7KQYNyetfx18CNc_bvNG7BDb44CIU3DEu4qziVVvNAE,20869
261
261
  ultralytics/utils/torch_utils.py,sha256=FU3tzaAYZP_FIrusfOxVrfgBN2e7u7QvHY9yM-xB3Jc,40332
262
262
  ultralytics/utils/tqdm.py,sha256=ny5RIg2OTkWQ7gdaXfYaoIgR0Xn2_hNGB6tUpO2Unns,16137
@@ -276,8 +276,8 @@ ultralytics/utils/callbacks/tensorboard.py,sha256=_4nfGK1dDLn6ijpvphBDhc-AS8qhS3
276
276
  ultralytics/utils/callbacks/wb.py,sha256=ngQO8EJ1kxJDF1YajScVtzBbm26jGuejA0uWeOyvf5A,7685
277
277
  ultralytics/utils/export/__init__.py,sha256=jQtf716PP0jt7bMoY9FkqmjG26KbvDzuR84jGhaBi2U,9901
278
278
  ultralytics/utils/export/imx.py,sha256=Jl5nuNxqaP_bY5yrV2NypmoJSrexHE71TxR72SDdjcg,11394
279
- dgenerate_ultralytics_headless-8.3.213.dist-info/METADATA,sha256=mk_6ygTQTklQy5ZH3VW6WrkHkyy15KKFRsPNI-6oZzs,38763
280
- dgenerate_ultralytics_headless-8.3.213.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
281
- dgenerate_ultralytics_headless-8.3.213.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
282
- dgenerate_ultralytics_headless-8.3.213.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
283
- dgenerate_ultralytics_headless-8.3.213.dist-info/RECORD,,
279
+ dgenerate_ultralytics_headless-8.3.214.dist-info/METADATA,sha256=_pH4Ko9D5XP6TeT4FS2iuu0s1ApviPGyO6e9Nn6uHhA,38763
280
+ dgenerate_ultralytics_headless-8.3.214.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
281
+ dgenerate_ultralytics_headless-8.3.214.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
282
+ dgenerate_ultralytics_headless-8.3.214.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
283
+ dgenerate_ultralytics_headless-8.3.214.dist-info/RECORD,,
ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.213"
3
+ __version__ = "8.3.214"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -170,6 +170,8 @@ class BaseTrainer:
170
170
  self.tloss = None
171
171
  self.loss_names = ["Loss"]
172
172
  self.csv = self.save_dir / "results.csv"
173
+ if self.csv.exists() and not self.args.resume:
174
+ self.csv.unlink()
173
175
  self.plot_idx = [0, 1, 2]
174
176
  self.nan_recovery_attempts = 0
175
177
 
@@ -820,16 +822,17 @@ class BaseTrainer:
820
822
  if ckpt.get("scaler") is not None:
821
823
  self.scaler.load_state_dict(ckpt["scaler"])
822
824
  if self.ema and ckpt.get("ema"):
825
+ self.ema = ModelEMA(self.model) # validation with EMA creates inference tensors that can't be updated
823
826
  self.ema.ema.load_state_dict(ckpt["ema"].float().state_dict())
824
827
  self.ema.updates = ckpt["updates"]
825
828
  self.best_fitness = ckpt.get("best_fitness", 0.0)
826
829
 
827
830
  def _handle_nan_recovery(self, epoch):
828
- """Detect and recover from NaN/Inf loss or fitness collapse by loading last checkpoint."""
829
- loss_nan = self.tloss is not None and not torch.isfinite(self.tloss).all()
831
+ """Detect and recover from NaN/Inf loss and fitness collapse by loading last checkpoint."""
832
+ loss_nan = self.loss is not None and not self.loss.isfinite()
830
833
  fitness_nan = self.fitness is not None and not np.isfinite(self.fitness)
831
834
  fitness_collapse = self.best_fitness and self.best_fitness > 0 and self.fitness == 0
832
- corrupted = RANK in {-1, 0} and (loss_nan or fitness_nan or fitness_collapse)
835
+ corrupted = RANK in {-1, 0} and loss_nan and (fitness_nan or fitness_collapse)
833
836
  reason = "Loss NaN/Inf" if loss_nan else "Fitness NaN/Inf" if fitness_nan else "Fitness collapse"
834
837
  if RANK != -1: # DDP: broadcast to all ranks
835
838
  broadcast_list = [corrupted if RANK == 0 else None]
@@ -844,6 +847,7 @@ class BaseTrainer:
844
847
  if self.nan_recovery_attempts > 3:
845
848
  raise RuntimeError(f"Training failed: NaN persisted for {self.nan_recovery_attempts} epochs")
846
849
  LOGGER.warning(f"{reason} detected (attempt {self.nan_recovery_attempts}/3), recovering from last.pt...")
850
+ self._model_train() # set model to train mode before loading checkpoint to avoid inference tensor errors
847
851
  _, ckpt = load_checkpoint(self.last)
848
852
  ema_state = ckpt["ema"].float().state_dict()
849
853
  if not all(torch.isfinite(v).all() for v in ema_state.values() if isinstance(v, torch.Tensor)):
@@ -205,6 +205,7 @@ class ClassificationValidator(BaseValidator):
205
205
  img=batch["img"],
206
206
  batch_idx=torch.arange(batch["img"].shape[0]),
207
207
  cls=torch.argmax(preds, dim=1),
208
+ conf=torch.amax(preds, dim=1),
208
209
  )
209
210
  plot_images(
210
211
  batched_preds,
@@ -778,10 +778,10 @@ def plot_images(
778
778
  idx = batch_idx == i
779
779
  classes = cls[idx].astype("int")
780
780
  labels = confs is None
781
+ conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
781
782
 
782
783
  if len(bboxes):
783
784
  boxes = bboxes[idx]
784
- conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
785
785
  if len(boxes):
786
786
  if boxes[:, :4].max() <= 1.1: # if normalized with tolerance 0.1
787
787
  boxes[..., [0, 2]] *= w # scale to pixels
@@ -805,7 +805,8 @@ def plot_images(
805
805
  for c in classes:
806
806
  color = colors(c)
807
807
  c = names.get(c, c) if names else c
808
- annotator.text([x, y], f"{c}", txt_color=color, box_color=(64, 64, 64, 128))
808
+ label = f"{c}" if labels else f"{c} {conf[0]:.1f}"
809
+ annotator.text([x, y], label, txt_color=color, box_color=(64, 64, 64, 128))
809
810
 
810
811
  # Plot keypoints
811
812
  if len(kpts):