ultralytics 8.3.124__tar.gz → 8.3.125__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.
Files changed (273) hide show
  1. {ultralytics-8.3.124/ultralytics.egg-info → ultralytics-8.3.125}/PKG-INFO +1 -1
  2. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_python.py +5 -8
  3. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/__init__.py +4 -5
  5. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/default.yaml +2 -2
  6. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/utils.py +7 -7
  7. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/exporter.py +7 -7
  8. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/model.py +3 -3
  9. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/trainer.py +2 -2
  10. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/tuner.py +3 -3
  11. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/session.py +1 -1
  12. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/model.py +3 -3
  13. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/autobackend.py +4 -4
  14. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/tasks.py +2 -2
  15. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/analytics.py +7 -6
  16. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/track.py +2 -2
  17. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/__init__.py +114 -56
  18. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/benchmarks.py +4 -8
  19. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/checks.py +2 -2
  20. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/metrics.py +6 -2
  21. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/plotting.py +11 -5
  22. {ultralytics-8.3.124 → ultralytics-8.3.125/ultralytics.egg-info}/PKG-INFO +1 -1
  23. {ultralytics-8.3.124 → ultralytics-8.3.125}/LICENSE +0 -0
  24. {ultralytics-8.3.124 → ultralytics-8.3.125}/README.md +0 -0
  25. {ultralytics-8.3.124 → ultralytics-8.3.125}/pyproject.toml +0 -0
  26. {ultralytics-8.3.124 → ultralytics-8.3.125}/setup.cfg +0 -0
  27. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/__init__.py +0 -0
  28. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/conftest.py +0 -0
  29. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_cli.py +0 -0
  30. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_cuda.py +0 -0
  31. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_engine.py +0 -0
  32. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_exports.py +0 -0
  33. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_integrations.py +0 -0
  34. {ultralytics-8.3.124 → ultralytics-8.3.125}/tests/test_solutions.py +0 -0
  35. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/assets/bus.jpg +0 -0
  36. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/assets/zidane.jpg +0 -0
  37. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  38. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  39. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  40. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  41. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  42. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  43. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  44. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  45. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  46. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  47. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  48. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  49. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  50. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco.yaml +0 -0
  51. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  52. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  53. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  54. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  55. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  56. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  57. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  58. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  59. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  60. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  61. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  62. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  63. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  64. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  65. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  66. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/signature.yaml +0 -0
  67. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  68. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/datasets/xView.yaml +0 -0
  69. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  70. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  71. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  72. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  73. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  74. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  75. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  76. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  77. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  78. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  79. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  80. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  81. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  82. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  83. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  84. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  85. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  86. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  87. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  88. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  89. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  90. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  91. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  92. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  93. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  94. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  95. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  96. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  97. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  98. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  99. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  100. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  101. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  102. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  103. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  104. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  105. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  106. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  107. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  108. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  109. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  110. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  111. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  112. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  113. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  114. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  115. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  116. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  117. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  118. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  119. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  120. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  121. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  122. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  123. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  124. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  125. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  126. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/__init__.py +0 -0
  127. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/annotator.py +0 -0
  128. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/augment.py +0 -0
  129. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/base.py +0 -0
  130. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/build.py +0 -0
  131. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/converter.py +0 -0
  132. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/dataset.py +0 -0
  133. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/loaders.py +0 -0
  134. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/download_weights.sh +0 -0
  135. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/get_coco.sh +0 -0
  136. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/get_coco128.sh +0 -0
  137. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  138. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/split.py +0 -0
  139. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/data/split_dota.py +0 -0
  140. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/__init__.py +0 -0
  141. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/predictor.py +0 -0
  142. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/results.py +0 -0
  143. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/engine/validator.py +0 -0
  144. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/__init__.py +0 -0
  145. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/auth.py +0 -0
  146. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/google/__init__.py +0 -0
  147. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/hub/utils.py +0 -0
  148. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/__init__.py +0 -0
  149. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/__init__.py +0 -0
  150. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/model.py +0 -0
  151. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/predict.py +0 -0
  152. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/utils.py +0 -0
  153. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/fastsam/val.py +0 -0
  154. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/__init__.py +0 -0
  155. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/model.py +0 -0
  156. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/predict.py +0 -0
  157. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/nas/val.py +0 -0
  158. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/__init__.py +0 -0
  159. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/model.py +0 -0
  160. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/predict.py +0 -0
  161. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/train.py +0 -0
  162. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/rtdetr/val.py +0 -0
  163. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/__init__.py +0 -0
  164. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/amg.py +0 -0
  165. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/build.py +0 -0
  166. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/model.py +0 -0
  167. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/__init__.py +0 -0
  168. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/blocks.py +0 -0
  169. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/decoders.py +0 -0
  170. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/encoders.py +0 -0
  171. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  172. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/sam.py +0 -0
  173. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  174. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/transformer.py +0 -0
  175. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/modules/utils.py +0 -0
  176. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/sam/predict.py +0 -0
  177. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/utils/__init__.py +0 -0
  178. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/utils/loss.py +0 -0
  179. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/utils/ops.py +0 -0
  180. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/__init__.py +0 -0
  181. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/__init__.py +0 -0
  182. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/predict.py +0 -0
  183. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/train.py +0 -0
  184. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/classify/val.py +0 -0
  185. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/__init__.py +0 -0
  186. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/predict.py +0 -0
  187. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/train.py +0 -0
  188. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/detect/val.py +0 -0
  189. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/__init__.py +0 -0
  190. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/predict.py +0 -0
  191. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/train.py +0 -0
  192. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/obb/val.py +0 -0
  193. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/__init__.py +0 -0
  194. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/predict.py +0 -0
  195. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/train.py +0 -0
  196. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/pose/val.py +0 -0
  197. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/__init__.py +0 -0
  198. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/predict.py +0 -0
  199. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/train.py +0 -0
  200. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/segment/val.py +0 -0
  201. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/world/__init__.py +0 -0
  202. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/world/train.py +0 -0
  203. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/world/train_world.py +0 -0
  204. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  205. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  206. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/train.py +0 -0
  207. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  208. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/models/yolo/yoloe/val.py +0 -0
  209. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/__init__.py +0 -0
  210. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/__init__.py +0 -0
  211. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/activation.py +0 -0
  212. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/block.py +0 -0
  213. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/conv.py +0 -0
  214. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/head.py +0 -0
  215. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/transformer.py +0 -0
  216. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/modules/utils.py +0 -0
  217. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/nn/text_model.py +0 -0
  218. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/__init__.py +0 -0
  219. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/ai_gym.py +0 -0
  220. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/config.py +0 -0
  221. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/distance_calculation.py +0 -0
  222. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/heatmap.py +0 -0
  223. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/instance_segmentation.py +0 -0
  224. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/object_blurrer.py +0 -0
  225. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/object_counter.py +0 -0
  226. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/object_cropper.py +0 -0
  227. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/parking_management.py +0 -0
  228. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/queue_management.py +0 -0
  229. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/region_counter.py +0 -0
  230. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/security_alarm.py +0 -0
  231. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/solutions.py +0 -0
  232. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/speed_estimation.py +0 -0
  233. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/streamlit_inference.py +0 -0
  234. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/trackzone.py +0 -0
  235. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/solutions/vision_eye.py +0 -0
  236. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/__init__.py +0 -0
  237. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/basetrack.py +0 -0
  238. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/bot_sort.py +0 -0
  239. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/byte_tracker.py +0 -0
  240. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/__init__.py +0 -0
  241. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/gmc.py +0 -0
  242. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  243. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/trackers/utils/matching.py +0 -0
  244. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/autobatch.py +0 -0
  245. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/__init__.py +0 -0
  246. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/base.py +0 -0
  247. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/clearml.py +0 -0
  248. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/comet.py +0 -0
  249. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/dvc.py +0 -0
  250. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/hub.py +0 -0
  251. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/mlflow.py +0 -0
  252. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/neptune.py +0 -0
  253. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/raytune.py +0 -0
  254. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  255. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/callbacks/wb.py +0 -0
  256. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/dist.py +0 -0
  257. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/downloads.py +0 -0
  258. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/errors.py +0 -0
  259. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/export.py +0 -0
  260. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/files.py +0 -0
  261. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/instance.py +0 -0
  262. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/loss.py +0 -0
  263. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/ops.py +0 -0
  264. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/patches.py +0 -0
  265. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/tal.py +0 -0
  266. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/torch_utils.py +0 -0
  267. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/triton.py +0 -0
  268. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics/utils/tuner.py +0 -0
  269. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/SOURCES.txt +0 -0
  270. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/dependency_links.txt +0 -0
  271. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/entry_points.txt +0 -0
  272. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/requires.txt +0 -0
  273. {ultralytics-8.3.124 → ultralytics-8.3.125}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.124
3
+ Version: 8.3.125
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -10,7 +10,6 @@ import cv2
10
10
  import numpy as np
11
11
  import pytest
12
12
  import torch
13
- import yaml
14
13
  from PIL import Image
15
14
 
16
15
  from tests import CFG, MODEL, SOURCE, SOURCES_LIST, TMP
@@ -28,6 +27,7 @@ from ultralytics.utils import (
28
27
  ROOT,
29
28
  WEIGHTS_DIR,
30
29
  WINDOWS,
30
+ YAML,
31
31
  checks,
32
32
  is_dir_writeable,
33
33
  is_github_action_running,
@@ -190,13 +190,10 @@ def test_track_stream():
190
190
 
191
191
  # Test Global Motion Compensation (GMC) methods
192
192
  for gmc in "orb", "sift", "ecc":
193
- with open(ROOT / "cfg/trackers/botsort.yaml", encoding="utf-8") as f:
194
- data = yaml.safe_load(f)
195
- tracker = TMP / f"botsort-{gmc}.yaml"
196
- data["gmc_method"] = gmc
197
- with open(tracker, "w", encoding="utf-8") as f:
198
- yaml.safe_dump(data, f)
199
- model.track(video_url, imgsz=160, tracker=tracker)
193
+ default_args = YAML.load(ROOT / "cfg/trackers/botsort.yaml")
194
+ custom_yaml = TMP / f"botsort-{gmc}.yaml"
195
+ YAML.save(custom_yaml, {**default_args, "gmc_method": gmc})
196
+ model.track(video_url, imgsz=160, tracker=custom_yaml)
200
197
 
201
198
 
202
199
  def test_val():
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.124"
3
+ __version__ = "8.3.125"
4
4
 
5
5
  import os
6
6
 
@@ -23,13 +23,12 @@ from ultralytics.utils import (
23
23
  SETTINGS,
24
24
  SETTINGS_FILE,
25
25
  TESTS_RUNNING,
26
+ YAML,
26
27
  IterableSimpleNamespace,
27
28
  checks,
28
29
  colorstr,
29
30
  deprecation_warn,
30
31
  vscode_msg,
31
- yaml_load,
32
- yaml_print,
33
32
  )
34
33
 
35
34
  # Define valid solutions
@@ -270,7 +269,7 @@ def cfg2dict(cfg: Union[str, Path, Dict, SimpleNamespace]) -> Dict:
270
269
  - If cfg is already a dictionary, it's returned unchanged.
271
270
  """
272
271
  if isinstance(cfg, (str, Path)):
273
- cfg = yaml_load(cfg) # load dict
272
+ cfg = YAML.load(cfg) # load dict
274
273
  elif isinstance(cfg, SimpleNamespace):
275
274
  cfg = vars(cfg) # convert to dict
276
275
  return cfg
@@ -853,7 +852,7 @@ def entrypoint(debug: str = "") -> None:
853
852
  "checks": checks.collect_system_info,
854
853
  "version": lambda: LOGGER.info(__version__),
855
854
  "settings": lambda: handle_yolo_settings(args[1:]),
856
- "cfg": lambda: yaml_print(DEFAULT_CFG_PATH),
855
+ "cfg": lambda: YAML.print(DEFAULT_CFG_PATH),
857
856
  "hub": lambda: handle_yolo_hub(args[1:]),
858
857
  "login": lambda: handle_yolo_hub(args),
859
858
  "logout": lambda: handle_yolo_hub(args),
@@ -880,7 +879,7 @@ def entrypoint(debug: str = "") -> None:
880
879
  k, v = parse_key_value_pair(a)
881
880
  if k == "cfg" and v is not None: # custom.yaml passed
882
881
  LOGGER.info(f"Overriding {DEFAULT_CFG_PATH} with {v}")
883
- overrides = {k: val for k, val in yaml_load(checks.check_yaml(v)).items() if k != "cfg"}
882
+ overrides = {k: val for k, val in YAML.load(checks.check_yaml(v)).items() if k != "cfg"}
884
883
  else:
885
884
  overrides[k] = v
886
885
  except (NameError, SyntaxError, ValueError, AssertionError) as e:
@@ -35,7 +35,7 @@ resume: False # (bool) resume training from last checkpoint
35
35
  amp: True # (bool) Automatic Mixed Precision (AMP) training, choices=[True, False], True runs AMP check
36
36
  fraction: 1.0 # (float) dataset fraction to train on (default is 1.0, all images in train set)
37
37
  profile: False # (bool) profile ONNX and TensorRT speeds during training for loggers
38
- freeze: None # (int | list, optional) freeze first n layers, or freeze list of layer indices during training
38
+ freeze: # (int | list, optional) freeze first n layers, or freeze list of layer indices during training
39
39
  multi_scale: False # (bool) Whether to use multiscale during training
40
40
  # Segmentation
41
41
  overlap_mask: True # (bool) merge object masks into a single image mask during training (segment train only)
@@ -84,7 +84,7 @@ int8: False # (bool) CoreML/TF INT8 quantization
84
84
  dynamic: False # (bool) ONNX/TF/TensorRT: dynamic axes
85
85
  simplify: True # (bool) ONNX: simplify model using `onnxslim`
86
86
  opset: # (int, optional) ONNX: opset version
87
- workspace: None # (float, optional) TensorRT: workspace size (GiB), `None` will let TensorRT auto-allocate memory
87
+ workspace: # (float, optional) TensorRT: workspace size (GiB), `None` will let TensorRT auto-allocate memory
88
88
  nms: False # (bool) CoreML: add NMS
89
89
 
90
90
  # Hyperparameters ------------------------------------------------------------------------------------------------------
@@ -18,16 +18,16 @@ from ultralytics.nn.autobackend import check_class_names
18
18
  from ultralytics.utils import (
19
19
  DATASETS_DIR,
20
20
  LOGGER,
21
+ MACOS,
21
22
  NUM_THREADS,
22
23
  ROOT,
23
24
  SETTINGS_FILE,
24
25
  TQDM,
26
+ YAML,
25
27
  clean_url,
26
28
  colorstr,
27
29
  emojis,
28
30
  is_dir_writeable,
29
- yaml_load,
30
- yaml_save,
31
31
  )
32
32
  from ultralytics.utils.checks import check_file, check_font, is_ascii
33
33
  from ultralytics.utils.downloads import download, safe_download, unzip_file
@@ -36,7 +36,7 @@ from ultralytics.utils.ops import segments2boxes
36
36
  HELP_URL = "See https://docs.ultralytics.com/datasets for dataset formatting guidance."
37
37
  IMG_FORMATS = {"bmp", "dng", "jpeg", "jpg", "mpo", "png", "tif", "tiff", "webp", "pfm", "heic"} # image suffixes
38
38
  VID_FORMATS = {"asf", "avi", "gif", "m4v", "mkv", "mov", "mp4", "mpeg", "mpg", "ts", "wmv", "webm"} # video suffixes
39
- PIN_MEMORY = str(os.getenv("PIN_MEMORY", True)).lower() == "true" # global pin_memory for dataloaders
39
+ PIN_MEMORY = str(os.getenv("PIN_MEMORY", not MACOS)).lower() == "true" # global pin_memory for dataloaders
40
40
  FORMATS_HELP_MSG = f"Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}"
41
41
 
42
42
 
@@ -399,7 +399,7 @@ def check_det_dataset(dataset, autodownload=True):
399
399
  extract_dir, autodownload = file.parent, False
400
400
 
401
401
  # Read YAML
402
- data = yaml_load(file, append_filename=True) # dictionary
402
+ data = YAML.load(file, append_filename=True) # dictionary
403
403
 
404
404
  # Checks
405
405
  for k in "train", "val":
@@ -492,7 +492,7 @@ def check_cls_dataset(dataset, split=""):
492
492
  # Download (optional if dataset=https://file.zip is passed directly)
493
493
  if str(dataset).startswith(("http:/", "https:/")):
494
494
  dataset = safe_download(dataset, dir=DATASETS_DIR, unzip=True, delete=False)
495
- elif Path(dataset).suffix in {".zip", ".tar", ".gz"}:
495
+ elif str(dataset).endswith((".zip", ".tar", ".gz")):
496
496
  file = check_file(dataset)
497
497
  dataset = safe_download(file, dir=DATASETS_DIR, unzip=True, delete=False)
498
498
 
@@ -599,9 +599,9 @@ class HUBDatasetStats:
599
599
  _, data_dir, yaml_path = self._unzip(Path(path))
600
600
  try:
601
601
  # Load YAML with checks
602
- data = yaml_load(yaml_path)
602
+ data = YAML.load(yaml_path)
603
603
  data["path"] = "" # strip path since YAML should be in dataset root for all HUB datasets
604
- yaml_save(yaml_path, data)
604
+ YAML.save(yaml_path, data)
605
605
  data = check_det_dataset(yaml_path, autodownload) # dict
606
606
  data["path"] = data_dir # YAML path should be set to '' (relative) or parent (absolute)
607
607
  except Exception as e:
@@ -89,10 +89,10 @@ from ultralytics.utils import (
89
89
  RKNN_CHIPS,
90
90
  ROOT,
91
91
  WINDOWS,
92
+ YAML,
92
93
  callbacks,
93
94
  colorstr,
94
95
  get_default_args,
95
- yaml_save,
96
96
  )
97
97
  from ultralytics.utils.checks import (
98
98
  check_imgsz,
@@ -631,7 +631,7 @@ class Exporter:
631
631
  ov_model.set_rt_info("fit_to_window_letterbox", ["model_info", "resize_type"])
632
632
 
633
633
  ov.save_model(ov_model, file, compress_to_fp16=self.args.half)
634
- yaml_save(Path(file).parent / "metadata.yaml", self.metadata) # add metadata.yaml
634
+ YAML.save(Path(file).parent / "metadata.yaml", self.metadata) # add metadata.yaml
635
635
 
636
636
  if self.args.int8:
637
637
  fq = str(self.file).replace(self.file.suffix, f"_int8_openvino_model{os.sep}")
@@ -690,7 +690,7 @@ class Exporter:
690
690
  f = str(self.file).replace(self.file.suffix, f"_paddle_model{os.sep}")
691
691
 
692
692
  pytorch2paddle(module=self.model, save_dir=f, jit_type="trace", input_examples=[self.im]) # export
693
- yaml_save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
693
+ YAML.save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
694
694
  return f, None
695
695
 
696
696
  @try_export
@@ -783,7 +783,7 @@ class Exporter:
783
783
  for f_debug in ("debug.bin", "debug.param", "debug2.bin", "debug2.param", *pnnx_files):
784
784
  Path(f_debug).unlink(missing_ok=True)
785
785
 
786
- yaml_save(f / "metadata.yaml", self.metadata) # add metadata.yaml
786
+ YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
787
787
  return str(f), None
788
788
 
789
789
  @try_export
@@ -974,7 +974,7 @@ class Exporter:
974
974
  output_signaturedefs=True, # fix error with Attention block group convolution
975
975
  optimization_for_gpu_delegate=True,
976
976
  )
977
- yaml_save(f / "metadata.yaml", self.metadata) # add metadata.yaml
977
+ YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
978
978
 
979
979
  # Remove/rename TFLite models
980
980
  if self.args.int8:
@@ -1087,7 +1087,7 @@ class Exporter:
1087
1087
  LOGGER.warning(f"{prefix} your model may not work correctly with spaces in path '{f}'.")
1088
1088
 
1089
1089
  # Add metadata
1090
- yaml_save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
1090
+ YAML.save(Path(f) / "metadata.yaml", self.metadata) # add metadata.yaml
1091
1091
  return f, None
1092
1092
 
1093
1093
  @try_export
@@ -1114,7 +1114,7 @@ class Exporter:
1114
1114
  rknn.build(do_quantization=self.args.int8)
1115
1115
  f = f.replace(".onnx", f"-{self.args.name}-int8.rknn" if self.args.int8 else f"-{self.args.name}-fp16.rknn")
1116
1116
  rknn.export_rknn(f"{export_path / f}")
1117
- yaml_save(export_path / "metadata.yaml", self.metadata)
1117
+ YAML.save(export_path / "metadata.yaml", self.metadata)
1118
1118
  return export_path, None
1119
1119
 
1120
1120
  @try_export
@@ -18,9 +18,9 @@ from ultralytics.utils import (
18
18
  LOGGER,
19
19
  RANK,
20
20
  SETTINGS,
21
+ YAML,
21
22
  callbacks,
22
23
  checks,
23
- yaml_load,
24
24
  )
25
25
 
26
26
 
@@ -142,7 +142,7 @@ class Model(torch.nn.Module):
142
142
 
143
143
  # Load or create new YOLO model
144
144
  __import__("os").environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8" # to avoid deterministic warnings
145
- if Path(model).suffix in {".yaml", ".yml"}:
145
+ if str(model).endswith((".yaml", ".yml")):
146
146
  self._new(model, task=task, verbose=verbose)
147
147
  else:
148
148
  self._load(model, task=task)
@@ -773,7 +773,7 @@ class Model(torch.nn.Module):
773
773
 
774
774
  checks.check_pip_update_available()
775
775
 
776
- overrides = yaml_load(checks.check_yaml(kwargs["cfg"])) if kwargs.get("cfg") else self.overrides
776
+ overrides = YAML.load(checks.check_yaml(kwargs["cfg"])) if kwargs.get("cfg") else self.overrides
777
777
  custom = {
778
778
  # NOTE: handle the case when 'cfg' includes 'data'.
779
779
  "data": overrides.get("data") or DEFAULT_CFG_DICT["data"] or TASK2DATA[self.task],
@@ -31,11 +31,11 @@ from ultralytics.utils import (
31
31
  LOGGER,
32
32
  RANK,
33
33
  TQDM,
34
+ YAML,
34
35
  callbacks,
35
36
  clean_url,
36
37
  colorstr,
37
38
  emojis,
38
- yaml_save,
39
39
  )
40
40
  from ultralytics.utils.autobatch import check_train_batch_size
41
41
  from ultralytics.utils.checks import check_amp, check_file, check_imgsz, check_model_file_from_stem, print_args
@@ -117,7 +117,7 @@ class BaseTrainer:
117
117
  if RANK in {-1, 0}:
118
118
  self.wdir.mkdir(parents=True, exist_ok=True) # make dir
119
119
  self.args.save_dir = str(self.save_dir)
120
- yaml_save(self.save_dir / "args.yaml", vars(self.args)) # save run args
120
+ YAML.save(self.save_dir / "args.yaml", vars(self.args)) # save run args
121
121
  self.last, self.best = self.wdir / "last.pt", self.wdir / "best.pt" # checkpoint paths
122
122
  self.save_period = self.args.save_period
123
123
 
@@ -23,7 +23,7 @@ import numpy as np
23
23
  import torch
24
24
 
25
25
  from ultralytics.cfg import get_cfg, get_save_dir
26
- from ultralytics.utils import DEFAULT_CFG, LOGGER, callbacks, colorstr, remove_colorstr, yaml_print, yaml_save
26
+ from ultralytics.utils import DEFAULT_CFG, LOGGER, YAML, callbacks, colorstr, remove_colorstr
27
27
  from ultralytics.utils.plotting import plot_tune_results
28
28
 
29
29
 
@@ -235,9 +235,9 @@ class Tuner:
235
235
  )
236
236
  LOGGER.info("\n" + header)
237
237
  data = {k: float(x[best_idx, i + 1]) for i, k in enumerate(self.space.keys())}
238
- yaml_save(
238
+ YAML.save(
239
239
  self.tune_dir / "best_hyperparameters.yaml",
240
240
  data=data,
241
241
  header=remove_colorstr(header.replace(self.prefix, "# ")) + "\n",
242
242
  )
243
- yaml_print(self.tune_dir / "best_hyperparameters.yaml")
243
+ YAML.print(self.tune_dir / "best_hyperparameters.yaml")
@@ -201,7 +201,7 @@ class HUBTrainingSession:
201
201
  HUBModelError: If the identifier format is not recognized.
202
202
  """
203
203
  api_key, model_id, filename = None, None, None
204
- if Path(identifier).suffix in {".pt", ".yaml"}:
204
+ if str(identifier).endswith((".pt", ".yaml")):
205
205
  filename = identifier
206
206
  elif identifier.startswith(f"{HUB_WEB_ROOT}/models/"):
207
207
  parsed_url = urlparse(identifier)
@@ -15,7 +15,7 @@ from ultralytics.nn.tasks import (
15
15
  YOLOEModel,
16
16
  YOLOESegModel,
17
17
  )
18
- from ultralytics.utils import ROOT, yaml_load
18
+ from ultralytics.utils import ROOT, YAML
19
19
 
20
20
 
21
21
  class YOLO(Model):
@@ -107,7 +107,7 @@ class YOLOWorld(Model):
107
107
 
108
108
  # Assign default COCO class names when there are no custom names
109
109
  if not hasattr(self.model, "names"):
110
- self.model.names = yaml_load(ROOT / "cfg/datasets/coco8.yaml").get("names")
110
+ self.model.names = YAML.load(ROOT / "cfg/datasets/coco8.yaml").get("names")
111
111
 
112
112
  @property
113
113
  def task_map(self):
@@ -156,7 +156,7 @@ class YOLOE(Model):
156
156
 
157
157
  # Assign default COCO class names when there are no custom names
158
158
  if not hasattr(self.model, "names"):
159
- self.model.names = yaml_load(ROOT / "cfg/datasets/coco8.yaml").get("names")
159
+ self.model.names = YAML.load(ROOT / "cfg/datasets/coco8.yaml").get("names")
160
160
 
161
161
  @property
162
162
  def task_map(self):
@@ -14,7 +14,7 @@ import torch
14
14
  import torch.nn as nn
15
15
  from PIL import Image
16
16
 
17
- from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, yaml_load
17
+ from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML
18
18
  from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
19
19
  from ultralytics.utils.downloads import attempt_download_asset, is_url
20
20
 
@@ -33,7 +33,7 @@ def check_class_names(names):
33
33
  f"{min(names.keys())}-{max(names.keys())} defined in your dataset YAML."
34
34
  )
35
35
  if isinstance(names[0], str) and names[0].startswith("n0"): # imagenet class codes, i.e. 'n01440764'
36
- names_map = yaml_load(ROOT / "cfg/datasets/ImageNet.yaml")["map"] # human-readable names
36
+ names_map = YAML.load(ROOT / "cfg/datasets/ImageNet.yaml")["map"] # human-readable names
37
37
  names = {k: names_map[v] for k, v in names.items()}
38
38
  return names
39
39
 
@@ -42,7 +42,7 @@ def default_class_names(data=None):
42
42
  """Applies default class names to an input YAML file or returns numerical class names."""
43
43
  if data:
44
44
  try:
45
- return yaml_load(check_yaml(data))["names"]
45
+ return YAML.load(check_yaml(data))["names"]
46
46
  except Exception:
47
47
  pass
48
48
  return {i: f"class{i}" for i in range(999)} # return default if above errors
@@ -536,7 +536,7 @@ class AutoBackend(nn.Module):
536
536
 
537
537
  # Load external metadata YAML
538
538
  if isinstance(metadata, (str, Path)) and Path(metadata).exists():
539
- metadata = yaml_load(metadata)
539
+ metadata = YAML.load(metadata)
540
540
  if metadata and isinstance(metadata, dict):
541
541
  for k, v in metadata.items():
542
542
  if k in {"stride", "batch", "channels"}:
@@ -69,7 +69,7 @@ from ultralytics.nn.modules import (
69
69
  YOLOESegment,
70
70
  v10Detect,
71
71
  )
72
- from ultralytics.utils import DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, colorstr, emojis, yaml_load
72
+ from ultralytics.utils import DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS, LOGGER, YAML, colorstr, emojis
73
73
  from ultralytics.utils.checks import check_requirements, check_suffix, check_yaml
74
74
  from ultralytics.utils.loss import (
75
75
  E2EDetectLoss,
@@ -1523,7 +1523,7 @@ def yaml_model_load(path):
1523
1523
 
1524
1524
  unified_path = re.sub(r"(\d+)([nslmx])(.+)?$", r"\1\3", str(path)) # i.e. yolov8x.yaml -> yolov8.yaml
1525
1525
  yaml_file = check_yaml(unified_path, hard=False) or check_yaml(path)
1526
- d = yaml_load(yaml_file) # model dict
1526
+ d = YAML.load(yaml_file) # model dict
1527
1527
  d["scale"] = guess_model_scale(path)
1528
1528
  d["yaml_file"] = str(path)
1529
1529
  return d
@@ -3,10 +3,7 @@
3
3
  from itertools import cycle
4
4
 
5
5
  import cv2
6
- import matplotlib.pyplot as plt
7
6
  import numpy as np
8
- from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
9
- from matplotlib.figure import Figure
10
7
 
11
8
  from ultralytics.solutions.solutions import BaseSolution, SolutionResults # Import a parent class
12
9
 
@@ -32,7 +29,7 @@ class Analytics(BaseSolution):
32
29
  clswise_count (Dict[str, int]): Dictionary for class-wise object counts.
33
30
  fig (Figure): Matplotlib figure object for the chart.
34
31
  ax (Axes): Matplotlib axes object for the chart.
35
- canvas (FigureCanvas): Canvas for rendering the chart.
32
+ canvas (FigureCanvasAgg): Canvas for rendering the chart.
36
33
  lines (dict): Dictionary to store line objects for area charts.
37
34
  color_mapping (Dict[str, str]): Dictionary mapping class labels to colors for consistent visualization.
38
35
 
@@ -51,6 +48,10 @@ class Analytics(BaseSolution):
51
48
  """Initialize Analytics class with various chart types for visual data representation."""
52
49
  super().__init__(**kwargs)
53
50
 
51
+ import matplotlib.pyplot as plt # scope for faster 'import ultralytics'
52
+ from matplotlib.backends.backend_agg import FigureCanvasAgg
53
+ from matplotlib.figure import Figure
54
+
54
55
  self.type = self.CFG["analytics_type"] # type of analytics i.e "line", "pie", "bar" or "area" charts.
55
56
  self.x_label = "Classes" if self.type in {"bar", "pie"} else "Frame#"
56
57
  self.y_label = "Total Counts"
@@ -71,14 +72,14 @@ class Analytics(BaseSolution):
71
72
  if self.type in {"line", "area"}:
72
73
  self.lines = {}
73
74
  self.fig = Figure(facecolor=self.bg_color, figsize=figsize)
74
- self.canvas = FigureCanvas(self.fig) # Set common axis properties
75
+ self.canvas = FigureCanvasAgg(self.fig) # Set common axis properties
75
76
  self.ax = self.fig.add_subplot(111, facecolor=self.bg_color)
76
77
  if self.type == "line":
77
78
  (self.line,) = self.ax.plot([], [], color="cyan", linewidth=self.line_width)
78
79
  elif self.type in {"bar", "pie"}:
79
80
  # Initialize bar or pie plot
80
81
  self.fig, self.ax = plt.subplots(figsize=figsize, facecolor=self.bg_color)
81
- self.canvas = FigureCanvas(self.fig) # Set common axis properties
82
+ self.canvas = FigureCanvasAgg(self.fig) # Set common axis properties
82
83
  self.ax.set_facecolor(self.bg_color)
83
84
  self.color_mapping = {}
84
85
 
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
 
6
6
  import torch
7
7
 
8
- from ultralytics.utils import IterableSimpleNamespace, yaml_load
8
+ from ultralytics.utils import YAML, IterableSimpleNamespace
9
9
  from ultralytics.utils.checks import check_yaml
10
10
 
11
11
  from .bot_sort import BOTSORT
@@ -39,7 +39,7 @@ def on_predict_start(predictor: object, persist: bool = False) -> None:
39
39
  return
40
40
 
41
41
  tracker = check_yaml(predictor.args.tracker)
42
- cfg = IterableSimpleNamespace(**yaml_load(tracker))
42
+ cfg = IterableSimpleNamespace(**YAML.load(tracker))
43
43
 
44
44
  if cfg.tracker_type not in {"bytetrack", "botsort"}:
45
45
  raise AssertionError(f"Only 'bytetrack' and 'botsort' are supported for now, but got '{cfg.tracker_type}'")