ultralytics 8.3.43__tar.gz → 8.3.47__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 (243) hide show
  1. {ultralytics-8.3.43/ultralytics.egg-info → ultralytics-8.3.47}/PKG-INFO +1 -1
  2. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/exporter.py +3 -1
  4. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/model.py +1 -0
  5. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/predictor.py +1 -1
  6. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/predict.py +1 -1
  7. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/classify/predict.py +2 -1
  8. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/classify/val.py +4 -0
  9. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/autobackend.py +2 -1
  10. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/head.py +6 -1
  11. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/utils/matching.py +1 -1
  12. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/checks.py +14 -1
  13. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/loss.py +1 -0
  14. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/ops.py +13 -5
  15. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/triton.py +1 -0
  16. {ultralytics-8.3.43 → ultralytics-8.3.47/ultralytics.egg-info}/PKG-INFO +1 -1
  17. {ultralytics-8.3.43 → ultralytics-8.3.47}/LICENSE +0 -0
  18. {ultralytics-8.3.43 → ultralytics-8.3.47}/README.md +0 -0
  19. {ultralytics-8.3.43 → ultralytics-8.3.47}/pyproject.toml +0 -0
  20. {ultralytics-8.3.43 → ultralytics-8.3.47}/setup.cfg +0 -0
  21. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/__init__.py +0 -0
  22. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/conftest.py +0 -0
  23. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_cli.py +0 -0
  24. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_cuda.py +0 -0
  25. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_engine.py +0 -0
  26. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_exports.py +0 -0
  27. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_integrations.py +0 -0
  28. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_python.py +0 -0
  29. {ultralytics-8.3.43 → ultralytics-8.3.47}/tests/test_solutions.py +0 -0
  30. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/assets/bus.jpg +0 -0
  31. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/assets/zidane.jpg +0 -0
  32. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/__init__.py +0 -0
  33. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  34. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  35. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  36. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  37. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  38. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  39. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  40. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  41. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  42. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  43. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  44. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  45. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  46. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco.yaml +0 -0
  47. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  48. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  49. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  50. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  51. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  52. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  53. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  54. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  55. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  56. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  57. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  58. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  59. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/signature.yaml +0 -0
  60. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  61. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/datasets/xView.yaml +0 -0
  62. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/default.yaml +0 -0
  63. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  64. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  65. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  66. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  67. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  68. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  69. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  70. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  71. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  72. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  73. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  74. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  75. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  76. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  77. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  78. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  79. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  80. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  81. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  82. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  83. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  84. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  85. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  86. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  87. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  88. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  89. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  90. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  91. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  92. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  93. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  94. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  95. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  96. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  97. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  98. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  99. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  100. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  101. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  102. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  103. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  104. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  105. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  106. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  107. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  108. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/solutions/default.yaml +0 -0
  109. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  110. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  111. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/__init__.py +0 -0
  112. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/annotator.py +0 -0
  113. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/augment.py +0 -0
  114. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/base.py +0 -0
  115. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/build.py +0 -0
  116. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/converter.py +0 -0
  117. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/dataset.py +0 -0
  118. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/loaders.py +0 -0
  119. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/split_dota.py +0 -0
  120. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/data/utils.py +0 -0
  121. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/__init__.py +0 -0
  122. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/results.py +0 -0
  123. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/trainer.py +0 -0
  124. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/tuner.py +0 -0
  125. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/engine/validator.py +0 -0
  126. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/hub/__init__.py +0 -0
  127. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/hub/auth.py +0 -0
  128. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/hub/google/__init__.py +0 -0
  129. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/hub/session.py +0 -0
  130. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/hub/utils.py +0 -0
  131. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/__init__.py +0 -0
  132. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/fastsam/__init__.py +0 -0
  133. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/fastsam/model.py +0 -0
  134. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/fastsam/predict.py +0 -0
  135. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/fastsam/utils.py +0 -0
  136. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/fastsam/val.py +0 -0
  137. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/nas/__init__.py +0 -0
  138. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/nas/model.py +0 -0
  139. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/nas/predict.py +0 -0
  140. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/nas/val.py +0 -0
  141. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/rtdetr/__init__.py +0 -0
  142. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/rtdetr/model.py +0 -0
  143. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/rtdetr/predict.py +0 -0
  144. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/rtdetr/train.py +0 -0
  145. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/rtdetr/val.py +0 -0
  146. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/__init__.py +0 -0
  147. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/amg.py +0 -0
  148. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/build.py +0 -0
  149. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/model.py +0 -0
  150. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/__init__.py +0 -0
  151. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/blocks.py +0 -0
  152. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/decoders.py +0 -0
  153. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/encoders.py +0 -0
  154. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  155. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/sam.py +0 -0
  156. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  157. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/transformer.py +0 -0
  158. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/sam/modules/utils.py +0 -0
  159. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/utils/__init__.py +0 -0
  160. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/utils/loss.py +0 -0
  161. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/utils/ops.py +0 -0
  162. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/__init__.py +0 -0
  163. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/classify/__init__.py +0 -0
  164. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/classify/train.py +0 -0
  165. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/detect/__init__.py +0 -0
  166. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/detect/predict.py +0 -0
  167. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/detect/train.py +0 -0
  168. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/detect/val.py +0 -0
  169. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/model.py +0 -0
  170. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/obb/__init__.py +0 -0
  171. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/obb/predict.py +0 -0
  172. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/obb/train.py +0 -0
  173. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/obb/val.py +0 -0
  174. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/pose/__init__.py +0 -0
  175. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/pose/predict.py +0 -0
  176. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/pose/train.py +0 -0
  177. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/pose/val.py +0 -0
  178. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/segment/__init__.py +0 -0
  179. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/segment/predict.py +0 -0
  180. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/segment/train.py +0 -0
  181. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/segment/val.py +0 -0
  182. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/world/__init__.py +0 -0
  183. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/world/train.py +0 -0
  184. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/models/yolo/world/train_world.py +0 -0
  185. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/__init__.py +0 -0
  186. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/__init__.py +0 -0
  187. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/activation.py +0 -0
  188. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/block.py +0 -0
  189. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/conv.py +0 -0
  190. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/transformer.py +0 -0
  191. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/modules/utils.py +0 -0
  192. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/nn/tasks.py +0 -0
  193. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/__init__.py +0 -0
  194. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/ai_gym.py +0 -0
  195. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/analytics.py +0 -0
  196. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/distance_calculation.py +0 -0
  197. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/heatmap.py +0 -0
  198. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/object_counter.py +0 -0
  199. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/parking_management.py +0 -0
  200. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/queue_management.py +0 -0
  201. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/region_counter.py +0 -0
  202. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/solutions.py +0 -0
  203. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/speed_estimation.py +0 -0
  204. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/streamlit_inference.py +0 -0
  205. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/solutions/trackzone.py +0 -0
  206. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/__init__.py +0 -0
  207. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/basetrack.py +0 -0
  208. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/bot_sort.py +0 -0
  209. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/byte_tracker.py +0 -0
  210. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/track.py +0 -0
  211. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/utils/__init__.py +0 -0
  212. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/utils/gmc.py +0 -0
  213. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  214. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/__init__.py +0 -0
  215. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/autobatch.py +0 -0
  216. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/benchmarks.py +0 -0
  217. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/__init__.py +0 -0
  218. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/base.py +0 -0
  219. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/clearml.py +0 -0
  220. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/comet.py +0 -0
  221. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/dvc.py +0 -0
  222. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/hub.py +0 -0
  223. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/mlflow.py +0 -0
  224. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/neptune.py +0 -0
  225. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/raytune.py +0 -0
  226. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  227. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/callbacks/wb.py +0 -0
  228. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/dist.py +0 -0
  229. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/downloads.py +0 -0
  230. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/errors.py +0 -0
  231. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/files.py +0 -0
  232. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/instance.py +0 -0
  233. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/metrics.py +0 -0
  234. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/patches.py +0 -0
  235. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/plotting.py +0 -0
  236. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/tal.py +0 -0
  237. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/torch_utils.py +0 -0
  238. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics/utils/tuner.py +0 -0
  239. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics.egg-info/SOURCES.txt +0 -0
  240. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics.egg-info/dependency_links.txt +0 -0
  241. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics.egg-info/entry_points.txt +0 -0
  242. {ultralytics-8.3.43 → ultralytics-8.3.47}/ultralytics.egg-info/requires.txt +0 -0
  243. {ultralytics-8.3.43 → ultralytics-8.3.47}/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.3.43
3
+ Version: 8.3.47
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>
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.3.43"
3
+ __version__ = "8.3.47"
4
4
 
5
5
  import os
6
6
 
@@ -73,7 +73,7 @@ from ultralytics.data import build_dataloader
73
73
  from ultralytics.data.dataset import YOLODataset
74
74
  from ultralytics.data.utils import check_cls_dataset, check_det_dataset
75
75
  from ultralytics.nn.autobackend import check_class_names, default_class_names
76
- from ultralytics.nn.modules import C2f, Detect, RTDETRDecoder
76
+ from ultralytics.nn.modules import C2f, Classify, Detect, RTDETRDecoder
77
77
  from ultralytics.nn.tasks import DetectionModel, SegmentationModel, WorldModel
78
78
  from ultralytics.utils import (
79
79
  ARM64,
@@ -287,6 +287,8 @@ class Exporter:
287
287
 
288
288
  model = FXModel(model)
289
289
  for m in model.modules():
290
+ if isinstance(m, Classify):
291
+ m.export = True
290
292
  if isinstance(m, (Detect, RTDETRDecoder)): # includes all Detect subclasses like Segment, Pose, OBB
291
293
  m.dynamic = self.args.dynamic
292
294
  m.export = True
@@ -136,6 +136,7 @@ class Model(nn.Module):
136
136
  # Check if Triton Server model
137
137
  elif self.is_triton_model(model):
138
138
  self.model_name = self.model = model
139
+ self.overrides["task"] = task or "detect" # set `task=detect` if not explicitly set
139
140
  return
140
141
 
141
142
  # Load or create new YOLO model
@@ -155,7 +155,7 @@ class BasePredictor:
155
155
  same_shapes = len({x.shape for x in im}) == 1
156
156
  letterbox = LetterBox(
157
157
  self.imgsz,
158
- auto=same_shapes and (self.model.pt or getattr(self.model, "dynamic", False)),
158
+ auto=same_shapes and (self.model.pt or (getattr(self.model, "dynamic", False) and not self.model.imx)),
159
159
  stride=self.model.stride,
160
160
  )
161
161
  return [letterbox(image=x) for x in im]
@@ -1105,7 +1105,7 @@ class SAM2VideoPredictor(SAM2Predictor):
1105
1105
  for obj_temp_output_dict in temp_output_dict_per_obj.values():
1106
1106
  temp_frame_inds.update(obj_temp_output_dict[storage_key].keys())
1107
1107
  consolidated_frame_inds[storage_key].update(temp_frame_inds)
1108
- # consolidate the temprary output across all objects on this frame
1108
+ # consolidate the temporary output across all objects on this frame
1109
1109
  for frame_idx in temp_frame_inds:
1110
1110
  consolidated_out = self._consolidate_temp_output_across_obj(
1111
1111
  frame_idx, is_cond=is_cond, run_mem_encoder=True
@@ -53,7 +53,8 @@ class ClassificationPredictor(BasePredictor):
53
53
  if not isinstance(orig_imgs, list): # input images are a torch.Tensor, not a list
54
54
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
55
55
 
56
+ preds = preds[0] if isinstance(preds, (list, tuple)) else preds
56
57
  return [
57
- Results(orig_img, path=img_path, names=self.model.names, probs=pred.softmax(0))
58
+ Results(orig_img, path=img_path, names=self.model.names, probs=pred)
58
59
  for pred, orig_img, img_path in zip(preds, orig_imgs, self.batch[0])
59
60
  ]
@@ -71,6 +71,10 @@ class ClassificationValidator(BaseValidator):
71
71
  self.metrics.confusion_matrix = self.confusion_matrix
72
72
  self.metrics.save_dir = self.save_dir
73
73
 
74
+ def postprocess(self, preds):
75
+ """Preprocesses the classification predictions."""
76
+ return preds[0] if isinstance(preds, (list, tuple)) else preds
77
+
74
78
  def get_stats(self):
75
79
  """Returns a dictionary of metrics obtained by processing targets and predictions."""
76
80
  self.metrics.process(self.targets, self.pred)
@@ -96,7 +96,7 @@ class AutoBackend(nn.Module):
96
96
  Initialize the AutoBackend for inference.
97
97
 
98
98
  Args:
99
- weights (str): Path to the model weights file. Defaults to 'yolov8n.pt'.
99
+ weights (str | torch.nn.Module): Path to the model weights file or a module instance. Defaults to 'yolo11n.pt'.
100
100
  device (torch.device): Device to run the model on. Defaults to CPU.
101
101
  dnn (bool): Use OpenCV DNN module for ONNX inference. Defaults to False.
102
102
  data (str | Path | optional): Path to the additional data.yaml file containing class names. Optional.
@@ -462,6 +462,7 @@ class AutoBackend(nn.Module):
462
462
  from ultralytics.utils.triton import TritonRemoteModel
463
463
 
464
464
  model = TritonRemoteModel(w)
465
+ metadata = model.metadata
465
466
 
466
467
  # Any other format (unsupported)
467
468
  else:
@@ -282,6 +282,8 @@ class Pose(Detect):
282
282
  class Classify(nn.Module):
283
283
  """YOLO classification head, i.e. x(b,c1,20,20) to x(b,c2)."""
284
284
 
285
+ export = False # export mode
286
+
285
287
  def __init__(self, c1, c2, k=1, s=1, p=None, g=1):
286
288
  """Initializes YOLO classification head to transform input tensor from (b,c1,20,20) to (b,c2) shape."""
287
289
  super().__init__()
@@ -296,7 +298,10 @@ class Classify(nn.Module):
296
298
  if isinstance(x, list):
297
299
  x = torch.cat(x, 1)
298
300
  x = self.linear(self.drop(self.pool(self.conv(x)).flatten(1)))
299
- return x
301
+ if self.training:
302
+ return x
303
+ y = x.softmax(1) # get final output
304
+ return y if self.export else (y, x)
300
305
 
301
306
 
302
307
  class WorldDetect(Detect):
@@ -13,7 +13,7 @@ try:
13
13
  except (ImportError, AssertionError, AttributeError):
14
14
  from ultralytics.utils.checks import check_requirements
15
15
 
16
- check_requirements("lapx>=0.5.2") # update to lap package from https://github.com/rathaROG/lapx
16
+ check_requirements("lap>=0.5.12") # https://github.com/gatagat/lap
17
17
  import lap
18
18
 
19
19
 
@@ -669,8 +669,22 @@ def check_amp(model):
669
669
  from ultralytics.utils.torch_utils import autocast
670
670
 
671
671
  device = next(model.parameters()).device # get model device
672
+ prefix = colorstr("AMP: ")
672
673
  if device.type in {"cpu", "mps"}:
673
674
  return False # AMP only used on CUDA devices
675
+ else:
676
+ # GPUs that have issues with AMP
677
+ pattern = re.compile(
678
+ r"(nvidia|geforce|quadro|tesla).*?(1660|1650|1630|t400|t550|t600|t1000|t1200|t2000|k40m)", re.IGNORECASE
679
+ )
680
+
681
+ gpu = torch.cuda.get_device_name(device)
682
+ if bool(pattern.search(gpu)):
683
+ LOGGER.warning(
684
+ f"{prefix}checks failed ❌. AMP training on {gpu} GPU may cause "
685
+ f"NaN losses or zero-mAP results, so AMP will be disabled during training."
686
+ )
687
+ return False
674
688
 
675
689
  def amp_allclose(m, im):
676
690
  """All close FP32 vs AMP results."""
@@ -683,7 +697,6 @@ def check_amp(model):
683
697
  return a.shape == b.shape and torch.allclose(a, b.float(), atol=0.5) # close to 0.5 absolute tolerance
684
698
 
685
699
  im = ASSETS / "bus.jpg" # image to check
686
- prefix = colorstr("AMP: ")
687
700
  LOGGER.info(f"{prefix}running Automatic Mixed Precision (AMP) checks...")
688
701
  warning_msg = "Setting 'amp=True'. If you experience zero-mAP or NaN losses you can disable AMP with amp=False."
689
702
  try:
@@ -604,6 +604,7 @@ class v8ClassificationLoss:
604
604
 
605
605
  def __call__(self, preds, batch):
606
606
  """Compute the classification loss between predictions and true labels."""
607
+ preds = preds[1] if isinstance(preds, (list, tuple)) else preds
607
608
  loss = F.cross_entropy(preds, batch["cls"], reduction="mean")
608
609
  loss_items = loss.detach()
609
610
  return loss, loss_items
@@ -400,7 +400,7 @@ def xyxy2xywh(x):
400
400
  y (np.ndarray | torch.Tensor): The bounding box coordinates in (x, y, width, height) format.
401
401
  """
402
402
  assert x.shape[-1] == 4, f"input shape last dimension expected 4 but input shape is {x.shape}"
403
- y = torch.empty_like(x) if isinstance(x, torch.Tensor) else np.empty_like(x) # faster than clone/copy
403
+ y = empty_like(x) # faster than clone/copy
404
404
  y[..., 0] = (x[..., 0] + x[..., 2]) / 2 # x center
405
405
  y[..., 1] = (x[..., 1] + x[..., 3]) / 2 # y center
406
406
  y[..., 2] = x[..., 2] - x[..., 0] # width
@@ -420,7 +420,7 @@ def xywh2xyxy(x):
420
420
  y (np.ndarray | torch.Tensor): The bounding box coordinates in (x1, y1, x2, y2) format.
421
421
  """
422
422
  assert x.shape[-1] == 4, f"input shape last dimension expected 4 but input shape is {x.shape}"
423
- y = torch.empty_like(x) if isinstance(x, torch.Tensor) else np.empty_like(x) # faster than clone/copy
423
+ y = empty_like(x) # faster than clone/copy
424
424
  xy = x[..., :2] # centers
425
425
  wh = x[..., 2:] / 2 # half width-height
426
426
  y[..., :2] = xy - wh # top left xy
@@ -443,7 +443,7 @@ def xywhn2xyxy(x, w=640, h=640, padw=0, padh=0):
443
443
  x1,y1 is the top-left corner, x2,y2 is the bottom-right corner of the bounding box.
444
444
  """
445
445
  assert x.shape[-1] == 4, f"input shape last dimension expected 4 but input shape is {x.shape}"
446
- y = torch.empty_like(x) if isinstance(x, torch.Tensor) else np.empty_like(x) # faster than clone/copy
446
+ y = empty_like(x) # faster than clone/copy
447
447
  y[..., 0] = w * (x[..., 0] - x[..., 2] / 2) + padw # top left x
448
448
  y[..., 1] = h * (x[..., 1] - x[..., 3] / 2) + padh # top left y
449
449
  y[..., 2] = w * (x[..., 0] + x[..., 2] / 2) + padw # bottom right x
@@ -469,7 +469,7 @@ def xyxy2xywhn(x, w=640, h=640, clip=False, eps=0.0):
469
469
  if clip:
470
470
  x = clip_boxes(x, (h - eps, w - eps))
471
471
  assert x.shape[-1] == 4, f"input shape last dimension expected 4 but input shape is {x.shape}"
472
- y = torch.empty_like(x) if isinstance(x, torch.Tensor) else np.empty_like(x, dtype=float) # faster than clone/copy
472
+ y = empty_like(x) # faster than clone/copy
473
473
  y[..., 0] = ((x[..., 0] + x[..., 2]) / 2) / w # x center
474
474
  y[..., 1] = ((x[..., 1] + x[..., 3]) / 2) / h # y center
475
475
  y[..., 2] = (x[..., 2] - x[..., 0]) / w # width
@@ -625,8 +625,9 @@ def resample_segments(segments, n=1000):
625
625
  """
626
626
  for i, s in enumerate(segments):
627
627
  s = np.concatenate((s, s[0:1, :]), axis=0)
628
- x = np.linspace(0, len(s) - 1, n)
628
+ x = np.linspace(0, len(s) - 1, n - len(s) if len(s) < n else n)
629
629
  xp = np.arange(len(s))
630
+ x = np.insert(x, np.searchsorted(x, xp), xp) if len(s) < n else x
630
631
  segments[i] = (
631
632
  np.concatenate([np.interp(x, xp, s[:, i]) for i in range(2)], dtype=np.float32).reshape(2, -1).T
632
633
  ) # segment xy
@@ -837,3 +838,10 @@ def clean_str(s):
837
838
  (str): a string with special characters replaced by an underscore _
838
839
  """
839
840
  return re.sub(pattern="[|@#!¡·$€%&()=?¿^*;:,¨´><+]", repl="_", string=s)
841
+
842
+
843
+ def empty_like(x):
844
+ """Creates empty torch.Tensor or np.ndarray with same shape as input and float32 dtype."""
845
+ return (
846
+ torch.empty_like(x, dtype=torch.float32) if isinstance(x, torch.Tensor) else np.empty_like(x, dtype=np.float32)
847
+ )
@@ -66,6 +66,7 @@ class TritonRemoteModel:
66
66
  self.np_input_formats = [type_map[x] for x in self.input_formats]
67
67
  self.input_names = [x["name"] for x in config["input"]]
68
68
  self.output_names = [x["name"] for x in config["output"]]
69
+ self.metadata = eval(config.get("parameters", {}).get("metadata", {}).get("string_value", "None"))
69
70
 
70
71
  def __call__(self, *inputs: np.ndarray) -> List[np.ndarray]:
71
72
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.43
3
+ Version: 8.3.47
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