ultralytics 8.0.160__tar.gz → 8.0.161__tar.gz

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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

Files changed (178) hide show
  1. {ultralytics-8.0.160/ultralytics.egg-info → ultralytics-8.0.161}/PKG-INFO +1 -1
  2. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/dataset.py +4 -4
  4. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/utils.py +16 -7
  5. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/trainer.py +4 -1
  6. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/tensorboard.py +3 -3
  7. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/downloads.py +8 -6
  8. {ultralytics-8.0.160 → ultralytics-8.0.161/ultralytics.egg-info}/PKG-INFO +1 -1
  9. {ultralytics-8.0.160 → ultralytics-8.0.161}/CONTRIBUTING.md +0 -0
  10. {ultralytics-8.0.160 → ultralytics-8.0.161}/LICENSE +0 -0
  11. {ultralytics-8.0.160 → ultralytics-8.0.161}/MANIFEST.in +0 -0
  12. {ultralytics-8.0.160 → ultralytics-8.0.161}/README.md +0 -0
  13. {ultralytics-8.0.160 → ultralytics-8.0.161}/README.zh-CN.md +0 -0
  14. {ultralytics-8.0.160 → ultralytics-8.0.161}/requirements.txt +0 -0
  15. {ultralytics-8.0.160 → ultralytics-8.0.161}/setup.cfg +0 -0
  16. {ultralytics-8.0.160 → ultralytics-8.0.161}/setup.py +0 -0
  17. {ultralytics-8.0.160 → ultralytics-8.0.161}/tests/test_cli.py +0 -0
  18. {ultralytics-8.0.160 → ultralytics-8.0.161}/tests/test_engine.py +0 -0
  19. {ultralytics-8.0.160 → ultralytics-8.0.161}/tests/test_python.py +0 -0
  20. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/assets/bus.jpg +0 -0
  21. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/assets/zidane.jpg +0 -0
  22. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/__init__.py +0 -0
  23. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  24. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/DOTAv2.yaml +0 -0
  25. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  26. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  27. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  28. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  29. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  30. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  31. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  32. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco.yaml +0 -0
  33. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  34. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  35. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  36. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  37. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  38. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  39. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/datasets/xView.yaml +0 -0
  40. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/default.yaml +0 -0
  41. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  42. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  43. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  44. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  45. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  46. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  47. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  48. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  49. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  50. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  51. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  52. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  53. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  54. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  55. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  56. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  57. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  58. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  59. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/__init__.py +0 -0
  60. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/annotator.py +0 -0
  61. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/augment.py +0 -0
  62. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/base.py +0 -0
  63. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/build.py +0 -0
  64. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/converter.py +0 -0
  65. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/data/loaders.py +0 -0
  66. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/__init__.py +0 -0
  67. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/exporter.py +0 -0
  68. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/model.py +0 -0
  69. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/predictor.py +0 -0
  70. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/results.py +0 -0
  71. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/engine/validator.py +0 -0
  72. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/hub/__init__.py +0 -0
  73. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/hub/auth.py +0 -0
  74. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/hub/session.py +0 -0
  75. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/hub/utils.py +0 -0
  76. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/__init__.py +0 -0
  77. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/fastsam/__init__.py +0 -0
  78. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/fastsam/model.py +0 -0
  79. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/fastsam/predict.py +0 -0
  80. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/fastsam/prompt.py +0 -0
  81. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/fastsam/utils.py +0 -0
  82. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/fastsam/val.py +0 -0
  83. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/nas/__init__.py +0 -0
  84. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/nas/model.py +0 -0
  85. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/nas/predict.py +0 -0
  86. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/nas/val.py +0 -0
  87. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/rtdetr/__init__.py +0 -0
  88. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/rtdetr/model.py +0 -0
  89. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/rtdetr/predict.py +0 -0
  90. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/rtdetr/train.py +0 -0
  91. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/rtdetr/val.py +0 -0
  92. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/__init__.py +0 -0
  93. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/amg.py +0 -0
  94. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/build.py +0 -0
  95. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/model.py +0 -0
  96. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/modules/__init__.py +0 -0
  97. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/modules/decoders.py +0 -0
  98. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/modules/encoders.py +0 -0
  99. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/modules/sam.py +0 -0
  100. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  101. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/modules/transformer.py +0 -0
  102. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/sam/predict.py +0 -0
  103. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/utils/__init__.py +0 -0
  104. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/utils/loss.py +0 -0
  105. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/utils/ops.py +0 -0
  106. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/__init__.py +0 -0
  107. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/classify/__init__.py +0 -0
  108. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/classify/predict.py +0 -0
  109. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/classify/train.py +0 -0
  110. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/classify/val.py +0 -0
  111. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/detect/__init__.py +0 -0
  112. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/detect/predict.py +0 -0
  113. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/detect/train.py +0 -0
  114. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/detect/val.py +0 -0
  115. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/model.py +0 -0
  116. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/pose/__init__.py +0 -0
  117. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/pose/predict.py +0 -0
  118. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/pose/train.py +0 -0
  119. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/pose/val.py +0 -0
  120. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/segment/__init__.py +0 -0
  121. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/segment/predict.py +0 -0
  122. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/segment/train.py +0 -0
  123. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/models/yolo/segment/val.py +0 -0
  124. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/__init__.py +0 -0
  125. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/autobackend.py +0 -0
  126. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/modules/__init__.py +0 -0
  127. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/modules/block.py +0 -0
  128. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/modules/conv.py +0 -0
  129. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/modules/head.py +0 -0
  130. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/modules/transformer.py +0 -0
  131. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/modules/utils.py +0 -0
  132. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/nn/tasks.py +0 -0
  133. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/__init__.py +0 -0
  134. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/basetrack.py +0 -0
  135. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/bot_sort.py +0 -0
  136. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/byte_tracker.py +0 -0
  137. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/track.py +0 -0
  138. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/utils/__init__.py +0 -0
  139. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/utils/gmc.py +0 -0
  140. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  141. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/trackers/utils/matching.py +0 -0
  142. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/__init__.py +0 -0
  143. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/autobatch.py +0 -0
  144. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/benchmarks.py +0 -0
  145. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/__init__.py +0 -0
  146. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/base.py +0 -0
  147. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/clearml.py +0 -0
  148. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/comet.py +0 -0
  149. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/dvc.py +0 -0
  150. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/hub.py +0 -0
  151. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/mlflow.py +0 -0
  152. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/neptune.py +0 -0
  153. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/raytune.py +0 -0
  154. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/callbacks/wb.py +0 -0
  155. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/checks.py +0 -0
  156. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/dist.py +0 -0
  157. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/errors.py +0 -0
  158. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/files.py +0 -0
  159. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/instance.py +0 -0
  160. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/loss.py +0 -0
  161. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/metrics.py +0 -0
  162. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/ops.py +0 -0
  163. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/patches.py +0 -0
  164. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/plotting.py +0 -0
  165. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/tal.py +0 -0
  166. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/torch_utils.py +0 -0
  167. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/utils/tuner.py +0 -0
  168. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/yolo/__init__.py +0 -0
  169. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/yolo/cfg/__init__.py +0 -0
  170. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/yolo/data/__init__.py +0 -0
  171. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/yolo/engine/__init__.py +0 -0
  172. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/yolo/utils/__init__.py +0 -0
  173. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics/yolo/v8/__init__.py +0 -0
  174. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics.egg-info/SOURCES.txt +0 -0
  175. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics.egg-info/dependency_links.txt +0 -0
  176. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics.egg-info/entry_points.txt +0 -0
  177. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics.egg-info/requires.txt +0 -0
  178. {ultralytics-8.0.160 → ultralytics-8.0.161}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.0.160
3
+ Version: 8.0.161
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = '8.0.160'
3
+ __version__ = '8.0.161'
4
4
 
5
5
  from ultralytics.models import RTDETR, SAM, YOLO
6
6
  from ultralytics.models.fastsam import FastSAM
@@ -17,7 +17,7 @@ from .base import BaseDataset
17
17
  from .utils import HELP_URL, LOGGER, get_hash, img2label_paths, verify_image, verify_image_label
18
18
 
19
19
  # Ultralytics dataset *.cache version, >= 1.0.0 for YOLOv8
20
- DATASET_CACHE_VERSION = '1.0.2'
20
+ DATASET_CACHE_VERSION = '1.0.3'
21
21
 
22
22
 
23
23
  class YOLODataset(BaseDataset):
@@ -279,11 +279,11 @@ class ClassificationDataset(torchvision.datasets.ImageFolder):
279
279
  # Run scan if *.cache retrieval failed
280
280
  nf, nc, msgs, samples, x = 0, 0, [], [], {}
281
281
  with ThreadPool(NUM_THREADS) as pool:
282
- results = pool.imap(func=verify_image, iterable=zip([x[0] for x in self.samples], repeat(self.prefix)))
282
+ results = pool.imap(func=verify_image, iterable=zip(self.samples, repeat(self.prefix)))
283
283
  pbar = tqdm(results, desc=desc, total=len(self.samples), bar_format=TQDM_BAR_FORMAT)
284
- for im_file, nf_f, nc_f, msg in pbar:
284
+ for sample, nf_f, nc_f, msg in pbar:
285
285
  if nf_f:
286
- samples.append((im_file, nf))
286
+ samples.append(sample)
287
287
  if msg:
288
288
  msgs.append(msg)
289
289
  nf += nf_f
@@ -59,7 +59,7 @@ def exif_size(img: Image.Image):
59
59
 
60
60
  def verify_image(args):
61
61
  """Verify one image."""
62
- im_file, prefix = args
62
+ (im_file, cls), prefix = args
63
63
  # Number (found, corrupt), message
64
64
  nf, nc, msg = 0, 0, ''
65
65
  try:
@@ -79,7 +79,7 @@ def verify_image(args):
79
79
  except Exception as e:
80
80
  nc = 1
81
81
  msg = f'{prefix}WARNING ⚠️ {im_file}: ignoring corrupt image/label: {e}'
82
- return im_file, nf, nc, msg
82
+ return (im_file, cls), nf, nc, msg
83
83
 
84
84
 
85
85
  def verify_image_label(args):
@@ -321,7 +321,7 @@ def check_cls_dataset(dataset: str, split=''):
321
321
  dataset = Path(dataset)
322
322
  data_dir = (dataset if dataset.is_dir() else (DATASETS_DIR / dataset)).resolve()
323
323
  if not data_dir.is_dir():
324
- LOGGER.info(f'\nDataset not found ⚠️, missing path {data_dir}, attempting download...')
324
+ LOGGER.warning(f'\nDataset not found ⚠️, missing path {data_dir}, attempting download...')
325
325
  t = time.time()
326
326
  if str(dataset) == 'imagenet':
327
327
  subprocess.run(f"bash {ROOT / 'data/scripts/get_imagenet.sh'}", shell=True, check=True)
@@ -335,9 +335,9 @@ def check_cls_dataset(dataset: str, split=''):
335
335
  data_dir / 'validation').exists() else None # data/test or data/val
336
336
  test_set = data_dir / 'test' if (data_dir / 'test').exists() else None # data/val or data/test
337
337
  if split == 'val' and not val_set:
338
- LOGGER.info("WARNING ⚠️ Dataset 'split=val' not found, using 'split=test' instead.")
338
+ LOGGER.warning("WARNING ⚠️ Dataset 'split=val' not found, using 'split=test' instead.")
339
339
  elif split == 'test' and not test_set:
340
- LOGGER.info("WARNING ⚠️ Dataset 'split=test' not found, using 'split=val' instead.")
340
+ LOGGER.warning("WARNING ⚠️ Dataset 'split=test' not found, using 'split=val' instead.")
341
341
 
342
342
  nc = len([x for x in (data_dir / 'train').glob('*') if x.is_dir()]) # number of classes
343
343
  names = [x.name for x in (data_dir / 'train').iterdir() if x.is_dir()] # class names list
@@ -345,13 +345,22 @@ def check_cls_dataset(dataset: str, split=''):
345
345
 
346
346
  # Print to console
347
347
  for k, v in {'train': train_set, 'val': val_set, 'test': test_set}.items():
348
+ prefix = f'{colorstr(k)} {v}...'
348
349
  if v is None:
349
- LOGGER.info(f'{colorstr(k)}: {v}')
350
+ LOGGER.info(prefix)
350
351
  else:
351
352
  files = [path for path in v.rglob('*.*') if path.suffix[1:].lower() in IMG_FORMATS]
352
353
  nf = len(files) # number of files
353
354
  nd = len({file.parent for file in files}) # number of directories
354
- LOGGER.info(f'{colorstr(k)}: {v}... found {nf} images in {nd} classes ✅ ') # keep trailing space
355
+ if nf == 0:
356
+ if k == 'train':
357
+ raise FileNotFoundError(emojis(f"{dataset} '{k}:' no training images found ❌ "))
358
+ else:
359
+ LOGGER.warning(f'{prefix} found {nf} images in {nd} classes: WARNING ⚠️ no images found')
360
+ elif nd != nc:
361
+ LOGGER.warning(f'{prefix} found {nf} images in {nd} classes: ERROR ❌️ requires {nc} classes, not {nd}')
362
+ else:
363
+ LOGGER.info(f'{prefix} found {nf} images in {nd} classes ✅ ')
355
364
 
356
365
  return {'train': train_set, 'val': val_set or test_set, 'test': test_set or val_set, 'nc': nc, 'names': names}
357
366
 
@@ -10,6 +10,7 @@ import math
10
10
  import os
11
11
  import subprocess
12
12
  import time
13
+ import warnings
13
14
  from copy import deepcopy
14
15
  from datetime import datetime, timedelta
15
16
  from pathlib import Path
@@ -378,7 +379,9 @@ class BaseTrainer:
378
379
 
379
380
  self.lr = {f'lr/pg{ir}': x['lr'] for ir, x in enumerate(self.optimizer.param_groups)} # for loggers
380
381
 
381
- self.scheduler.step()
382
+ with warnings.catch_warnings():
383
+ warnings.simplefilter('ignore') # suppress 'Detected lr_scheduler.step() before optimizer.step()'
384
+ self.scheduler.step()
382
385
  self.run_callbacks('on_train_epoch_end')
383
386
 
384
387
  if RANK in (-1, 0):
@@ -32,9 +32,9 @@ def _log_tensorboard_graph(trainer):
32
32
  imgsz = trainer.args.imgsz
33
33
  imgsz = (imgsz, imgsz) if isinstance(imgsz, int) else imgsz
34
34
  p = next(trainer.model.parameters()) # for device, type
35
- im = torch.zeros((1, 3, *imgsz), device=p.device, dtype=p.dtype) # input (WARNING: must be zeros, not empty)
36
- with warnings.catch_warnings(category=UserWarning):
37
- warnings.simplefilter('ignore') # suppress jit trace warning
35
+ im = torch.zeros((1, 3, *imgsz), device=p.device, dtype=p.dtype) # input image (must be zeros, not empty)
36
+ with warnings.catch_warnings():
37
+ warnings.simplefilter('ignore', category=UserWarning) # suppress jit trace warning
38
38
  WRITER.add_graph(torch.jit.trace(de_parallel(trainer.model), im, strict=False), [])
39
39
  except Exception as e:
40
40
  LOGGER.warning(f'WARNING ⚠️ TensorBoard graph visualization failure {e}')
@@ -39,16 +39,17 @@ def is_url(url, check=True):
39
39
  return False
40
40
 
41
41
 
42
- def delete_dsstore(path):
42
+ def delete_dsstore(path, files_to_delete=('.DS_Store', '__MACOSX')):
43
43
  """
44
44
  Deletes all ".DS_store" files under a specified directory.
45
45
 
46
46
  Args:
47
47
  path (str, optional): The directory path where the ".DS_store" files should be deleted.
48
+ files_to_delete (tuple): The files to be deleted.
48
49
 
49
50
  Example:
50
51
  ```python
51
- from ultralytics.data.utils import delete_dsstore
52
+ from ultralytics.utils.downloads import delete_dsstore
52
53
 
53
54
  delete_dsstore('path/to/dir')
54
55
  ```
@@ -58,10 +59,11 @@ def delete_dsstore(path):
58
59
  are hidden system files and can cause issues when transferring files between different operating systems.
59
60
  """
60
61
  # Delete Apple .DS_store files
61
- files = list(Path(path).rglob('.DS_store'))
62
- LOGGER.info(f'Deleting *.DS_store files: {files}')
63
- for f in files:
64
- f.unlink()
62
+ for file in files_to_delete:
63
+ matches = list(Path(path).rglob(file))
64
+ LOGGER.info(f'Deleting {file} files: {matches}')
65
+ for f in matches:
66
+ f.unlink()
65
67
 
66
68
 
67
69
  def zip_directory(directory, compress=True, exclude=('.DS_Store', '__MACOSX'), progress=True):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.0.160
3
+ Version: 8.0.161
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
File without changes
File without changes
File without changes
File without changes
File without changes