ultralytics 8.3.140__tar.gz → 8.3.141__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 (277) hide show
  1. {ultralytics-8.3.140/ultralytics.egg-info → ultralytics-8.3.141}/PKG-INFO +1 -1
  2. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_cuda.py +1 -1
  3. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_solutions.py +3 -2
  4. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/__init__.py +1 -1
  5. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/open-images-v7.yaml +4 -7
  6. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/model.py +6 -3
  7. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/classify/predict.py +1 -1
  8. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/model.py +7 -1
  9. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/autodevice.py +9 -7
  10. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/loss.py +1 -2
  11. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/tal.py +3 -6
  12. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/torch_utils.py +1 -1
  13. {ultralytics-8.3.140 → ultralytics-8.3.141/ultralytics.egg-info}/PKG-INFO +1 -1
  14. {ultralytics-8.3.140 → ultralytics-8.3.141}/LICENSE +0 -0
  15. {ultralytics-8.3.140 → ultralytics-8.3.141}/README.md +0 -0
  16. {ultralytics-8.3.140 → ultralytics-8.3.141}/pyproject.toml +0 -0
  17. {ultralytics-8.3.140 → ultralytics-8.3.141}/setup.cfg +0 -0
  18. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/__init__.py +0 -0
  19. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/conftest.py +0 -0
  20. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_cli.py +0 -0
  21. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_engine.py +0 -0
  22. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_exports.py +0 -0
  23. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_integrations.py +0 -0
  24. {ultralytics-8.3.140 → ultralytics-8.3.141}/tests/test_python.py +0 -0
  25. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/assets/bus.jpg +0 -0
  26. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/assets/zidane.jpg +0 -0
  27. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/__init__.py +0 -0
  28. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  29. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  30. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  31. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  32. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  33. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  34. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  35. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  36. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  37. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  38. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  39. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  40. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  41. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  42. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco.yaml +0 -0
  43. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  44. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  45. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  46. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  47. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  48. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  49. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  50. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  51. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  52. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  53. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  54. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  55. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  56. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  57. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/signature.yaml +0 -0
  58. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  59. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/datasets/xView.yaml +0 -0
  60. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/default.yaml +0 -0
  61. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  62. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  63. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  64. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  65. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  66. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  67. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  68. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  69. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  70. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  71. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  72. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  73. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  74. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  75. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  76. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  77. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  78. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  79. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  80. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  81. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  82. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  83. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  84. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  85. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  86. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  87. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  88. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  89. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  90. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  91. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  92. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  93. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  94. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  95. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  96. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  97. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  98. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  99. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  100. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  101. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  102. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  103. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  104. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  105. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  106. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  107. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  108. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  109. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  110. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  111. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  112. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  113. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  114. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  115. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  116. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  117. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  118. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/__init__.py +0 -0
  119. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/annotator.py +0 -0
  120. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/augment.py +0 -0
  121. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/base.py +0 -0
  122. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/build.py +0 -0
  123. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/converter.py +0 -0
  124. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/dataset.py +0 -0
  125. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/loaders.py +0 -0
  126. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/scripts/download_weights.sh +0 -0
  127. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/scripts/get_coco.sh +0 -0
  128. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/scripts/get_coco128.sh +0 -0
  129. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  130. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/split.py +0 -0
  131. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/split_dota.py +0 -0
  132. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/data/utils.py +0 -0
  133. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/__init__.py +0 -0
  134. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/exporter.py +0 -0
  135. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/predictor.py +0 -0
  136. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/results.py +0 -0
  137. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/trainer.py +0 -0
  138. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/tuner.py +0 -0
  139. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/engine/validator.py +0 -0
  140. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/hub/__init__.py +0 -0
  141. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/hub/auth.py +0 -0
  142. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/hub/google/__init__.py +0 -0
  143. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/hub/session.py +0 -0
  144. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/hub/utils.py +0 -0
  145. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/__init__.py +0 -0
  146. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/fastsam/__init__.py +0 -0
  147. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/fastsam/model.py +0 -0
  148. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/fastsam/predict.py +0 -0
  149. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/fastsam/utils.py +0 -0
  150. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/fastsam/val.py +0 -0
  151. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/nas/__init__.py +0 -0
  152. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/nas/model.py +0 -0
  153. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/nas/predict.py +0 -0
  154. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/nas/val.py +0 -0
  155. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/rtdetr/__init__.py +0 -0
  156. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/rtdetr/model.py +0 -0
  157. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/rtdetr/predict.py +0 -0
  158. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/rtdetr/train.py +0 -0
  159. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/rtdetr/val.py +0 -0
  160. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/__init__.py +0 -0
  161. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/amg.py +0 -0
  162. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/build.py +0 -0
  163. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/model.py +0 -0
  164. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/__init__.py +0 -0
  165. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/blocks.py +0 -0
  166. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/decoders.py +0 -0
  167. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/encoders.py +0 -0
  168. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  169. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/sam.py +0 -0
  170. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  171. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/transformer.py +0 -0
  172. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/modules/utils.py +0 -0
  173. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/sam/predict.py +0 -0
  174. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/utils/__init__.py +0 -0
  175. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/utils/loss.py +0 -0
  176. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/utils/ops.py +0 -0
  177. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/__init__.py +0 -0
  178. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/classify/__init__.py +0 -0
  179. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/classify/train.py +0 -0
  180. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/classify/val.py +0 -0
  181. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/detect/__init__.py +0 -0
  182. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/detect/predict.py +0 -0
  183. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/detect/train.py +0 -0
  184. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/detect/val.py +0 -0
  185. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/obb/__init__.py +0 -0
  186. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/obb/predict.py +0 -0
  187. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/obb/train.py +0 -0
  188. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/obb/val.py +0 -0
  189. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/pose/__init__.py +0 -0
  190. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/pose/predict.py +0 -0
  191. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/pose/train.py +0 -0
  192. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/pose/val.py +0 -0
  193. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/segment/__init__.py +0 -0
  194. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/segment/predict.py +0 -0
  195. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/segment/train.py +0 -0
  196. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/segment/val.py +0 -0
  197. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/world/__init__.py +0 -0
  198. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/world/train.py +0 -0
  199. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/world/train_world.py +0 -0
  200. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  201. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  202. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/yoloe/train.py +0 -0
  203. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  204. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/models/yolo/yoloe/val.py +0 -0
  205. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/__init__.py +0 -0
  206. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/autobackend.py +0 -0
  207. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/__init__.py +0 -0
  208. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/activation.py +0 -0
  209. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/block.py +0 -0
  210. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/conv.py +0 -0
  211. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/head.py +0 -0
  212. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/transformer.py +0 -0
  213. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/modules/utils.py +0 -0
  214. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/tasks.py +0 -0
  215. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/nn/text_model.py +0 -0
  216. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/__init__.py +0 -0
  217. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/ai_gym.py +0 -0
  218. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/analytics.py +0 -0
  219. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/config.py +0 -0
  220. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/distance_calculation.py +0 -0
  221. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/heatmap.py +0 -0
  222. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/instance_segmentation.py +0 -0
  223. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/object_blurrer.py +0 -0
  224. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/object_counter.py +0 -0
  225. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/object_cropper.py +0 -0
  226. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/parking_management.py +0 -0
  227. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/queue_management.py +0 -0
  228. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/region_counter.py +0 -0
  229. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/security_alarm.py +0 -0
  230. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/similarity_search.py +0 -0
  231. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/solutions.py +0 -0
  232. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/speed_estimation.py +0 -0
  233. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/streamlit_inference.py +0 -0
  234. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/templates/similarity-search.html +0 -0
  235. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/trackzone.py +0 -0
  236. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/solutions/vision_eye.py +0 -0
  237. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/__init__.py +0 -0
  238. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/basetrack.py +0 -0
  239. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/bot_sort.py +0 -0
  240. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/byte_tracker.py +0 -0
  241. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/track.py +0 -0
  242. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/utils/__init__.py +0 -0
  243. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/utils/gmc.py +0 -0
  244. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  245. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/trackers/utils/matching.py +0 -0
  246. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/__init__.py +0 -0
  247. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/autobatch.py +0 -0
  248. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/benchmarks.py +0 -0
  249. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/__init__.py +0 -0
  250. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/base.py +0 -0
  251. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/clearml.py +0 -0
  252. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/comet.py +0 -0
  253. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/dvc.py +0 -0
  254. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/hub.py +0 -0
  255. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/mlflow.py +0 -0
  256. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/neptune.py +0 -0
  257. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/raytune.py +0 -0
  258. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  259. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/callbacks/wb.py +0 -0
  260. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/checks.py +0 -0
  261. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/dist.py +0 -0
  262. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/downloads.py +0 -0
  263. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/errors.py +0 -0
  264. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/export.py +0 -0
  265. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/files.py +0 -0
  266. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/instance.py +0 -0
  267. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/metrics.py +0 -0
  268. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/ops.py +0 -0
  269. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/patches.py +0 -0
  270. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/plotting.py +0 -0
  271. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/triton.py +0 -0
  272. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics/utils/tuner.py +0 -0
  273. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics.egg-info/SOURCES.txt +0 -0
  274. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics.egg-info/dependency_links.txt +0 -0
  275. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics.egg-info/entry_points.txt +0 -0
  276. {ultralytics-8.3.140 → ultralytics-8.3.141}/ultralytics.egg-info/requires.txt +0 -0
  277. {ultralytics-8.3.140 → ultralytics-8.3.141}/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.140
3
+ Version: 8.3.141
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>
@@ -22,7 +22,7 @@ if CUDA_IS_AVAILABLE:
22
22
  else:
23
23
  gpu_info = GPUInfo()
24
24
  gpu_info.print_status()
25
- idle_gpus = gpu_info.select_idle_gpu(count=2, min_memory_mb=2048)
25
+ idle_gpus = gpu_info.select_idle_gpu(count=2, min_memory_fraction=0.2)
26
26
  if idle_gpus:
27
27
  DEVICES = idle_gpus
28
28
 
@@ -205,12 +205,12 @@ def test_solution(name, solution_class, needs_frame_count, video, kwargs):
205
205
  )
206
206
 
207
207
 
208
- @pytest.mark.slow
209
208
  @pytest.mark.skipif(checks.IS_PYTHON_3_8, reason="Disabled due to unsupported CLIP dependencies.")
210
209
  @pytest.mark.skipif(IS_RASPBERRYPI, reason="Disabled due to slow performance on Raspberry Pi.")
211
210
  def test_similarity_search():
212
211
  """Test similarity search solution."""
213
- searcher = solutions.VisualAISearch()
212
+ safe_download(f"{ASSETS_URL}/4-imgs-similaritysearch.zip", dir=TMP) # 4 dog images for testing in a zip file.
213
+ searcher = solutions.VisualAISearch(data=str(TMP / "4-imgs-similaritysearch"))
214
214
  _ = searcher("a dog sitting on a bench") # Returns the results in format "- img name | similarity score"
215
215
 
216
216
 
@@ -297,6 +297,7 @@ def test_streamlit_handle_video_upload_creates_file():
297
297
  os.remove("ultralytics.mp4")
298
298
 
299
299
 
300
+ @pytest.mark.skipif(checks.IS_PYTHON_3_8, reason="Disabled due to unsupported CLIP dependencies.")
300
301
  @pytest.mark.skipif(IS_RASPBERRYPI, reason="Disabled due to slow performance on Raspberry Pi.")
301
302
  def test_similarity_search_app_init():
302
303
  """Test SearchApp initializes with required attributes."""
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.140"
3
+ __version__ = "8.3.141"
4
4
 
5
5
  import os
6
6
 
@@ -622,21 +622,18 @@ names:
622
622
  download: |
623
623
  import warnings
624
624
 
625
- from ultralytics.utils import LOGGER, SETTINGS, Path, get_ubuntu_version, is_ubuntu
626
- from ultralytics.utils.checks import check_requirements, check_version
625
+ from ultralytics.utils import LOGGER, SETTINGS, Path
626
+ from ultralytics.utils.checks import check_requirements
627
627
 
628
628
  check_requirements("fiftyone")
629
- if is_ubuntu() and check_version(get_ubuntu_version(), ">=22.04"):
630
- # Ubuntu>=22.04 patch https://github.com/voxel51/fiftyone/issues/2961#issuecomment-1666519347
631
- check_requirements("fiftyone-db-ubuntu2204")
632
-
629
+
633
630
  import fiftyone as fo
634
631
  import fiftyone.zoo as foz
635
632
 
636
633
  name = "open-images-v7"
637
634
  fo.config.dataset_zoo_dir = Path(SETTINGS["datasets_dir"]) / "fiftyone" / name
638
635
  fraction = 1.0 # fraction of full dataset to use
639
- LOGGER.warning("WARNING ⚠️ Open Images V7 dataset requires at least **561 GB of free space. Starting download...")
636
+ LOGGER.warning("Open Images V7 dataset requires at least **561 GB of free space. Starting download...")
640
637
  for split in "train", "validation": # 1743042 train, 41620 val images
641
638
  train = split == "train"
642
639
 
@@ -79,7 +79,7 @@ class Model(torch.nn.Module):
79
79
 
80
80
  def __init__(
81
81
  self,
82
- model: Union[str, Path] = "yolo11n.pt",
82
+ model: Union[str, Path, "Model"] = "yolo11n.pt",
83
83
  task: str = None,
84
84
  verbose: bool = False,
85
85
  ) -> None:
@@ -92,8 +92,8 @@ class Model(torch.nn.Module):
92
92
  prediction, or export.
93
93
 
94
94
  Args:
95
- model (str | Path): Path or name of the model to load or create. Can be a local file path, a
96
- model name from Ultralytics HUB, or a Triton Server model.
95
+ model (str | Path | Model): Path or name of the model to load or create. Can be a local file path, a
96
+ model name from Ultralytics HUB, a Triton Server model, or an already initialized Model instance.
97
97
  task (str | None): The task type associated with the YOLO model, specifying its application domain.
98
98
  verbose (bool): If True, enables verbose output during the model's initialization and subsequent
99
99
  operations.
@@ -108,6 +108,9 @@ class Model(torch.nn.Module):
108
108
  >>> model = Model("path/to/model.yaml", task="detect")
109
109
  >>> model = Model("hub_model", verbose=True)
110
110
  """
111
+ if isinstance(model, Model):
112
+ self.__dict__ = model.__dict__ # accepts an already initialized Model
113
+ return
111
114
  super().__init__()
112
115
  self.callbacks = callbacks.get_default_callbacks()
113
116
  self.predictor = None # reuse predictor
@@ -57,7 +57,7 @@ class ClassificationPredictor(BasePredictor):
57
57
  super().setup_source(source)
58
58
  updated = (
59
59
  self.model.model.transforms.transforms[0].size != max(self.imgsz)
60
- if hasattr(self.model.model, "transforms")
60
+ if hasattr(self.model.model, "transforms") and hasattr(self.model.model.transforms.transforms[0], "size")
61
61
  else True
62
62
  )
63
63
  self.transforms = self.model.model.transforms if not updated else classify_transforms(self.imgsz)
@@ -39,7 +39,7 @@ class YOLO(Model):
39
39
  >>> model = YOLO("yolo11n.pt") # load a pretrained YOLOv11n detection model
40
40
  >>> model = YOLO("yolo11n-seg.pt") # load a pretrained YOLO11n segmentation model
41
41
  """
42
- path = Path(model)
42
+ path = Path(model if isinstance(model, (str, Path)) else "")
43
43
  if "-world" in path.stem and path.suffix in {".pt", ".yaml", ".yml"}: # if YOLOWorld PyTorch model
44
44
  new_instance = YOLOWorld(path, verbose=verbose)
45
45
  self.__class__ = type(new_instance)
@@ -51,6 +51,12 @@ class YOLO(Model):
51
51
  else:
52
52
  # Continue with default YOLO initialization
53
53
  super().__init__(model=model, task=task, verbose=verbose)
54
+ if hasattr(self.model, "model") and "RTDETR" in self.model.model[-1]._get_name(): # if RTDETR head
55
+ from ultralytics import RTDETR
56
+
57
+ new_instance = RTDETR(self)
58
+ self.__class__ = type(new_instance)
59
+ self.__dict__ = new_instance.__dict__
54
60
 
55
61
  @property
56
62
  def task_map(self):
@@ -116,13 +116,13 @@ class GPUInfo:
116
116
 
117
117
  LOGGER.info(f"{'-' * len(hdr)}\n")
118
118
 
119
- def select_idle_gpu(self, count=1, min_memory_mb=0):
119
+ def select_idle_gpu(self, count=1, min_memory_fraction=0):
120
120
  """
121
121
  Selects the 'count' most idle GPUs based on utilization and free memory.
122
122
 
123
123
  Args:
124
124
  count (int): The number of idle GPUs to select. Defaults to 1.
125
- min_memory_mb (int): Minimum free memory required (MiB). Defaults to 0.
125
+ min_memory_fraction (float): Minimum free memory required (fraction). Defaults to 0.
126
126
 
127
127
  Returns:
128
128
  (list[int]): Indices of the selected GPUs, sorted by idleness.
@@ -131,7 +131,8 @@ class GPUInfo:
131
131
  Returns fewer than 'count' if not enough qualify or exist.
132
132
  Returns basic CUDA indices if NVML fails. Empty list if no GPUs found.
133
133
  """
134
- LOGGER.info(f"Searching for {count} idle GPUs with >= {min_memory_mb} MiB free memory...")
134
+ assert min_memory_fraction <= 1.0, f"min_memory_fraction must be <= 1.0, got {min_memory_fraction}"
135
+ LOGGER.info(f"Searching for {count} idle GPUs with >= {min_memory_fraction * 100:.1f}% free memory...")
135
136
 
136
137
  if count <= 0:
137
138
  return []
@@ -145,7 +146,8 @@ class GPUInfo:
145
146
  eligible_gpus = [
146
147
  gpu
147
148
  for gpu in self.gpu_stats
148
- if gpu.get("memory_free", -1) >= min_memory_mb and gpu.get("utilization", -1) != -1
149
+ if gpu.get("memory_free", 0) / gpu.get("memory_total", 1) >= min_memory_fraction
150
+ and gpu.get("utilization", -1) != -1
149
151
  ]
150
152
  eligible_gpus.sort(key=lambda x: (x.get("utilization", 101), -x.get("memory_free", 0)))
151
153
 
@@ -155,19 +157,19 @@ class GPUInfo:
155
157
  if selected:
156
158
  LOGGER.info(f"Selected idle CUDA devices {selected}")
157
159
  else:
158
- LOGGER.warning(f"No GPUs met criteria (Util != -1, Free Mem >= {min_memory_mb} MiB).")
160
+ LOGGER.warning(f"No GPUs met criteria (Util != -1, Free Mem >= {min_memory_fraction * 100:.1f}%).")
159
161
 
160
162
  return selected
161
163
 
162
164
 
163
165
  if __name__ == "__main__":
164
- required_free_mem = 2048 # Require 2GB free VRAM
166
+ required_free_mem_fraction = 0.2 # Require 20% free VRAM
165
167
  num_gpus_to_select = 1
166
168
 
167
169
  gpu_info = GPUInfo()
168
170
  gpu_info.print_status()
169
171
 
170
- selected = gpu_info.select_idle_gpu(count=num_gpus_to_select, min_memory_mb=required_free_mem)
172
+ selected = gpu_info.select_idle_gpu(count=num_gpus_to_select, min_memory_fraction=required_free_mem_fraction)
171
173
  if selected:
172
174
  print(f"\n==> Using selected GPU indices: {selected}")
173
175
  devices = [f"cuda:{idx}" for idx in selected]
@@ -613,8 +613,7 @@ class v8ClassificationLoss:
613
613
  """Compute the classification loss between predictions and true labels."""
614
614
  preds = preds[1] if isinstance(preds, (list, tuple)) else preds
615
615
  loss = F.cross_entropy(preds, batch["cls"], reduction="mean")
616
- loss_items = loss.detach()
617
- return loss, loss_items
616
+ return loss, loss.detach()
618
617
 
619
618
 
620
619
  class v8OBBLoss(v8DetectionLoss):
@@ -21,7 +21,6 @@ class TaskAlignedAssigner(nn.Module):
21
21
  Attributes:
22
22
  topk (int): The number of top candidates to consider.
23
23
  num_classes (int): The number of object classes.
24
- bg_idx (int): Background class index.
25
24
  alpha (float): The alpha parameter for the classification component of the task-aligned metric.
26
25
  beta (float): The beta parameter for the localization component of the task-aligned metric.
27
26
  eps (float): A small value to prevent division by zero.
@@ -32,7 +31,6 @@ class TaskAlignedAssigner(nn.Module):
32
31
  super().__init__()
33
32
  self.topk = topk
34
33
  self.num_classes = num_classes
35
- self.bg_idx = num_classes
36
34
  self.alpha = alpha
37
35
  self.beta = beta
38
36
  self.eps = eps
@@ -66,7 +64,7 @@ class TaskAlignedAssigner(nn.Module):
66
64
 
67
65
  if self.n_max_boxes == 0:
68
66
  return (
69
- torch.full_like(pd_scores[..., 0], self.bg_idx),
67
+ torch.full_like(pd_scores[..., 0], self.num_classes),
70
68
  torch.zeros_like(pd_bboxes),
71
69
  torch.zeros_like(pd_scores),
72
70
  torch.zeros_like(pd_scores[..., 0]),
@@ -193,7 +191,7 @@ class TaskAlignedAssigner(nn.Module):
193
191
  """
194
192
  return bbox_iou(gt_bboxes, pd_bboxes, xywh=False, CIoU=True).squeeze(-1).clamp_(0)
195
193
 
196
- def select_topk_candidates(self, metrics, largest=True, topk_mask=None):
194
+ def select_topk_candidates(self, metrics, topk_mask=None):
197
195
  """
198
196
  Select the top-k candidates based on the given metrics.
199
197
 
@@ -201,7 +199,6 @@ class TaskAlignedAssigner(nn.Module):
201
199
  metrics (torch.Tensor): A tensor of shape (b, max_num_obj, h*w), where b is the batch size,
202
200
  max_num_obj is the maximum number of objects, and h*w represents the
203
201
  total number of anchor points.
204
- largest (bool): If True, select the largest values; otherwise, select the smallest values.
205
202
  topk_mask (torch.Tensor): An optional boolean tensor of shape (b, max_num_obj, topk), where
206
203
  topk is the number of top candidates to consider. If not provided,
207
204
  the top-k values are automatically computed based on the given metrics.
@@ -210,7 +207,7 @@ class TaskAlignedAssigner(nn.Module):
210
207
  (torch.Tensor): A tensor of shape (b, max_num_obj, h*w) containing the selected top-k candidates.
211
208
  """
212
209
  # (b, max_num_obj, topk)
213
- topk_metrics, topk_idxs = torch.topk(metrics, self.topk, dim=-1, largest=largest)
210
+ topk_metrics, topk_idxs = torch.topk(metrics, self.topk, dim=-1, largest=True)
214
211
  if topk_mask is None:
215
212
  topk_mask = (topk_metrics.max(-1, keepdim=True)[0] > self.eps).expand_as(topk_idxs)
216
213
  # (b, max_num_obj, topk)
@@ -174,7 +174,7 @@ def select_device(device="", batch=0, newline=False, verbose=True):
174
174
 
175
175
  # Replace each -1 with a selected GPU or remove it
176
176
  parts = device.split(",")
177
- selected = GPUInfo().select_idle_gpu(count=parts.count("-1"), min_memory_mb=2048)
177
+ selected = GPUInfo().select_idle_gpu(count=parts.count("-1"), min_memory_fraction=0.2)
178
178
  for i in range(len(parts)):
179
179
  if parts[i] == "-1":
180
180
  parts[i] = str(selected.pop(0)) if selected else ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.140
3
+ Version: 8.3.141
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