ultralytics 8.3.210__tar.gz → 8.3.212__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 (288) hide show
  1. {ultralytics-8.3.210 → ultralytics-8.3.212}/PKG-INFO +1 -1
  2. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_integrations.py +4 -7
  3. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_python.py +7 -11
  4. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/__init__.py +1 -1
  5. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/converter.py +2 -4
  6. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/utils.py +2 -2
  7. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/trainer.py +8 -8
  8. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/benchmarks.py +2 -2
  9. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/checks.py +2 -1
  10. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/downloads.py +6 -8
  11. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics.egg-info/PKG-INFO +1 -1
  12. {ultralytics-8.3.210 → ultralytics-8.3.212}/LICENSE +0 -0
  13. {ultralytics-8.3.210 → ultralytics-8.3.212}/README.md +0 -0
  14. {ultralytics-8.3.210 → ultralytics-8.3.212}/pyproject.toml +0 -0
  15. {ultralytics-8.3.210 → ultralytics-8.3.212}/setup.cfg +0 -0
  16. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/__init__.py +0 -0
  17. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/conftest.py +0 -0
  18. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_cli.py +0 -0
  19. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_cuda.py +0 -0
  20. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_engine.py +0 -0
  21. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_exports.py +0 -0
  22. {ultralytics-8.3.210 → ultralytics-8.3.212}/tests/test_solutions.py +0 -0
  23. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/assets/bus.jpg +0 -0
  24. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/assets/zidane.jpg +0 -0
  25. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/__init__.py +0 -0
  26. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  27. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  28. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  29. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  30. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  31. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  32. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  33. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  34. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  35. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  36. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  37. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  38. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  39. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  40. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco.yaml +0 -0
  41. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  42. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  43. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  44. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  45. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  46. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  47. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  48. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  49. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  50. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  51. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  52. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  53. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  54. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  55. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  56. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  57. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  58. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/signature.yaml +0 -0
  59. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  60. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/datasets/xView.yaml +0 -0
  61. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/default.yaml +0 -0
  62. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  63. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  64. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  65. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  66. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  67. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  68. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  69. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  70. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  71. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  72. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  73. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  74. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  75. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  76. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  77. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  78. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  79. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  80. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  81. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  82. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  83. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  84. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  85. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  86. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  87. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  88. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  89. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  90. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  91. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  92. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  93. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  94. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  95. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  96. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  97. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  98. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  99. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  100. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  101. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  102. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  103. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  104. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  105. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  106. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  107. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  108. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  109. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  110. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  111. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  112. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  113. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  114. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  115. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  116. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  117. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  118. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  119. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/__init__.py +0 -0
  120. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/annotator.py +0 -0
  121. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/augment.py +0 -0
  122. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/base.py +0 -0
  123. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/build.py +0 -0
  124. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/dataset.py +0 -0
  125. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/loaders.py +0 -0
  126. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/scripts/download_weights.sh +0 -0
  127. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/scripts/get_coco.sh +0 -0
  128. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/scripts/get_coco128.sh +0 -0
  129. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  130. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/split.py +0 -0
  131. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/data/split_dota.py +0 -0
  132. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/__init__.py +0 -0
  133. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/exporter.py +0 -0
  134. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/model.py +0 -0
  135. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/predictor.py +0 -0
  136. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/results.py +0 -0
  137. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/tuner.py +0 -0
  138. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/engine/validator.py +0 -0
  139. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/hub/__init__.py +0 -0
  140. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/hub/auth.py +0 -0
  141. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/hub/google/__init__.py +0 -0
  142. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/hub/session.py +0 -0
  143. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/hub/utils.py +0 -0
  144. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/__init__.py +0 -0
  145. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/fastsam/__init__.py +0 -0
  146. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/fastsam/model.py +0 -0
  147. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/fastsam/predict.py +0 -0
  148. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/fastsam/utils.py +0 -0
  149. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/fastsam/val.py +0 -0
  150. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/nas/__init__.py +0 -0
  151. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/nas/model.py +0 -0
  152. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/nas/predict.py +0 -0
  153. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/nas/val.py +0 -0
  154. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/rtdetr/__init__.py +0 -0
  155. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/rtdetr/model.py +0 -0
  156. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/rtdetr/predict.py +0 -0
  157. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/rtdetr/train.py +0 -0
  158. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/rtdetr/val.py +0 -0
  159. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/__init__.py +0 -0
  160. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/amg.py +0 -0
  161. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/build.py +0 -0
  162. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/model.py +0 -0
  163. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/__init__.py +0 -0
  164. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/blocks.py +0 -0
  165. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/decoders.py +0 -0
  166. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/encoders.py +0 -0
  167. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  168. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/sam.py +0 -0
  169. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  170. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/transformer.py +0 -0
  171. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/modules/utils.py +0 -0
  172. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/sam/predict.py +0 -0
  173. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/utils/__init__.py +0 -0
  174. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/utils/loss.py +0 -0
  175. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/utils/ops.py +0 -0
  176. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/__init__.py +0 -0
  177. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/classify/__init__.py +0 -0
  178. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/classify/predict.py +0 -0
  179. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/classify/train.py +0 -0
  180. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/classify/val.py +0 -0
  181. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/detect/__init__.py +0 -0
  182. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/detect/predict.py +0 -0
  183. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/detect/train.py +0 -0
  184. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/detect/val.py +0 -0
  185. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/model.py +0 -0
  186. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/obb/__init__.py +0 -0
  187. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/obb/predict.py +0 -0
  188. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/obb/train.py +0 -0
  189. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/obb/val.py +0 -0
  190. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/pose/__init__.py +0 -0
  191. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/pose/predict.py +0 -0
  192. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/pose/train.py +0 -0
  193. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/pose/val.py +0 -0
  194. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/segment/__init__.py +0 -0
  195. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/segment/predict.py +0 -0
  196. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/segment/train.py +0 -0
  197. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/segment/val.py +0 -0
  198. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/world/__init__.py +0 -0
  199. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/world/train.py +0 -0
  200. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/world/train_world.py +0 -0
  201. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  202. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  203. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/yoloe/train.py +0 -0
  204. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  205. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/models/yolo/yoloe/val.py +0 -0
  206. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/__init__.py +0 -0
  207. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/autobackend.py +0 -0
  208. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/__init__.py +0 -0
  209. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/activation.py +0 -0
  210. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/block.py +0 -0
  211. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/conv.py +0 -0
  212. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/head.py +0 -0
  213. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/transformer.py +0 -0
  214. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/modules/utils.py +0 -0
  215. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/tasks.py +0 -0
  216. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/nn/text_model.py +0 -0
  217. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/py.typed +0 -0
  218. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/__init__.py +0 -0
  219. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/ai_gym.py +0 -0
  220. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/analytics.py +0 -0
  221. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/config.py +0 -0
  222. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/distance_calculation.py +0 -0
  223. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/heatmap.py +0 -0
  224. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/instance_segmentation.py +0 -0
  225. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/object_blurrer.py +0 -0
  226. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/object_counter.py +0 -0
  227. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/object_cropper.py +0 -0
  228. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/parking_management.py +0 -0
  229. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/queue_management.py +0 -0
  230. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/region_counter.py +0 -0
  231. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/security_alarm.py +0 -0
  232. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/similarity_search.py +0 -0
  233. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/solutions.py +0 -0
  234. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/speed_estimation.py +0 -0
  235. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/streamlit_inference.py +0 -0
  236. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/templates/similarity-search.html +0 -0
  237. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/trackzone.py +0 -0
  238. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/solutions/vision_eye.py +0 -0
  239. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/__init__.py +0 -0
  240. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/basetrack.py +0 -0
  241. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/bot_sort.py +0 -0
  242. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/byte_tracker.py +0 -0
  243. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/track.py +0 -0
  244. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/utils/__init__.py +0 -0
  245. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/utils/gmc.py +0 -0
  246. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  247. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/trackers/utils/matching.py +0 -0
  248. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/__init__.py +0 -0
  249. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/autobatch.py +0 -0
  250. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/autodevice.py +0 -0
  251. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/__init__.py +0 -0
  252. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/base.py +0 -0
  253. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/clearml.py +0 -0
  254. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/comet.py +0 -0
  255. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/dvc.py +0 -0
  256. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/hub.py +0 -0
  257. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/mlflow.py +0 -0
  258. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/neptune.py +0 -0
  259. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/platform.py +0 -0
  260. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/raytune.py +0 -0
  261. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  262. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/callbacks/wb.py +0 -0
  263. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/cpu.py +0 -0
  264. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/dist.py +0 -0
  265. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/errors.py +0 -0
  266. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/events.py +0 -0
  267. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/export/__init__.py +0 -0
  268. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/export/imx.py +0 -0
  269. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/files.py +0 -0
  270. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/git.py +0 -0
  271. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/instance.py +0 -0
  272. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/logger.py +0 -0
  273. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/loss.py +0 -0
  274. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/metrics.py +0 -0
  275. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/nms.py +0 -0
  276. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/ops.py +0 -0
  277. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/patches.py +0 -0
  278. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/plotting.py +0 -0
  279. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/tal.py +0 -0
  280. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/torch_utils.py +0 -0
  281. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/tqdm.py +0 -0
  282. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/triton.py +0 -0
  283. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics/utils/tuner.py +0 -0
  284. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics.egg-info/SOURCES.txt +0 -0
  285. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics.egg-info/dependency_links.txt +0 -0
  286. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics.egg-info/entry_points.txt +0 -0
  287. {ultralytics-8.3.210 → ultralytics-8.3.212}/ultralytics.egg-info/requires.txt +0 -0
  288. {ultralytics-8.3.210 → ultralytics-8.3.212}/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.210
3
+ Version: 8.3.212
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,7 @@ import pytest
10
10
 
11
11
  from tests import MODEL, SOURCE, TMP
12
12
  from ultralytics import YOLO, download
13
- from ultralytics.utils import DATASETS_DIR, SETTINGS
13
+ from ultralytics.utils import ASSETS_URL, DATASETS_DIR, SETTINGS
14
14
  from ultralytics.utils.checks import check_requirements
15
15
 
16
16
 
@@ -129,26 +129,23 @@ def test_faster_coco_eval():
129
129
  from ultralytics.models.yolo.pose import PoseValidator
130
130
  from ultralytics.models.yolo.segment import SegmentationValidator
131
131
 
132
- # Download annotations after each dataset downloads first
133
- url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
134
-
135
132
  args = {"model": "yolo11n.pt", "data": "coco8.yaml", "save_json": True, "imgsz": 64}
136
133
  validator = DetectionValidator(args=args)
137
134
  validator()
138
135
  validator.is_coco = True
139
- download(f"{url}instances_val2017.json", dir=DATASETS_DIR / "coco8/annotations")
136
+ download(f"{ASSETS_URL}/instances_val2017.json", dir=DATASETS_DIR / "coco8/annotations")
140
137
  _ = validator.eval_json(validator.stats)
141
138
 
142
139
  args = {"model": "yolo11n-seg.pt", "data": "coco8-seg.yaml", "save_json": True, "imgsz": 64}
143
140
  validator = SegmentationValidator(args=args)
144
141
  validator()
145
142
  validator.is_coco = True
146
- download(f"{url}instances_val2017.json", dir=DATASETS_DIR / "coco8-seg/annotations")
143
+ download(f"{ASSETS_URL}/instances_val2017.json", dir=DATASETS_DIR / "coco8-seg/annotations")
147
144
  _ = validator.eval_json(validator.stats)
148
145
 
149
146
  args = {"model": "yolo11n-pose.pt", "data": "coco8-pose.yaml", "save_json": True, "imgsz": 64}
150
147
  validator = PoseValidator(args=args)
151
148
  validator()
152
149
  validator.is_coco = True
153
- download(f"{url}person_keypoints_val2017.json", dir=DATASETS_DIR / "coco8-pose/annotations")
150
+ download(f"{ASSETS_URL}/person_keypoints_val2017.json", dir=DATASETS_DIR / "coco8-pose/annotations")
154
151
  _ = validator.eval_json(validator.stats)
@@ -20,6 +20,7 @@ from ultralytics.data.utils import check_det_dataset
20
20
  from ultralytics.utils import (
21
21
  ARM64,
22
22
  ASSETS,
23
+ ASSETS_URL,
23
24
  DEFAULT_CFG,
24
25
  DEFAULT_CFG_PATH,
25
26
  LINUX,
@@ -125,9 +126,7 @@ def test_predict_img(model_name):
125
126
  batch = [
126
127
  str(SOURCE), # filename
127
128
  Path(SOURCE), # Path
128
- "https://github.com/ultralytics/assets/releases/download/v0.0.0/zidane.jpg?token=123"
129
- if ONLINE
130
- else SOURCE, # URI
129
+ f"{ASSETS_URL}/zidane.jpg?token=123" if ONLINE else SOURCE, # URI
131
130
  im, # OpenCV
132
131
  Image.open(SOURCE), # PIL
133
132
  np.zeros((320, 640, channels), dtype=np.uint8), # numpy
@@ -190,7 +189,7 @@ def test_track_stream(model):
190
189
  """
191
190
  if model == "yolo11n-cls.pt": # classification model not supported for tracking
192
191
  return
193
- video_url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
192
+ video_url = f"{ASSETS_URL}/decelera_portrait_min.mov"
194
193
  model = YOLO(model)
195
194
  model.track(video_url, imgsz=160, tracker="bytetrack.yaml")
196
195
  model.track(video_url, imgsz=160, tracker="botsort.yaml", save_frames=True) # test frame saving also
@@ -229,9 +228,7 @@ def test_train_scratch():
229
228
  def test_train_ndjson():
230
229
  """Test training the YOLO model using NDJSON format dataset."""
231
230
  model = YOLO(WEIGHTS_DIR / "yolo11n.pt")
232
- model.train(
233
- data="https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-ndjson.ndjson", epochs=1, imgsz=32
234
- )
231
+ model.train(data=f"{ASSETS_URL}/coco8-ndjson.ndjson", epochs=1, imgsz=32)
235
232
 
236
233
 
237
234
  @pytest.mark.parametrize("scls", [False, True])
@@ -290,8 +287,8 @@ def test_predict_callback_and_setup():
290
287
  @pytest.mark.parametrize("model", MODELS)
291
288
  def test_results(model: str):
292
289
  """Test YOLO model results processing and output in various formats."""
293
- temp_s = "https://ultralytics.com/images/boats.jpg" if model == "yolo11n-obb.pt" else SOURCE
294
- results = YOLO(WEIGHTS_DIR / model)([temp_s, temp_s], imgsz=160)
290
+ im = f"{ASSETS_URL}/boats.jpg" if model == "yolo11n-obb.pt" else SOURCE
291
+ results = YOLO(WEIGHTS_DIR / model)([im, im], imgsz=160)
295
292
  for r in results:
296
293
  assert len(r), f"'{model}' results should not be empty!"
297
294
  r = r.cpu().numpy()
@@ -357,8 +354,7 @@ def test_data_converter():
357
354
  """Test dataset conversion functions from COCO to YOLO format and class mappings."""
358
355
  from ultralytics.data.converter import coco80_to_coco91_class, convert_coco
359
356
 
360
- file = "instances_val2017.json"
361
- download(f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{file}", dir=TMP)
357
+ download(f"{ASSETS_URL}/instances_val2017.json", dir=TMP)
362
358
  convert_coco(labels_dir=TMP, save_dir=TMP / "yolo_labels", use_segments=True, use_keypoints=False, cls91to80=True)
363
359
  coco80_to_coco91_class()
364
360
 
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.210"
3
+ __version__ = "8.3.212"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -14,7 +14,7 @@ import cv2
14
14
  import numpy as np
15
15
  from PIL import Image
16
16
 
17
- from ultralytics.utils import DATASETS_DIR, LOGGER, NUM_THREADS, TQDM, YAML
17
+ from ultralytics.utils import ASSETS_URL, DATASETS_DIR, LOGGER, NUM_THREADS, TQDM, YAML
18
18
  from ultralytics.utils.checks import check_file, check_requirements
19
19
  from ultralytics.utils.downloads import download, zip_directory
20
20
  from ultralytics.utils.files import increment_path
@@ -678,9 +678,7 @@ def create_synthetic_coco_dataset():
678
678
 
679
679
  # Download labels
680
680
  dir = DATASETS_DIR / "coco"
681
- url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
682
- label_zip = "coco2017labels-segments.zip"
683
- download([url + label_zip], dir=dir.parent)
681
+ download([f"{ASSETS_URL}/coco2017labels-segments.zip"], dir=dir.parent)
684
682
 
685
683
  # Create synthetic images
686
684
  shutil.rmtree(dir / "labels" / "test2017", ignore_errors=True) # Remove test2017 directory as not needed
@@ -19,6 +19,7 @@ from PIL import Image, ImageOps
19
19
 
20
20
  from ultralytics.nn.autobackend import check_class_names
21
21
  from ultralytics.utils import (
22
+ ASSETS_URL,
22
23
  DATASETS_DIR,
23
24
  LOGGER,
24
25
  NUM_THREADS,
@@ -523,8 +524,7 @@ def check_cls_dataset(dataset: str | Path, split: str = "") -> dict[str, Any]:
523
524
  if str(dataset) == "imagenet":
524
525
  subprocess.run(["bash", str(ROOT / "data/scripts/get_imagenet.sh")], check=True)
525
526
  else:
526
- url = f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{dataset}.zip"
527
- download(url, dir=data_dir.parent)
527
+ download(f"{ASSETS_URL}/{dataset}.zip", dir=data_dir.parent)
528
528
  LOGGER.info(f"Dataset download success ✅ ({time.time() - t:.1f}s), saved to {colorstr('bold', data_dir)}\n")
529
529
  train_set = data_dir / "train"
530
530
  if not train_set.is_dir():
@@ -420,15 +420,10 @@ class BaseTrainer:
420
420
  self.loss = loss.sum()
421
421
  if RANK != -1:
422
422
  self.loss *= self.world_size
423
- if not self.loss.isfinite():
424
- LOGGER.warning("Non-finite forward pass, skipping batch...")
425
- continue
426
423
  self.tloss = self.loss_items if self.tloss is None else (self.tloss * i + self.loss_items) / (i + 1)
427
424
 
428
425
  # Backward
429
426
  self.scaler.scale(self.loss).backward()
430
-
431
- # Optimize - https://pytorch.org/docs/master/notes/amp_examples.html
432
427
  if ni - last_opt_step >= self.accumulate:
433
428
  self.optimizer_step()
434
429
  last_opt_step = ni
@@ -557,7 +552,10 @@ class BaseTrainer:
557
552
  """Read results.csv into a dictionary using polars."""
558
553
  import polars as pl # scope for faster 'import ultralytics'
559
554
 
560
- return pl.read_csv(self.csv, infer_schema_length=None).to_dict(as_series=False)
555
+ try:
556
+ return pl.read_csv(self.csv, infer_schema_length=None).to_dict(as_series=False)
557
+ except Exception:
558
+ return {}
561
559
 
562
560
  def _model_train(self):
563
561
  """Set model in training mode."""
@@ -601,6 +599,7 @@ class BaseTrainer:
601
599
  serialized_ckpt = buffer.getvalue() # get the serialized content to save
602
600
 
603
601
  # Save checkpoints
602
+ self.wdir.mkdir(parents=True, exist_ok=True) # ensure weights directory exists
604
603
  self.last.write_bytes(serialized_ckpt) # save last.pt
605
604
  if self.best_fitness == self.fitness:
606
605
  self.best.write_bytes(serialized_ckpt) # save best.pt
@@ -666,7 +665,7 @@ class BaseTrainer:
666
665
  def optimizer_step(self):
667
666
  """Perform a single step of the training optimizer with gradient clipping and EMA update."""
668
667
  self.scaler.unscale_(self.optimizer) # unscale gradients
669
- torch.nn.utils.clip_grad_norm_(self.model.parameters(), max_norm=10.0) # clip gradients
668
+ torch.nn.utils.clip_grad_norm_(self.model.parameters(), max_norm=10.0)
670
669
  self.scaler.step(self.optimizer)
671
670
  self.scaler.update()
672
671
  self.optimizer.zero_grad()
@@ -741,8 +740,9 @@ class BaseTrainer:
741
740
  """Save training metrics to a CSV file."""
742
741
  keys, vals = list(metrics.keys()), list(metrics.values())
743
742
  n = len(metrics) + 2 # number of cols
744
- s = "" if self.csv.exists() else (("%s," * n % tuple(["epoch", "time"] + keys)).rstrip(",") + "\n") # header
745
743
  t = time.time() - self.train_time_start
744
+ self.csv.parent.mkdir(parents=True, exist_ok=True) # ensure parent directory exists
745
+ s = "" if self.csv.exists() else (("%s," * n % tuple(["epoch", "time"] + keys)).rstrip(",") + "\n") # header
746
746
  with open(self.csv, "a", encoding="utf-8") as f:
747
747
  f.write(s + ("%.6g," * n % tuple([self.epoch + 1, t] + vals)).rstrip(",") + "\n")
748
748
 
@@ -43,7 +43,7 @@ import torch.cuda
43
43
  from ultralytics import YOLO, YOLOWorld
44
44
  from ultralytics.cfg import TASK2DATA, TASK2METRIC
45
45
  from ultralytics.engine.exporter import export_formats
46
- from ultralytics.utils import ARM64, ASSETS, IS_JETSON, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR, YAML
46
+ from ultralytics.utils import ARM64, ASSETS, ASSETS_URL, IS_JETSON, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR, YAML
47
47
  from ultralytics.utils.checks import IS_PYTHON_3_13, check_imgsz, check_requirements, check_yolo, is_rockchip
48
48
  from ultralytics.utils.downloads import safe_download
49
49
  from ultralytics.utils.files import file_size
@@ -281,7 +281,7 @@ class RF100Benchmark:
281
281
  (shutil.rmtree("rf-100"), os.mkdir("rf-100")) if os.path.exists("rf-100") else os.mkdir("rf-100")
282
282
  os.chdir("rf-100")
283
283
  os.mkdir("ultralytics-benchmarks")
284
- safe_download("https://github.com/ultralytics/assets/releases/download/v0.0.0/datasets_links.txt")
284
+ safe_download(f"{ASSETS_URL}/datasets_links.txt")
285
285
 
286
286
  with open(ds_link_txt, encoding="utf-8") as file:
287
287
  for line in file:
@@ -23,6 +23,7 @@ import torch
23
23
  from ultralytics.utils import (
24
24
  ARM64,
25
25
  ASSETS,
26
+ ASSETS_URL,
26
27
  AUTOINSTALL,
27
28
  GIT,
28
29
  IS_COLAB,
@@ -336,7 +337,7 @@ def check_font(font="Arial.ttf"):
336
337
  return matches[0]
337
338
 
338
339
  # Download to USER_CONFIG_DIR if missing
339
- url = f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{name}"
340
+ url = f"{ASSETS_URL}/{name}"
340
341
  if downloads.is_url(url, check=True):
341
342
  downloads.safe_download(url=url, file=file)
342
343
  return file
@@ -10,7 +10,7 @@ from multiprocessing.pool import ThreadPool
10
10
  from pathlib import Path
11
11
  from urllib import parse, request
12
12
 
13
- from ultralytics.utils import LOGGER, TQDM, checks, clean_url, emojis, is_online, url2file
13
+ from ultralytics.utils import ASSETS_URL, LOGGER, TQDM, checks, clean_url, emojis, is_online, url2file
14
14
 
15
15
  # Define Ultralytics GitHub assets maintained at https://github.com/ultralytics/assets
16
16
  GITHUB_ASSETS_REPO = "ultralytics/assets"
@@ -60,10 +60,11 @@ def is_url(url: str | Path, check: bool = False) -> bool:
60
60
  try:
61
61
  url = str(url)
62
62
  result = parse.urlparse(url)
63
- assert all([result.scheme, result.netloc]) # check if is url
63
+ if not (result.scheme and result.netloc):
64
+ return False
64
65
  if check:
65
- with request.urlopen(url) as response:
66
- return response.getcode() == 200 # check if exists online
66
+ r = request.urlopen(request.Request(url, method="HEAD"), timeout=3)
67
+ return 200 <= r.getcode() < 400
67
68
  return True
68
69
  except Exception:
69
70
  return False
@@ -323,10 +324,7 @@ def safe_download(
323
324
  if "://" not in str(url) and Path(url).is_file(): # URL exists ('://' check required in Windows Python<3.10)
324
325
  f = Path(url) # filename
325
326
  elif not f.is_file(): # URL and file do not exist
326
- uri = (url if gdrive else clean_url(url)).replace( # cleaned and aliased url
327
- "https://github.com/ultralytics/assets/releases/download/v0.0.0/",
328
- "https://ultralytics.com/assets/", # assets alias
329
- )
327
+ uri = (url if gdrive else clean_url(url)).replace(ASSETS_URL, "https://ultralytics.com/assets") # clean
330
328
  desc = f"Downloading {uri} to '{f}'"
331
329
  f.parent.mkdir(parents=True, exist_ok=True) # make directory if missing
332
330
  curl_installed = shutil.which("curl")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.210
3
+ Version: 8.3.212
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>
File without changes
File without changes
File without changes