ultralytics 8.2.97__tar.gz → 8.2.98__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 (238) hide show
  1. {ultralytics-8.2.97/ultralytics.egg-info → ultralytics-8.2.98}/PKG-INFO +1 -1
  2. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/exporter.py +2 -4
  4. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/hub/session.py +0 -10
  5. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/autobackend.py +3 -3
  6. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/__init__.py +58 -0
  7. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/benchmarks.py +1 -1
  8. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/plotting.py +3 -2
  9. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/torch_utils.py +12 -8
  10. {ultralytics-8.2.97 → ultralytics-8.2.98/ultralytics.egg-info}/PKG-INFO +1 -1
  11. {ultralytics-8.2.97 → ultralytics-8.2.98}/LICENSE +0 -0
  12. {ultralytics-8.2.97 → ultralytics-8.2.98}/README.md +0 -0
  13. {ultralytics-8.2.97 → ultralytics-8.2.98}/pyproject.toml +0 -0
  14. {ultralytics-8.2.97 → ultralytics-8.2.98}/setup.cfg +0 -0
  15. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/__init__.py +0 -0
  16. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/conftest.py +0 -0
  17. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_cli.py +0 -0
  18. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_cuda.py +0 -0
  19. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_engine.py +0 -0
  20. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_explorer.py +0 -0
  21. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_exports.py +0 -0
  22. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_integrations.py +0 -0
  23. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_python.py +0 -0
  24. {ultralytics-8.2.97 → ultralytics-8.2.98}/tests/test_solutions.py +0 -0
  25. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/assets/bus.jpg +0 -0
  26. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/assets/zidane.jpg +0 -0
  27. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/__init__.py +0 -0
  28. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  29. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  30. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  31. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  32. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  33. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  34. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  35. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  36. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  37. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  38. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  39. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  40. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  41. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco.yaml +0 -0
  42. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  43. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  44. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  45. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  46. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  47. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  48. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  49. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  50. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  51. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  52. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/signature.yaml +0 -0
  53. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  54. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/datasets/xView.yaml +0 -0
  55. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/default.yaml +0 -0
  56. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  57. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  58. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  59. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  60. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  61. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  62. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  63. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  64. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  65. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  66. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  67. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  68. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  69. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  70. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  71. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  72. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  73. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  74. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  75. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  76. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  77. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  78. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  79. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  80. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  81. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  82. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  83. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  84. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  85. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  86. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  87. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  88. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  89. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  90. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  91. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  92. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  93. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  94. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  95. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  96. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  97. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  98. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/__init__.py +0 -0
  99. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/annotator.py +0 -0
  100. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/augment.py +0 -0
  101. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/base.py +0 -0
  102. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/build.py +0 -0
  103. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/converter.py +0 -0
  104. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/dataset.py +0 -0
  105. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/explorer/__init__.py +0 -0
  106. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/explorer/explorer.py +0 -0
  107. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/explorer/gui/__init__.py +0 -0
  108. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/explorer/gui/dash.py +0 -0
  109. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/explorer/utils.py +0 -0
  110. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/loaders.py +0 -0
  111. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/split_dota.py +0 -0
  112. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/data/utils.py +0 -0
  113. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/__init__.py +0 -0
  114. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/model.py +0 -0
  115. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/predictor.py +0 -0
  116. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/results.py +0 -0
  117. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/trainer.py +0 -0
  118. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/tuner.py +0 -0
  119. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/engine/validator.py +0 -0
  120. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/hub/__init__.py +0 -0
  121. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/hub/auth.py +0 -0
  122. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/hub/google/__init__.py +0 -0
  123. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/hub/utils.py +0 -0
  124. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/__init__.py +0 -0
  125. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/fastsam/__init__.py +0 -0
  126. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/fastsam/model.py +0 -0
  127. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/fastsam/predict.py +0 -0
  128. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/fastsam/utils.py +0 -0
  129. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/fastsam/val.py +0 -0
  130. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/nas/__init__.py +0 -0
  131. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/nas/model.py +0 -0
  132. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/nas/predict.py +0 -0
  133. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/nas/val.py +0 -0
  134. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/rtdetr/__init__.py +0 -0
  135. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/rtdetr/model.py +0 -0
  136. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/rtdetr/predict.py +0 -0
  137. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/rtdetr/train.py +0 -0
  138. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/rtdetr/val.py +0 -0
  139. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/__init__.py +0 -0
  140. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/amg.py +0 -0
  141. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/build.py +0 -0
  142. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/model.py +0 -0
  143. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/__init__.py +0 -0
  144. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/blocks.py +0 -0
  145. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/decoders.py +0 -0
  146. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/encoders.py +0 -0
  147. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  148. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/sam.py +0 -0
  149. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  150. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/transformer.py +0 -0
  151. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/modules/utils.py +0 -0
  152. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/sam/predict.py +0 -0
  153. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/utils/__init__.py +0 -0
  154. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/utils/loss.py +0 -0
  155. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/utils/ops.py +0 -0
  156. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/__init__.py +0 -0
  157. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/classify/__init__.py +0 -0
  158. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/classify/predict.py +0 -0
  159. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/classify/train.py +0 -0
  160. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/classify/val.py +0 -0
  161. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/detect/__init__.py +0 -0
  162. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/detect/predict.py +0 -0
  163. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/detect/train.py +0 -0
  164. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/detect/val.py +0 -0
  165. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/model.py +0 -0
  166. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/obb/__init__.py +0 -0
  167. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/obb/predict.py +0 -0
  168. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/obb/train.py +0 -0
  169. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/obb/val.py +0 -0
  170. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/pose/__init__.py +0 -0
  171. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/pose/predict.py +0 -0
  172. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/pose/train.py +0 -0
  173. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/pose/val.py +0 -0
  174. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/segment/__init__.py +0 -0
  175. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/segment/predict.py +0 -0
  176. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/segment/train.py +0 -0
  177. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/segment/val.py +0 -0
  178. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/world/__init__.py +0 -0
  179. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/world/train.py +0 -0
  180. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/models/yolo/world/train_world.py +0 -0
  181. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/__init__.py +0 -0
  182. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/__init__.py +0 -0
  183. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/activation.py +0 -0
  184. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/block.py +0 -0
  185. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/conv.py +0 -0
  186. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/head.py +0 -0
  187. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/transformer.py +0 -0
  188. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/modules/utils.py +0 -0
  189. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/nn/tasks.py +0 -0
  190. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/__init__.py +0 -0
  191. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/ai_gym.py +0 -0
  192. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/analytics.py +0 -0
  193. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/distance_calculation.py +0 -0
  194. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/heatmap.py +0 -0
  195. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/object_counter.py +0 -0
  196. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/parking_management.py +0 -0
  197. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/queue_management.py +0 -0
  198. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/speed_estimation.py +0 -0
  199. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/solutions/streamlit_inference.py +0 -0
  200. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/__init__.py +0 -0
  201. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/basetrack.py +0 -0
  202. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/bot_sort.py +0 -0
  203. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/byte_tracker.py +0 -0
  204. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/track.py +0 -0
  205. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/utils/__init__.py +0 -0
  206. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/utils/gmc.py +0 -0
  207. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  208. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/trackers/utils/matching.py +0 -0
  209. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/autobatch.py +0 -0
  210. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/__init__.py +0 -0
  211. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/base.py +0 -0
  212. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/clearml.py +0 -0
  213. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/comet.py +0 -0
  214. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/dvc.py +0 -0
  215. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/hub.py +0 -0
  216. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/mlflow.py +0 -0
  217. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/neptune.py +0 -0
  218. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/raytune.py +0 -0
  219. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  220. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/callbacks/wb.py +0 -0
  221. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/checks.py +0 -0
  222. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/dist.py +0 -0
  223. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/downloads.py +0 -0
  224. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/errors.py +0 -0
  225. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/files.py +0 -0
  226. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/instance.py +0 -0
  227. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/loss.py +0 -0
  228. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/metrics.py +0 -0
  229. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/ops.py +0 -0
  230. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/patches.py +0 -0
  231. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/tal.py +0 -0
  232. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/triton.py +0 -0
  233. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics/utils/tuner.py +0 -0
  234. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics.egg-info/SOURCES.txt +0 -0
  235. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics.egg-info/dependency_links.txt +0 -0
  236. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics.egg-info/entry_points.txt +0 -0
  237. {ultralytics-8.2.97 → ultralytics-8.2.98}/ultralytics.egg-info/requires.txt +0 -0
  238. {ultralytics-8.2.97 → ultralytics-8.2.98}/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.2.97
3
+ Version: 8.2.98
4
4
  Summary: Ultralytics YOLO for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.97"
3
+ __version__ = "8.2.98"
4
4
 
5
5
 
6
6
  import os
@@ -95,9 +95,7 @@ from ultralytics.utils.torch_utils import TORCH_1_13, get_latest_opset, select_d
95
95
 
96
96
 
97
97
  def export_formats():
98
- """YOLOv8 export formats."""
99
- import pandas # scope for faster 'import ultralytics'
100
-
98
+ """Ultralytics YOLO export formats."""
101
99
  x = [
102
100
  ["PyTorch", "-", ".pt", True, True],
103
101
  ["TorchScript", "torchscript", ".torchscript", True, True],
@@ -113,7 +111,7 @@ def export_formats():
113
111
  ["PaddlePaddle", "paddle", "_paddle_model", True, True],
114
112
  ["NCNN", "ncnn", "_ncnn_model", True, True],
115
113
  ]
116
- return pandas.DataFrame(x, columns=["Format", "Argument", "Suffix", "CPU", "GPU"])
114
+ return dict(zip(["Format", "Argument", "Suffix", "CPU", "GPU"], zip(*x)))
117
115
 
118
116
 
119
117
  def gd_outputs(gd):
@@ -161,16 +161,6 @@ class HUBTrainingSession:
161
161
  HUBModelError: If the identifier format is not recognized.
162
162
  """
163
163
  api_key, model_id, filename = None, None, None
164
-
165
- # path = identifier.split(f"{HUB_WEB_ROOT}/models/")[-1]
166
- # parts = path.split("_")
167
- # if Path(path).suffix in {".pt", ".yaml"}:
168
- # filename = path
169
- # elif len(parts) == 2 and len(parts[0]) == 42 and len(parts[1]) == 20:
170
- # api_key, model_id = parts
171
- # elif len(path) == 20:
172
- # model_id = path
173
-
174
164
  if Path(identifier).suffix in {".pt", ".yaml"}:
175
165
  filename = identifier
176
166
  elif identifier.startswith(f"{HUB_WEB_ROOT}/models/"):
@@ -398,8 +398,8 @@ class AutoBackend(nn.Module):
398
398
  from ultralytics.engine.exporter import export_formats
399
399
 
400
400
  raise TypeError(
401
- f"model='{w}' is not a supported model format. "
402
- f"See https://docs.ultralytics.com/modes/predict for help.\n\n{export_formats()}"
401
+ f"model='{w}' is not a supported model format. Ultralytics supports: {export_formats()['Format']}\n"
402
+ f"See https://docs.ultralytics.com/modes/predict for help."
403
403
  )
404
404
 
405
405
  # Load external metadata YAML
@@ -653,7 +653,7 @@ class AutoBackend(nn.Module):
653
653
  """
654
654
  from ultralytics.engine.exporter import export_formats
655
655
 
656
- sf = list(export_formats().Suffix) # export suffixes
656
+ sf = export_formats()["Suffix"] # export suffixes
657
657
  if not is_url(p) and not isinstance(p, str):
658
658
  check_suffix(p, sf) # checks
659
659
  name = Path(p).name
@@ -3,6 +3,7 @@
3
3
  import contextlib
4
4
  import importlib.metadata
5
5
  import inspect
6
+ import json
6
7
  import logging.config
7
8
  import os
8
9
  import platform
@@ -14,6 +15,7 @@ import time
14
15
  import urllib
15
16
  import uuid
16
17
  from pathlib import Path
18
+ from threading import Lock
17
19
  from types import SimpleNamespace
18
20
  from typing import Union
19
21
 
@@ -1136,6 +1138,61 @@ class SettingsManager(dict):
1136
1138
  self.save()
1137
1139
 
1138
1140
 
1141
+ class PersistentCacheDict(dict):
1142
+ """A thread-safe dictionary that persists data to a JSON file for caching purposes."""
1143
+
1144
+ def __init__(self, file_path=USER_CONFIG_DIR / "persistent_cache.json"):
1145
+ """Initializes a thread-safe persistent cache dictionary with a specified file path for storage."""
1146
+ super().__init__()
1147
+ self.file_path = Path(file_path)
1148
+ self.lock = Lock()
1149
+ self._load()
1150
+
1151
+ def _load(self):
1152
+ """Load the persistent cache from a JSON file into the dictionary, handling errors gracefully."""
1153
+ try:
1154
+ if self.file_path.exists():
1155
+ with open(self.file_path) as f:
1156
+ self.update(json.load(f))
1157
+ except json.JSONDecodeError:
1158
+ print(f"Error decoding JSON from {self.file_path}. Starting with an empty cache.")
1159
+ except Exception as e:
1160
+ print(f"Error reading from {self.file_path}: {e}")
1161
+
1162
+ def _save(self):
1163
+ """Save the current state of the cache dictionary to a JSON file, ensuring thread safety."""
1164
+ try:
1165
+ self.file_path.parent.mkdir(parents=True, exist_ok=True)
1166
+ with open(self.file_path, "w") as f:
1167
+ json.dump(dict(self), f, indent=2)
1168
+ except Exception as e:
1169
+ print(f"Error writing to {self.file_path}: {e}")
1170
+
1171
+ def __setitem__(self, key, value):
1172
+ """Store a key-value pair in the cache and persist the updated cache to disk."""
1173
+ with self.lock:
1174
+ super().__setitem__(key, value)
1175
+ self._save()
1176
+
1177
+ def __delitem__(self, key):
1178
+ """Remove an item from the PersistentCacheDict and update the persistent storage."""
1179
+ with self.lock:
1180
+ super().__delitem__(key)
1181
+ self._save()
1182
+
1183
+ def update(self, *args, **kwargs):
1184
+ """Update the dictionary with key-value pairs from other mappings or iterables, ensuring thread safety."""
1185
+ with self.lock:
1186
+ super().update(*args, **kwargs)
1187
+ self._save()
1188
+
1189
+ def clear(self):
1190
+ """Clears all entries from the persistent cache dictionary, ensuring thread safety."""
1191
+ with self.lock:
1192
+ super().clear()
1193
+ self._save()
1194
+
1195
+
1139
1196
  def deprecation_warn(arg, new_arg):
1140
1197
  """Issue a deprecation warning when a deprecated argument is used, suggesting an updated argument."""
1141
1198
  LOGGER.warning(
@@ -1171,6 +1228,7 @@ def vscode_msg(ext="ultralytics.ultralytics-snippets") -> str:
1171
1228
  # Check first-install steps
1172
1229
  PREFIX = colorstr("Ultralytics: ")
1173
1230
  SETTINGS = SettingsManager() # initialize settings
1231
+ PERSISTENT_CACHE = PersistentCacheDict() # initialize persistent cache
1174
1232
  DATASETS_DIR = Path(SETTINGS["datasets_dir"]) # global datasets directory
1175
1233
  WEIGHTS_DIR = Path(SETTINGS["weights_dir"]) # global weights directory
1176
1234
  RUNS_DIR = Path(SETTINGS["runs_dir"]) # global runs directory
@@ -85,7 +85,7 @@ def benchmark(
85
85
 
86
86
  y = []
87
87
  t0 = time.time()
88
- for i, (name, format, suffix, cpu, gpu) in export_formats().iterrows(): # index, (name, format, suffix, CPU, GPU)
88
+ for i, (name, format, suffix, cpu, gpu) in enumerate(zip(*export_formats().values())):
89
89
  emoji, filename = "❌", None # export defaults
90
90
  try:
91
91
  # Checks
@@ -419,7 +419,7 @@ class Annotator:
419
419
  # Convert im back to PIL and update draw
420
420
  self.fromarray(self.im)
421
421
 
422
- def kpts(self, kpts, shape=(640, 640), radius=5, kpt_line=True, conf_thres=0.25, kpt_color=None):
422
+ def kpts(self, kpts, shape=(640, 640), radius=None, kpt_line=True, conf_thres=0.25, kpt_color=None):
423
423
  """
424
424
  Plot keypoints on the image.
425
425
 
@@ -436,6 +436,7 @@ class Annotator:
436
436
  - Modifies self.im in-place.
437
437
  - If self.pil is True, converts image to numpy array and back to PIL.
438
438
  """
439
+ radius = radius if radius is not None else self.lw
439
440
  if self.pil:
440
441
  # Convert to numpy first
441
442
  self.im = np.asarray(self.im).copy()
@@ -471,7 +472,7 @@ class Annotator:
471
472
  pos1,
472
473
  pos2,
473
474
  kpt_color or self.limb_color[i].tolist(),
474
- thickness=2,
475
+ thickness=int(np.ceil(self.lw / 2)),
475
476
  lineType=cv2.LINE_AA,
476
477
  )
477
478
  if self.pil:
@@ -110,13 +110,17 @@ def autocast(enabled: bool, device: str = "cuda"):
110
110
 
111
111
  def get_cpu_info():
112
112
  """Return a string with system CPU information, i.e. 'Apple M2'."""
113
- with contextlib.suppress(Exception):
114
- import cpuinfo # pip install py-cpuinfo
113
+ from ultralytics.utils import PERSISTENT_CACHE # avoid circular import error
115
114
 
116
- k = "brand_raw", "hardware_raw", "arch_string_raw" # keys sorted by preference (not all keys always available)
117
- info = cpuinfo.get_cpu_info() # info dict
118
- string = info.get(k[0] if k[0] in info else k[1] if k[1] in info else k[2], "unknown")
119
- return string.replace("(R)", "").replace("CPU ", "").replace("@ ", "")
115
+ if "cpu_info" not in PERSISTENT_CACHE:
116
+ with contextlib.suppress(Exception):
117
+ import cpuinfo # pip install py-cpuinfo
118
+
119
+ k = "brand_raw", "hardware_raw", "arch_string_raw" # keys sorted by preference
120
+ info = cpuinfo.get_cpu_info() # info dict
121
+ string = info.get(k[0] if k[0] in info else k[1] if k[1] in info else k[2], "unknown")
122
+ PERSISTENT_CACHE["cpu_info"] = string.replace("(R)", "").replace("CPU ", "").replace("@ ", "")
123
+ return PERSISTENT_CACHE.get("cpu_info", "unknown")
120
124
 
121
125
  return "unknown"
122
126
 
@@ -247,7 +251,7 @@ def fuse_conv_and_bn(conv, bn):
247
251
  )
248
252
 
249
253
  # Prepare filters
250
- w_conv = conv.weight.clone().view(conv.out_channels, -1)
254
+ w_conv = conv.weight.view(conv.out_channels, -1)
251
255
  w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var)))
252
256
  fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.shape))
253
257
 
@@ -278,7 +282,7 @@ def fuse_deconv_and_bn(deconv, bn):
278
282
  )
279
283
 
280
284
  # Prepare filters
281
- w_deconv = deconv.weight.clone().view(deconv.out_channels, -1)
285
+ w_deconv = deconv.weight.view(deconv.out_channels, -1)
282
286
  w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var)))
283
287
  fuseddconv.weight.copy_(torch.mm(w_bn, w_deconv).view(fuseddconv.weight.shape))
284
288
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.97
3
+ Version: 8.2.98
4
4
  Summary: Ultralytics YOLO for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
File without changes
File without changes
File without changes