ultralytics 8.3.48__tar.gz → 8.3.50__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.48/ultralytics.egg-info → ultralytics-8.3.50}/PKG-INFO +1 -1
  2. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_python.py +0 -9
  3. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/dataset.py +4 -2
  5. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/model.py +2 -2
  6. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/validator.py +1 -1
  7. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/sam.py +3 -3
  8. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/detect/val.py +2 -3
  9. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/obb/train.py +3 -1
  10. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/obb/val.py +2 -2
  11. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/checks.py +1 -0
  12. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/instance.py +15 -2
  13. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/ops.py +2 -0
  14. {ultralytics-8.3.48 → ultralytics-8.3.50/ultralytics.egg-info}/PKG-INFO +1 -1
  15. {ultralytics-8.3.48 → ultralytics-8.3.50}/LICENSE +0 -0
  16. {ultralytics-8.3.48 → ultralytics-8.3.50}/README.md +0 -0
  17. {ultralytics-8.3.48 → ultralytics-8.3.50}/pyproject.toml +0 -0
  18. {ultralytics-8.3.48 → ultralytics-8.3.50}/setup.cfg +0 -0
  19. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/__init__.py +0 -0
  20. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/conftest.py +0 -0
  21. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_cli.py +0 -0
  22. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_cuda.py +0 -0
  23. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_engine.py +0 -0
  24. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_exports.py +0 -0
  25. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_integrations.py +0 -0
  26. {ultralytics-8.3.48 → ultralytics-8.3.50}/tests/test_solutions.py +0 -0
  27. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/assets/bus.jpg +0 -0
  28. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/assets/zidane.jpg +0 -0
  29. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/__init__.py +0 -0
  30. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  31. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  32. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  33. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  34. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  35. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  36. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  37. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  38. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  39. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  40. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  41. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  42. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  43. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco.yaml +0 -0
  44. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  45. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  46. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  47. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  48. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  49. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  50. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  51. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  52. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  53. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  54. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  55. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  56. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/signature.yaml +0 -0
  57. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  58. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/datasets/xView.yaml +0 -0
  59. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/default.yaml +0 -0
  60. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  61. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  62. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  63. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  64. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  65. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  66. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  67. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  68. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  69. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  70. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  71. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  72. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  73. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  74. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  75. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  76. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  77. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  78. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  79. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  80. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  81. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  82. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  83. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  84. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  85. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  86. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  87. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  88. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  89. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  90. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  91. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  92. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  93. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  94. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  95. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  96. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  97. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  98. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  99. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  100. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  101. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  102. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  103. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  104. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  105. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/solutions/default.yaml +0 -0
  106. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  107. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  108. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/__init__.py +0 -0
  109. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/annotator.py +0 -0
  110. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/augment.py +0 -0
  111. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/base.py +0 -0
  112. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/build.py +0 -0
  113. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/converter.py +0 -0
  114. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/loaders.py +0 -0
  115. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/split_dota.py +0 -0
  116. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/data/utils.py +0 -0
  117. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/__init__.py +0 -0
  118. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/exporter.py +0 -0
  119. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/predictor.py +0 -0
  120. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/results.py +0 -0
  121. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/trainer.py +0 -0
  122. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/engine/tuner.py +0 -0
  123. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/hub/__init__.py +0 -0
  124. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/hub/auth.py +0 -0
  125. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/hub/google/__init__.py +0 -0
  126. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/hub/session.py +0 -0
  127. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/hub/utils.py +0 -0
  128. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/__init__.py +0 -0
  129. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/fastsam/__init__.py +0 -0
  130. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/fastsam/model.py +0 -0
  131. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/fastsam/predict.py +0 -0
  132. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/fastsam/utils.py +0 -0
  133. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/fastsam/val.py +0 -0
  134. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/nas/__init__.py +0 -0
  135. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/nas/model.py +0 -0
  136. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/nas/predict.py +0 -0
  137. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/nas/val.py +0 -0
  138. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/rtdetr/__init__.py +0 -0
  139. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/rtdetr/model.py +0 -0
  140. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/rtdetr/predict.py +0 -0
  141. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/rtdetr/train.py +0 -0
  142. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/rtdetr/val.py +0 -0
  143. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/__init__.py +0 -0
  144. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/amg.py +0 -0
  145. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/build.py +0 -0
  146. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/model.py +0 -0
  147. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/__init__.py +0 -0
  148. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/blocks.py +0 -0
  149. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/decoders.py +0 -0
  150. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/encoders.py +0 -0
  151. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  152. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  153. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/transformer.py +0 -0
  154. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/modules/utils.py +0 -0
  155. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/sam/predict.py +0 -0
  156. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/utils/__init__.py +0 -0
  157. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/utils/loss.py +0 -0
  158. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/utils/ops.py +0 -0
  159. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/__init__.py +0 -0
  160. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/classify/__init__.py +0 -0
  161. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/classify/predict.py +0 -0
  162. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/classify/train.py +0 -0
  163. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/classify/val.py +0 -0
  164. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/detect/__init__.py +0 -0
  165. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/detect/predict.py +0 -0
  166. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/detect/train.py +0 -0
  167. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/model.py +0 -0
  168. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/obb/__init__.py +0 -0
  169. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/obb/predict.py +0 -0
  170. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/pose/__init__.py +0 -0
  171. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/pose/predict.py +0 -0
  172. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/pose/train.py +0 -0
  173. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/pose/val.py +0 -0
  174. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/segment/__init__.py +0 -0
  175. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/segment/predict.py +0 -0
  176. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/segment/train.py +0 -0
  177. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/segment/val.py +0 -0
  178. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/world/__init__.py +0 -0
  179. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/world/train.py +0 -0
  180. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/models/yolo/world/train_world.py +0 -0
  181. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/__init__.py +0 -0
  182. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/autobackend.py +0 -0
  183. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/__init__.py +0 -0
  184. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/activation.py +0 -0
  185. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/block.py +0 -0
  186. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/conv.py +0 -0
  187. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/head.py +0 -0
  188. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/transformer.py +0 -0
  189. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/modules/utils.py +0 -0
  190. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/nn/tasks.py +0 -0
  191. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/__init__.py +0 -0
  192. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/ai_gym.py +0 -0
  193. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/analytics.py +0 -0
  194. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/distance_calculation.py +0 -0
  195. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/heatmap.py +0 -0
  196. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/object_counter.py +0 -0
  197. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/parking_management.py +0 -0
  198. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/queue_management.py +0 -0
  199. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/region_counter.py +0 -0
  200. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/solutions.py +0 -0
  201. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/speed_estimation.py +0 -0
  202. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/streamlit_inference.py +0 -0
  203. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/solutions/trackzone.py +0 -0
  204. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/__init__.py +0 -0
  205. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/basetrack.py +0 -0
  206. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/bot_sort.py +0 -0
  207. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/byte_tracker.py +0 -0
  208. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/track.py +0 -0
  209. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/utils/__init__.py +0 -0
  210. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/utils/gmc.py +0 -0
  211. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  212. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/trackers/utils/matching.py +0 -0
  213. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/__init__.py +0 -0
  214. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/autobatch.py +0 -0
  215. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/benchmarks.py +0 -0
  216. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/__init__.py +0 -0
  217. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/base.py +0 -0
  218. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/clearml.py +0 -0
  219. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/comet.py +0 -0
  220. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/dvc.py +0 -0
  221. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/hub.py +0 -0
  222. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/mlflow.py +0 -0
  223. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/neptune.py +0 -0
  224. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/raytune.py +0 -0
  225. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  226. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/callbacks/wb.py +0 -0
  227. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/dist.py +0 -0
  228. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/downloads.py +0 -0
  229. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/errors.py +0 -0
  230. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/files.py +0 -0
  231. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/loss.py +0 -0
  232. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/metrics.py +0 -0
  233. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/patches.py +0 -0
  234. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/plotting.py +0 -0
  235. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/tal.py +0 -0
  236. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/torch_utils.py +0 -0
  237. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/triton.py +0 -0
  238. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics/utils/tuner.py +0 -0
  239. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics.egg-info/SOURCES.txt +0 -0
  240. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics.egg-info/dependency_links.txt +0 -0
  241. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics.egg-info/entry_points.txt +0 -0
  242. {ultralytics-8.3.48 → ultralytics-8.3.50}/ultralytics.egg-info/requires.txt +0 -0
  243. {ultralytics-8.3.48 → ultralytics-8.3.50}/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.48
3
+ Version: 8.3.50
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>
@@ -409,15 +409,6 @@ def test_utils_torchutils():
409
409
  time_sync()
410
410
 
411
411
 
412
- @pytest.mark.slow
413
- @pytest.mark.skipif(not ONLINE, reason="environment is offline")
414
- def test_utils_downloads():
415
- """Test file download utilities from ultralytics.utils.downloads."""
416
- from ultralytics.utils.downloads import get_google_drive_file_info
417
-
418
- get_google_drive_file_info("https://drive.google.com/file/d/1cqT-cJgANNrhIHCrEufUYhQ4RqiWG_lJ/view?usp=drive_link")
419
-
420
-
421
412
  def test_utils_ops():
422
413
  """Test utility operations functions for coordinate transformation and normalization."""
423
414
  from ultralytics.utils.ops import (
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.3.48"
3
+ __version__ = "8.3.50"
4
4
 
5
5
  import os
6
6
 
@@ -218,8 +218,10 @@ class YOLODataset(BaseDataset):
218
218
  # NOTE: do NOT resample oriented boxes
219
219
  segment_resamples = 100 if self.use_obb else 1000
220
220
  if len(segments) > 0:
221
- # list[np.array(1000, 2)] * num_samples
222
- # (N, 1000, 2)
221
+ # make sure segments interpolate correctly if original length is greater than segment_resamples
222
+ max_len = max([len(s) for s in segments])
223
+ segment_resamples = (max_len + 1) if segment_resamples < max_len else segment_resamples
224
+ # list[np.array(segment_resamples, 2)] * num_samples
223
225
  segments = np.stack(resample_segments(segments, n=segment_resamples), axis=0)
224
226
  else:
225
227
  segments = np.zeros((0, segment_resamples, 2), dtype=np.float32)
@@ -115,7 +115,7 @@ class Model(nn.Module):
115
115
  self.predictor = None # reuse predictor
116
116
  self.model = None # model object
117
117
  self.trainer = None # trainer object
118
- self.ckpt = None # if loaded from *.pt
118
+ self.ckpt = {} # if loaded from *.pt
119
119
  self.cfg = None # if loaded from *.yaml
120
120
  self.ckpt_path = None
121
121
  self.overrides = {} # overrides for trainer object
@@ -807,7 +807,7 @@ class Model(nn.Module):
807
807
  # Update model and cfg after training
808
808
  if RANK in {-1, 0}:
809
809
  ckpt = self.trainer.best if self.trainer.best.exists() else self.trainer.last
810
- self.model, _ = attempt_load_one_weight(ckpt)
810
+ self.model, self.ckpt = attempt_load_one_weight(ckpt)
811
811
  self.overrides = self.model.args
812
812
  self.metrics = getattr(self.trainer.validator, "metrics", None) # TODO: no metrics returned by DDP
813
813
  return self.metrics
@@ -120,7 +120,7 @@ class BaseValidator:
120
120
  self.args.plots &= trainer.stopper.possible_stop or (trainer.epoch == trainer.epochs - 1)
121
121
  model.eval()
122
122
  else:
123
- if str(self.args.model).endswith(".yaml"):
123
+ if str(self.args.model).endswith(".yaml") and model is None:
124
124
  LOGGER.warning("WARNING ⚠️ validating an untrained model YAML will result in 0 mAP.")
125
125
  callbacks.add_integration_callbacks(self)
126
126
  model = AutoBackend(
@@ -685,11 +685,11 @@ class SAM2Model(torch.nn.Module):
685
685
  if prev is None:
686
686
  continue # skip padding frames
687
687
  # "maskmem_features" might have been offloaded to CPU in demo use cases,
688
- # so we load it back to GPU (it's a no-op if it's already on GPU).
689
- feats = prev["maskmem_features"].cuda(non_blocking=True)
688
+ # so we load it back to inference device (it's a no-op if it's already on device).
689
+ feats = prev["maskmem_features"].to(device=device, non_blocking=True)
690
690
  to_cat_memory.append(feats.flatten(2).permute(2, 0, 1))
691
691
  # Spatial positional encoding (it might have been offloaded to CPU in eval)
692
- maskmem_enc = prev["maskmem_pos_enc"][-1].cuda()
692
+ maskmem_enc = prev["maskmem_pos_enc"][-1].to(device=device)
693
693
  maskmem_enc = maskmem_enc.flatten(2).permute(2, 0, 1)
694
694
  # Temporal positional encoding
695
695
  maskmem_enc = maskmem_enc + self.maskmem_tpos_enc[self.num_maskmem - t_pos - 1]
@@ -74,7 +74,7 @@ class DetectionValidator(BaseValidator):
74
74
  and (val.endswith(f"{os.sep}val2017.txt") or val.endswith(f"{os.sep}test-dev2017.txt"))
75
75
  ) # is COCO
76
76
  self.is_lvis = isinstance(val, str) and "lvis" in val and not self.is_coco # is LVIS
77
- self.class_map = converter.coco80_to_coco91_class() if self.is_coco else list(range(len(model.names)))
77
+ self.class_map = converter.coco80_to_coco91_class() if self.is_coco else list(range(1, len(model.names) + 1))
78
78
  self.args.save_json |= self.args.val and (self.is_coco or self.is_lvis) and not self.training # run final val
79
79
  self.names = model.names
80
80
  self.nc = len(model.names)
@@ -288,8 +288,7 @@ class DetectionValidator(BaseValidator):
288
288
  self.jdict.append(
289
289
  {
290
290
  "image_id": image_id,
291
- "category_id": self.class_map[int(p[5])]
292
- + (1 if self.is_lvis else 0), # index starts from 1 if it's lvis
291
+ "category_id": self.class_map[int(p[5])],
293
292
  "bbox": [round(x, 3) for x in b],
294
293
  "score": round(p[4], 5),
295
294
  }
@@ -39,4 +39,6 @@ class OBBTrainer(yolo.detect.DetectionTrainer):
39
39
  def get_validator(self):
40
40
  """Return an instance of OBBValidator for validation of YOLO model."""
41
41
  self.loss_names = "box_loss", "cls_loss", "dfl_loss"
42
- return yolo.obb.OBBValidator(self.test_loader, save_dir=self.save_dir, args=copy(self.args))
42
+ return yolo.obb.OBBValidator(
43
+ self.test_loader, save_dir=self.save_dir, args=copy(self.args), _callbacks=self.callbacks
44
+ )
@@ -160,7 +160,7 @@ class OBBValidator(DetectionValidator):
160
160
  for d in data:
161
161
  image_id = d["image_id"]
162
162
  score = d["score"]
163
- classname = self.names[d["category_id"]].replace(" ", "-")
163
+ classname = self.names[d["category_id"] - 1].replace(" ", "-")
164
164
  p = d["poly"]
165
165
 
166
166
  with open(f'{pred_txt / f"Task1_{classname}"}.txt', "a") as f:
@@ -175,7 +175,7 @@ class OBBValidator(DetectionValidator):
175
175
  image_id = d["image_id"].split("__")[0]
176
176
  pattern = re.compile(r"\d+___\d+")
177
177
  x, y = (int(c) for c in re.findall(pattern, d["image_id"])[0].split("___"))
178
- bbox, score, cls = d["rbox"], d["score"], d["category_id"]
178
+ bbox, score, cls = d["rbox"], d["score"], d["category_id"] - 1
179
179
  bbox[0] += x
180
180
  bbox[1] += y
181
181
  bbox.extend([score, cls])
@@ -434,6 +434,7 @@ def check_torchvision():
434
434
  """
435
435
  # Compatibility table
436
436
  compatibility_table = {
437
+ "2.5": ["0.20"],
437
438
  "2.4": ["0.19"],
438
439
  "2.3": ["0.18"],
439
440
  "2.2": ["0.17"],
@@ -7,7 +7,7 @@ from typing import List
7
7
 
8
8
  import numpy as np
9
9
 
10
- from .ops import ltwh2xywh, ltwh2xyxy, xywh2ltwh, xywh2xyxy, xyxy2ltwh, xyxy2xywh
10
+ from .ops import ltwh2xywh, ltwh2xyxy, resample_segments, xywh2ltwh, xywh2xyxy, xyxy2ltwh, xyxy2xywh
11
11
 
12
12
 
13
13
  def _ntuple(n):
@@ -406,7 +406,20 @@ class Instances:
406
406
  normalized = instances_list[0].normalized
407
407
 
408
408
  cat_boxes = np.concatenate([ins.bboxes for ins in instances_list], axis=axis)
409
- cat_segments = np.concatenate([b.segments for b in instances_list], axis=axis)
409
+ seg_len = [b.segments.shape[1] for b in instances_list]
410
+ if len(set(seg_len)) > 1: # resample segments if there's different length
411
+ max_len = max(seg_len)
412
+ cat_segments = np.concatenate(
413
+ [
414
+ resample_segments(list(b.segments), max_len)
415
+ if len(b.segments)
416
+ else np.zeros((0, max_len, 2), dtype=np.float32) # re-generating empty segments
417
+ for b in instances_list
418
+ ],
419
+ axis=axis,
420
+ )
421
+ else:
422
+ cat_segments = np.concatenate([b.segments for b in instances_list], axis=axis)
410
423
  cat_keypoints = np.concatenate([b.keypoints for b in instances_list], axis=axis) if use_keypoint else None
411
424
  return cls(cat_boxes, cat_segments, cat_keypoints, bbox_format, normalized)
412
425
 
@@ -624,6 +624,8 @@ def resample_segments(segments, n=1000):
624
624
  segments (list): the resampled segments.
625
625
  """
626
626
  for i, s in enumerate(segments):
627
+ if len(s) == n:
628
+ continue
627
629
  s = np.concatenate((s, s[0:1, :]), axis=0)
628
630
  x = np.linspace(0, len(s) - 1, n - len(s) if len(s) < n else n)
629
631
  xp = np.arange(len(s))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.48
3
+ Version: 8.3.50
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