ultralytics 8.3.215__tar.gz → 8.3.217__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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

Files changed (288) hide show
  1. {ultralytics-8.3.215 → ultralytics-8.3.217}/PKG-INFO +1 -1
  2. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco-pose.yaml +21 -0
  4. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-pose.yaml +21 -0
  5. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dog-pose.yaml +28 -0
  6. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/hand-keypoints.yaml +25 -0
  7. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/tiger-pose.yaml +16 -0
  8. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/build.py +11 -2
  9. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/exporter.py +2 -0
  10. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/results.py +1 -1
  11. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/build.py +3 -2
  12. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/val.py +7 -1
  13. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/train.py +5 -0
  14. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/val.py +1 -1
  15. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/autobackend.py +7 -2
  16. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/ops.py +8 -13
  17. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/plotting.py +14 -7
  18. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/PKG-INFO +1 -1
  19. {ultralytics-8.3.215 → ultralytics-8.3.217}/LICENSE +0 -0
  20. {ultralytics-8.3.215 → ultralytics-8.3.217}/README.md +0 -0
  21. {ultralytics-8.3.215 → ultralytics-8.3.217}/pyproject.toml +0 -0
  22. {ultralytics-8.3.215 → ultralytics-8.3.217}/setup.cfg +0 -0
  23. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/__init__.py +0 -0
  24. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/conftest.py +0 -0
  25. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_cli.py +0 -0
  26. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_cuda.py +0 -0
  27. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_engine.py +0 -0
  28. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_exports.py +0 -0
  29. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_integrations.py +0 -0
  30. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_python.py +0 -0
  31. {ultralytics-8.3.215 → ultralytics-8.3.217}/tests/test_solutions.py +0 -0
  32. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/assets/bus.jpg +0 -0
  33. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/assets/zidane.jpg +0 -0
  34. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/__init__.py +0 -0
  35. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  36. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  37. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  38. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  39. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  40. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  41. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  42. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  43. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  44. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  45. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  46. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  47. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  48. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco.yaml +0 -0
  49. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  50. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  51. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  52. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  53. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  54. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  55. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  56. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  57. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  58. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  59. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  60. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  61. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  62. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  63. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/signature.yaml +0 -0
  64. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/datasets/xView.yaml +0 -0
  65. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/default.yaml +0 -0
  66. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  67. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  68. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  69. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  70. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  71. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  72. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  73. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  74. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  75. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  76. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  77. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  78. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  79. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  80. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  81. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  82. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  83. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  84. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  85. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  86. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  87. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  88. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  89. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  90. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  91. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  92. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  93. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  94. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  95. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  96. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  97. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  98. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  99. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  100. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  101. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  102. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  103. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  104. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  105. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  106. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  107. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  108. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  109. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  110. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  111. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  112. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  113. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  114. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  115. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  116. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  117. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  118. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  119. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  120. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  121. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  122. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  123. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/__init__.py +0 -0
  124. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/annotator.py +0 -0
  125. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/augment.py +0 -0
  126. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/base.py +0 -0
  127. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/converter.py +0 -0
  128. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/dataset.py +0 -0
  129. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/loaders.py +0 -0
  130. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/download_weights.sh +0 -0
  131. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/get_coco.sh +0 -0
  132. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/get_coco128.sh +0 -0
  133. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  134. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/split.py +0 -0
  135. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/split_dota.py +0 -0
  136. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/data/utils.py +0 -0
  137. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/__init__.py +0 -0
  138. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/model.py +0 -0
  139. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/predictor.py +0 -0
  140. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/trainer.py +0 -0
  141. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/tuner.py +0 -0
  142. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/engine/validator.py +0 -0
  143. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/__init__.py +0 -0
  144. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/auth.py +0 -0
  145. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/google/__init__.py +0 -0
  146. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/session.py +0 -0
  147. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/hub/utils.py +0 -0
  148. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/__init__.py +0 -0
  149. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/__init__.py +0 -0
  150. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/model.py +0 -0
  151. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/predict.py +0 -0
  152. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/utils.py +0 -0
  153. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/fastsam/val.py +0 -0
  154. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/__init__.py +0 -0
  155. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/model.py +0 -0
  156. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/predict.py +0 -0
  157. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/nas/val.py +0 -0
  158. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/__init__.py +0 -0
  159. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/model.py +0 -0
  160. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/predict.py +0 -0
  161. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/train.py +0 -0
  162. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/rtdetr/val.py +0 -0
  163. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/__init__.py +0 -0
  164. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/amg.py +0 -0
  165. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/model.py +0 -0
  166. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/__init__.py +0 -0
  167. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/blocks.py +0 -0
  168. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/decoders.py +0 -0
  169. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/encoders.py +0 -0
  170. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  171. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/sam.py +0 -0
  172. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  173. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/transformer.py +0 -0
  174. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/modules/utils.py +0 -0
  175. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/sam/predict.py +0 -0
  176. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/utils/__init__.py +0 -0
  177. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/utils/loss.py +0 -0
  178. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/utils/ops.py +0 -0
  179. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/__init__.py +0 -0
  180. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/__init__.py +0 -0
  181. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/predict.py +0 -0
  182. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/train.py +0 -0
  183. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/classify/val.py +0 -0
  184. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/__init__.py +0 -0
  185. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/predict.py +0 -0
  186. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/detect/train.py +0 -0
  187. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/model.py +0 -0
  188. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/__init__.py +0 -0
  189. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/predict.py +0 -0
  190. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/train.py +0 -0
  191. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/obb/val.py +0 -0
  192. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/__init__.py +0 -0
  193. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/predict.py +0 -0
  194. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/pose/val.py +0 -0
  195. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/__init__.py +0 -0
  196. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/predict.py +0 -0
  197. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/segment/train.py +0 -0
  198. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/world/__init__.py +0 -0
  199. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/world/train.py +0 -0
  200. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/world/train_world.py +0 -0
  201. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  202. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  203. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/train.py +0 -0
  204. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  205. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/models/yolo/yoloe/val.py +0 -0
  206. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/__init__.py +0 -0
  207. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/__init__.py +0 -0
  208. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/activation.py +0 -0
  209. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/block.py +0 -0
  210. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/conv.py +0 -0
  211. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/head.py +0 -0
  212. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/transformer.py +0 -0
  213. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/modules/utils.py +0 -0
  214. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/tasks.py +0 -0
  215. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/nn/text_model.py +0 -0
  216. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/py.typed +0 -0
  217. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/__init__.py +0 -0
  218. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/ai_gym.py +0 -0
  219. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/analytics.py +0 -0
  220. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/config.py +0 -0
  221. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/distance_calculation.py +0 -0
  222. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/heatmap.py +0 -0
  223. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/instance_segmentation.py +0 -0
  224. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/object_blurrer.py +0 -0
  225. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/object_counter.py +0 -0
  226. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/object_cropper.py +0 -0
  227. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/parking_management.py +0 -0
  228. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/queue_management.py +0 -0
  229. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/region_counter.py +0 -0
  230. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/security_alarm.py +0 -0
  231. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/similarity_search.py +0 -0
  232. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/solutions.py +0 -0
  233. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/speed_estimation.py +0 -0
  234. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/streamlit_inference.py +0 -0
  235. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/templates/similarity-search.html +0 -0
  236. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/trackzone.py +0 -0
  237. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/solutions/vision_eye.py +0 -0
  238. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/__init__.py +0 -0
  239. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/basetrack.py +0 -0
  240. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/bot_sort.py +0 -0
  241. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/byte_tracker.py +0 -0
  242. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/track.py +0 -0
  243. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/__init__.py +0 -0
  244. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/gmc.py +0 -0
  245. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  246. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/trackers/utils/matching.py +0 -0
  247. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/__init__.py +0 -0
  248. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/autobatch.py +0 -0
  249. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/autodevice.py +0 -0
  250. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/benchmarks.py +0 -0
  251. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/__init__.py +0 -0
  252. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/base.py +0 -0
  253. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/clearml.py +0 -0
  254. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/comet.py +0 -0
  255. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/dvc.py +0 -0
  256. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/hub.py +0 -0
  257. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/mlflow.py +0 -0
  258. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/neptune.py +0 -0
  259. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/platform.py +0 -0
  260. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/raytune.py +0 -0
  261. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  262. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/callbacks/wb.py +0 -0
  263. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/checks.py +0 -0
  264. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/cpu.py +0 -0
  265. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/dist.py +0 -0
  266. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/downloads.py +0 -0
  267. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/errors.py +0 -0
  268. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/events.py +0 -0
  269. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/export/__init__.py +0 -0
  270. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/export/imx.py +0 -0
  271. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/files.py +0 -0
  272. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/git.py +0 -0
  273. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/instance.py +0 -0
  274. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/logger.py +0 -0
  275. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/loss.py +0 -0
  276. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/metrics.py +0 -0
  277. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/nms.py +0 -0
  278. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/patches.py +0 -0
  279. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/tal.py +0 -0
  280. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/torch_utils.py +0 -0
  281. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/tqdm.py +0 -0
  282. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/triton.py +0 -0
  283. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics/utils/tuner.py +0 -0
  284. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/SOURCES.txt +0 -0
  285. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/dependency_links.txt +0 -0
  286. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/entry_points.txt +0 -0
  287. {ultralytics-8.3.215 → ultralytics-8.3.217}/ultralytics.egg-info/requires.txt +0 -0
  288. {ultralytics-8.3.215 → ultralytics-8.3.217}/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.215
3
+ Version: 8.3.217
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 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.215"
3
+ __version__ = "8.3.217"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -22,6 +22,27 @@ flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
22
22
  names:
23
23
  0: person
24
24
 
25
+ # Keypoint names per class
26
+ kpt_names:
27
+ 0:
28
+ - nose
29
+ - left_eye
30
+ - right_eye
31
+ - left_ear
32
+ - right_ear
33
+ - left_shoulder
34
+ - right_shoulder
35
+ - left_elbow
36
+ - right_elbow
37
+ - left_wrist
38
+ - right_wrist
39
+ - left_hip
40
+ - right_hip
41
+ - left_knee
42
+ - right_knee
43
+ - left_ankle
44
+ - right_ankle
45
+
25
46
  # Download script/URL (optional)
26
47
  download: |
27
48
  from pathlib import Path
@@ -22,5 +22,26 @@ flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
22
22
  names:
23
23
  0: person
24
24
 
25
+ # Keypoint names per class
26
+ kpt_names:
27
+ 0:
28
+ - nose
29
+ - left_eye
30
+ - right_eye
31
+ - left_ear
32
+ - right_ear
33
+ - left_shoulder
34
+ - right_shoulder
35
+ - left_elbow
36
+ - right_elbow
37
+ - left_wrist
38
+ - right_wrist
39
+ - left_hip
40
+ - right_hip
41
+ - left_knee
42
+ - right_knee
43
+ - left_ankle
44
+ - right_ankle
45
+
25
46
  # Download script/URL (optional)
26
47
  download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
@@ -20,5 +20,33 @@ kpt_shape: [24, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y
20
20
  names:
21
21
  0: dog
22
22
 
23
+ # Keypoint names per class
24
+ kpt_names:
25
+ 0:
26
+ - front_left_paw
27
+ - front_left_knee
28
+ - front_left_elbow
29
+ - rear_left_paw
30
+ - rear_left_knee
31
+ - rear_left_elbow
32
+ - front_right_paw
33
+ - front_right_knee
34
+ - front_right_elbow
35
+ - rear_right_paw
36
+ - rear_right_knee
37
+ - rear_right_elbow
38
+ - tail_start
39
+ - tail_end
40
+ - left_ear_base
41
+ - right_ear_base
42
+ - nose
43
+ - chin
44
+ - left_ear_tip
45
+ - right_ear_tip
46
+ - left_eye
47
+ - right_eye
48
+ - withers
49
+ - throat
50
+
23
51
  # Download script/URL (optional)
24
52
  download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dog-pose.zip
@@ -22,5 +22,30 @@ flip_idx:
22
22
  names:
23
23
  0: hand
24
24
 
25
+ # Keypoint names per class
26
+ kpt_names:
27
+ 0:
28
+ - wrist
29
+ - thumb_cmc
30
+ - thumb_mcp
31
+ - thumb_ip
32
+ - thumb_tip
33
+ - index_mcp
34
+ - index_pip
35
+ - index_dip
36
+ - index_tip
37
+ - middle_mcp
38
+ - middle_pip
39
+ - middle_dip
40
+ - middle_tip
41
+ - ring_mcp
42
+ - ring_pip
43
+ - ring_dip
44
+ - ring_tip
45
+ - pinky_mcp
46
+ - pinky_pip
47
+ - pinky_dip
48
+ - pinky_tip
49
+
25
50
  # Download script/URL (optional)
26
51
  download: https://github.com/ultralytics/assets/releases/download/v0.0.0/hand-keypoints.zip
@@ -21,5 +21,21 @@ flip_idx: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
21
21
  names:
22
22
  0: tiger
23
23
 
24
+ # Keypoint names per class
25
+ kpt_names:
26
+ 0:
27
+ - nose
28
+ - head
29
+ - withers
30
+ - tail_base
31
+ - right_hind_hock
32
+ - right_hind_paw
33
+ - left_hind_paw
34
+ - left_hind_hock
35
+ - right_front_wrist
36
+ - right_front_paw
37
+ - left_front_wrist
38
+ - left_front_paw
39
+
24
40
  # Download script/URL (optional)
25
41
  download: https://github.com/ultralytics/assets/releases/download/v0.0.0/tiger-pose.zip
@@ -181,7 +181,15 @@ def build_grounding(
181
181
  )
182
182
 
183
183
 
184
- def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, rank: int = -1, drop_last: bool = False):
184
+ def build_dataloader(
185
+ dataset,
186
+ batch: int,
187
+ workers: int,
188
+ shuffle: bool = True,
189
+ rank: int = -1,
190
+ drop_last: bool = False,
191
+ pin_memory: bool = True,
192
+ ):
185
193
  """
186
194
  Create and return an InfiniteDataLoader or DataLoader for training or validation.
187
195
 
@@ -192,6 +200,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
192
200
  shuffle (bool, optional): Whether to shuffle the dataset.
193
201
  rank (int, optional): Process rank in distributed training. -1 for single-GPU training.
194
202
  drop_last (bool, optional): Whether to drop the last incomplete batch.
203
+ pin_memory (bool, optional): Whether to use pinned memory for dataloader.
195
204
 
196
205
  Returns:
197
206
  (InfiniteDataLoader): A dataloader that can be used for training or validation.
@@ -214,7 +223,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
214
223
  num_workers=nw,
215
224
  sampler=sampler,
216
225
  prefetch_factor=4 if nw > 0 else None, # increase over default 2
217
- pin_memory=nd > 0,
226
+ pin_memory=nd > 0 and pin_memory,
218
227
  collate_fn=getattr(dataset, "collate_fn", None),
219
228
  worker_init_fn=seed_worker,
220
229
  generator=generator,
@@ -502,6 +502,8 @@ class Exporter:
502
502
  self.metadata["dla"] = dla # make sure `AutoBackend` uses correct dla device if it has one
503
503
  if model.task == "pose":
504
504
  self.metadata["kpt_shape"] = model.model[-1].kpt_shape
505
+ if hasattr(model, "kpt_names"):
506
+ self.metadata["kpt_names"] = model.kpt_names
505
507
 
506
508
  LOGGER.info(
507
509
  f"\n{colorstr('PyTorch:')} starting from '{file}' with input shape {tuple(im.shape)} BCHW and "
@@ -527,7 +527,7 @@ class Results(SimpleClass, DataExportMixin):
527
527
  """
528
528
  assert color_mode in {"instance", "class"}, f"Expected color_mode='instance' or 'class', not {color_mode}."
529
529
  if img is None and isinstance(self.orig_img, torch.Tensor):
530
- img = (self.orig_img[0].detach().permute(1, 2, 0).contiguous() * 255).to(torch.uint8).cpu().numpy()
530
+ img = (self.orig_img[0].detach().permute(1, 2, 0).contiguous() * 255).byte().cpu().numpy()
531
531
 
532
532
  names = self.names
533
533
  is_obb = self.obb is not None
@@ -11,6 +11,7 @@ from functools import partial
11
11
  import torch
12
12
 
13
13
  from ultralytics.utils.downloads import attempt_download_asset
14
+ from ultralytics.utils.torch_utils import TORCH_1_13
14
15
 
15
16
  from .modules.decoders import MaskDecoder
16
17
  from .modules.encoders import FpnNeck, Hiera, ImageEncoder, ImageEncoderViT, MemoryEncoder, PromptEncoder
@@ -207,7 +208,7 @@ def _build_sam(
207
208
  if checkpoint is not None:
208
209
  checkpoint = attempt_download_asset(checkpoint)
209
210
  with open(checkpoint, "rb") as f:
210
- state_dict = torch.load(f)
211
+ state_dict = torch.load(f, weights_only=False) if TORCH_1_13 else torch.load(f)
211
212
  sam.load_state_dict(state_dict)
212
213
  sam.eval()
213
214
  return sam
@@ -302,7 +303,7 @@ def _build_sam2(
302
303
  if checkpoint is not None:
303
304
  checkpoint = attempt_download_asset(checkpoint)
304
305
  with open(checkpoint, "rb") as f:
305
- state_dict = torch.load(f)["model"]
306
+ state_dict = (torch.load(f, weights_only=False) if TORCH_1_13 else torch.load(f))["model"]
306
307
  sam2.load_state_dict(state_dict)
307
308
  sam2.eval()
308
309
  return sam2
@@ -300,7 +300,13 @@ class DetectionValidator(BaseValidator):
300
300
  """
301
301
  dataset = self.build_dataset(dataset_path, batch=batch_size, mode="val")
302
302
  return build_dataloader(
303
- dataset, batch_size, self.args.workers, shuffle=False, rank=-1, drop_last=self.args.compile
303
+ dataset,
304
+ batch_size,
305
+ self.args.workers,
306
+ shuffle=False,
307
+ rank=-1,
308
+ drop_last=self.args.compile,
309
+ pin_memory=self.training,
304
310
  )
305
311
 
306
312
  def plot_val_samples(self, batch: dict[str, Any], ni: int) -> None:
@@ -91,6 +91,11 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
91
91
  """Set keypoints shape attribute of PoseModel."""
92
92
  super().set_model_attributes()
93
93
  self.model.kpt_shape = self.data["kpt_shape"]
94
+ kpt_names = self.data.get("kpt_names")
95
+ if not kpt_names:
96
+ names = list(map(str, range(self.model.kpt_shape[0])))
97
+ kpt_names = {i: names for i in range(self.model.nc)}
98
+ self.model.kpt_names = kpt_names
94
99
 
95
100
  def get_validator(self):
96
101
  """Return an instance of the PoseValidator class for validation."""
@@ -173,7 +173,7 @@ class SegmentationValidator(DetectionValidator):
173
173
  if gt_cls.shape[0] == 0 or preds["cls"].shape[0] == 0:
174
174
  tp_m = np.zeros((preds["cls"].shape[0], self.niou), dtype=bool)
175
175
  else:
176
- iou = mask_iou(batch["masks"].flatten(1), preds["masks"].flatten(1))
176
+ iou = mask_iou(batch["masks"].flatten(1), preds["masks"].flatten(1).float()) # float, uint8
177
177
  tp_m = self.match_predictions(preds["cls"], gt_cls, iou).cpu().numpy()
178
178
  tp.update({"tp_m": tp_m}) # update tp with mask IoU
179
179
  return tp
@@ -19,6 +19,7 @@ from PIL import Image
19
19
  from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML, is_jetson
20
20
  from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
21
21
  from ultralytics.utils.downloads import attempt_download_asset, is_url
22
+ from ultralytics.utils.nms import non_max_suppression
22
23
 
23
24
 
24
25
  def check_class_names(names: list | dict) -> dict[int, str]:
@@ -585,7 +586,7 @@ class AutoBackend(nn.Module):
585
586
  for k, v in metadata.items():
586
587
  if k in {"stride", "batch", "channels"}:
587
588
  metadata[k] = int(v)
588
- elif k in {"imgsz", "names", "kpt_shape", "args"} and isinstance(v, str):
589
+ elif k in {"imgsz", "names", "kpt_shape", "kpt_names", "args"} and isinstance(v, str):
589
590
  metadata[k] = eval(v)
590
591
  stride = metadata["stride"]
591
592
  task = metadata["task"]
@@ -593,6 +594,7 @@ class AutoBackend(nn.Module):
593
594
  imgsz = metadata["imgsz"]
594
595
  names = metadata["names"]
595
596
  kpt_shape = metadata.get("kpt_shape")
597
+ kpt_names = metadata.get("kpt_names")
596
598
  end2end = metadata.get("args", {}).get("nms", False)
597
599
  dynamic = metadata.get("args", {}).get("dynamic", dynamic)
598
600
  ch = metadata.get("channels", 3)
@@ -853,7 +855,10 @@ class AutoBackend(nn.Module):
853
855
  if any(warmup_types) and (self.device.type != "cpu" or self.triton):
854
856
  im = torch.empty(*imgsz, dtype=torch.half if self.fp16 else torch.float, device=self.device) # input
855
857
  for _ in range(2 if self.jit else 1):
856
- self.forward(im) # warmup
858
+ self.forward(im) # warmup model
859
+ warmup_boxes = torch.rand(1, 84, 16, device=self.device) # 16 boxes works best empirically
860
+ warmup_boxes[:, :4] *= imgsz[-1]
861
+ non_max_suppression(warmup_boxes) # warmup NMS
857
862
 
858
863
  @staticmethod
859
864
  def _model_type(p: str = "path/to/model.pt") -> list[bool]:
@@ -548,21 +548,16 @@ def process_mask(protos, masks_in, bboxes, shape, upsample: bool = False):
548
548
  are the height and width of the input image. The mask is applied to the bounding boxes.
549
549
  """
550
550
  c, mh, mw = protos.shape # CHW
551
- ih, iw = shape
552
551
  masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw) # CHW
553
- width_ratio = mw / iw
554
- height_ratio = mh / ih
555
552
 
556
- downsampled_bboxes = bboxes.clone()
557
- downsampled_bboxes[:, 0] *= width_ratio
558
- downsampled_bboxes[:, 2] *= width_ratio
559
- downsampled_bboxes[:, 3] *= height_ratio
560
- downsampled_bboxes[:, 1] *= height_ratio
553
+ width_ratio = mw / shape[1]
554
+ height_ratio = mh / shape[0]
555
+ ratios = torch.tensor([[width_ratio, height_ratio, width_ratio, height_ratio]], device=bboxes.device)
561
556
 
562
- masks = crop_mask(masks, downsampled_bboxes) # CHW
557
+ masks = crop_mask(masks, boxes=bboxes * ratios) # CHW
563
558
  if upsample:
564
559
  masks = F.interpolate(masks[None], shape, mode="bilinear")[0] # CHW
565
- return masks.gt_(0.0)
560
+ return masks.gt_(0.0).byte()
566
561
 
567
562
 
568
563
  def process_mask_native(protos, masks_in, bboxes, shape):
@@ -582,7 +577,7 @@ def process_mask_native(protos, masks_in, bboxes, shape):
582
577
  masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw)
583
578
  masks = scale_masks(masks[None], shape)[0] # CHW
584
579
  masks = crop_mask(masks, bboxes) # CHW
585
- return masks.gt_(0.0)
580
+ return masks.gt_(0.0).byte()
586
581
 
587
582
 
588
583
  def scale_masks(masks, shape, padding: bool = True):
@@ -679,7 +674,7 @@ def masks2segments(masks, strategy: str = "all"):
679
674
  from ultralytics.data.converter import merge_multi_segment
680
675
 
681
676
  segments = []
682
- for x in masks.int().cpu().numpy().astype("uint8"):
677
+ for x in masks.byte().cpu().numpy():
683
678
  c = cv2.findContours(x, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
684
679
  if c:
685
680
  if strategy == "all": # merge and concatenate all segments
@@ -706,7 +701,7 @@ def convert_torch2numpy_batch(batch: torch.Tensor) -> np.ndarray:
706
701
  Returns:
707
702
  (np.ndarray): Output NumPy array batch with shape (Batch, Height, Width, Channels) and dtype uint8.
708
703
  """
709
- return (batch.permute(0, 2, 3, 1).contiguous() * 255).clamp(0, 255).to(torch.uint8).cpu().numpy()
704
+ return (batch.permute(0, 2, 3, 1).contiguous() * 255).clamp(0, 255).byte().cpu().numpy()
710
705
 
711
706
 
712
707
  def clean_str(s):
@@ -384,25 +384,32 @@ class Annotator:
384
384
  overlay[mask.astype(bool)] = colors[i]
385
385
  self.im = cv2.addWeighted(self.im, 1 - alpha, overlay, alpha, 0)
386
386
  else:
387
- assert isinstance(masks, torch.Tensor), "`masks` must be a torch.Tensor if `im_gpu` is provided."
387
+ assert isinstance(masks, torch.Tensor), "'masks' must be a torch.Tensor if 'im_gpu' is provided."
388
388
  if len(masks) == 0:
389
389
  self.im[:] = im_gpu.permute(1, 2, 0).contiguous().cpu().numpy() * 255
390
+ return
390
391
  if im_gpu.device != masks.device:
391
392
  im_gpu = im_gpu.to(masks.device)
393
+
394
+ ih, iw = self.im.shape[:2]
395
+ if not retina_masks:
396
+ # Use scale_masks to properly remove padding and upsample, convert bool to float first
397
+ masks = ops.scale_masks(masks[None].float(), (ih, iw))[0] > 0.5
398
+ # Convert original BGR image to RGB tensor
399
+ im_gpu = (
400
+ torch.from_numpy(self.im).to(masks.device).permute(2, 0, 1).flip(0).contiguous().float() / 255.0
401
+ )
402
+
392
403
  colors = torch.tensor(colors, device=masks.device, dtype=torch.float32) / 255.0 # shape(n,3)
393
404
  colors = colors[:, None, None] # shape(n,1,1,3)
394
405
  masks = masks.unsqueeze(3) # shape(n,h,w,1)
395
406
  masks_color = masks * (colors * alpha) # shape(n,h,w,3)
396
-
397
407
  inv_alpha_masks = (1 - masks * alpha).cumprod(0) # shape(n,h,w,1)
398
408
  mcs = masks_color.max(dim=0).values # shape(n,h,w,3)
399
409
 
400
- im_gpu = im_gpu.flip(dims=[0]) # flip channel
401
- im_gpu = im_gpu.permute(1, 2, 0).contiguous() # shape(h,w,3)
410
+ im_gpu = im_gpu.flip(dims=[0]).permute(1, 2, 0).contiguous() # shape(h,w,3)
402
411
  im_gpu = im_gpu * inv_alpha_masks[-1] + mcs
403
- im_mask = im_gpu * 255
404
- im_mask_np = im_mask.byte().cpu().numpy()
405
- self.im[:] = im_mask_np if retina_masks else ops.scale_image(im_mask_np, self.im.shape)
412
+ self.im[:] = (im_gpu * 255).byte().cpu().numpy()
406
413
  if self.pil:
407
414
  # Convert im back to PIL and update draw
408
415
  self.fromarray(self.im)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.215
3
+ Version: 8.3.217
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