dgenerate-ultralytics-headless 8.3.236__tar.gz → 8.3.237__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 (306) hide show
  1. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +13 -0
  4. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/__init__.py +1 -1
  5. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/exporter.py +17 -10
  6. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/predictor.py +3 -2
  7. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/trainer.py +8 -0
  8. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/rtdetr/val.py +5 -1
  9. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/__init__.py +25 -0
  10. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/build.py +17 -8
  11. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/build_sam3.py +374 -0
  12. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/model.py +12 -4
  13. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/blocks.py +20 -8
  14. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/decoders.py +2 -3
  15. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/encoders.py +4 -1
  16. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/memory_attention.py +6 -2
  17. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/sam.py +150 -6
  18. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/utils.py +134 -4
  19. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/predict.py +3946 -0
  20. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/__init__.py +3 -0
  21. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/decoder.py +546 -0
  22. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/encoder.py +535 -0
  23. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/geometry_encoders.py +415 -0
  24. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/maskformer_segmentation.py +286 -0
  25. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/model_misc.py +198 -0
  26. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/necks.py +129 -0
  27. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/sam3_image.py +357 -0
  28. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/text_encoder_ve.py +307 -0
  29. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/tokenizer_ve.py +242 -0
  30. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/vitdet.py +546 -0
  31. dgenerate_ultralytics_headless-8.3.237/ultralytics/models/sam/sam3/vl_combiner.py +165 -0
  32. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/obb/val.py +18 -7
  33. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/transformer.py +21 -1
  34. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/checks.py +2 -2
  35. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/ops.py +1 -3
  36. dgenerate_ultralytics_headless-8.3.236/ultralytics/models/sam/__init__.py +0 -12
  37. dgenerate_ultralytics_headless-8.3.236/ultralytics/models/sam/predict.py +0 -1988
  38. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/LICENSE +0 -0
  39. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/README.md +0 -0
  40. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  41. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  42. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  43. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  44. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/pyproject.toml +0 -0
  45. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/setup.cfg +0 -0
  46. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/__init__.py +0 -0
  47. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/conftest.py +0 -0
  48. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_cli.py +0 -0
  49. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_cuda.py +0 -0
  50. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_engine.py +0 -0
  51. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_exports.py +0 -0
  52. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_integrations.py +0 -0
  53. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_python.py +0 -0
  54. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/tests/test_solutions.py +0 -0
  55. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/assets/bus.jpg +0 -0
  56. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/assets/zidane.jpg +0 -0
  57. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/__init__.py +0 -0
  58. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/kitti.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/signature.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/datasets/xView.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/default.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  130. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  131. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  132. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  133. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  134. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  135. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  136. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  137. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  138. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  139. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  140. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  141. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  142. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  143. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  144. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  145. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  146. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  147. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  148. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  149. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  150. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  151. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  152. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/__init__.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/annotator.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/augment.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/base.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/build.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/converter.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/dataset.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/loaders.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/scripts/download_weights.sh +0 -0
  161. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/scripts/get_coco.sh +0 -0
  162. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/scripts/get_coco128.sh +0 -0
  163. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  164. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/split.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/split_dota.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/data/utils.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/__init__.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/model.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/results.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/tuner.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/engine/validator.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/hub/__init__.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/hub/auth.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/hub/google/__init__.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/hub/session.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/hub/utils.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/__init__.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/fastsam/__init__.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/fastsam/model.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/fastsam/predict.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/fastsam/utils.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/fastsam/val.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/nas/__init__.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/nas/model.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/nas/predict.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/nas/val.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/rtdetr/__init__.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/rtdetr/model.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/rtdetr/predict.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/rtdetr/train.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/amg.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/__init__.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/sam/modules/transformer.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/utils/__init__.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/utils/loss.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/utils/ops.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/__init__.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/classify/__init__.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/classify/predict.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/classify/train.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/classify/val.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/detect/__init__.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/detect/predict.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/detect/train.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/detect/val.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/model.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/obb/__init__.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/obb/predict.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/obb/train.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/pose/__init__.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/pose/predict.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/pose/train.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/pose/val.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/segment/__init__.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/segment/predict.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/segment/train.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/segment/val.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/world/__init__.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/world/train.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/world/train_world.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/yoloe/train.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/models/yolo/yoloe/val.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/__init__.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/autobackend.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/__init__.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/activation.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/block.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/conv.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/head.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/modules/utils.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/tasks.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/nn/text_model.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/py.typed +0 -0
  238. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/__init__.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/ai_gym.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/analytics.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/config.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/distance_calculation.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/heatmap.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/instance_segmentation.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/object_blurrer.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/object_counter.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/object_cropper.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/parking_management.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/queue_management.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/region_counter.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/security_alarm.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/similarity_search.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/solutions.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/speed_estimation.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/streamlit_inference.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/templates/similarity-search.html +0 -0
  257. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/trackzone.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/solutions/vision_eye.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/__init__.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/basetrack.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/bot_sort.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/byte_tracker.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/track.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/utils/__init__.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/utils/gmc.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/trackers/utils/matching.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/__init__.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/autobatch.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/autodevice.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/benchmarks.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/__init__.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/base.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/clearml.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/comet.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/dvc.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/hub.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/mlflow.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/neptune.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/platform.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/raytune.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/callbacks/wb.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/cpu.py +0 -0
  285. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/dist.py +0 -0
  286. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/downloads.py +0 -0
  287. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/errors.py +0 -0
  288. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/events.py +0 -0
  289. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/export/__init__.py +0 -0
  290. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/export/engine.py +0 -0
  291. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/export/imx.py +0 -0
  292. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/export/tensorflow.py +0 -0
  293. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/files.py +0 -0
  294. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/git.py +0 -0
  295. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/instance.py +0 -0
  296. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/logger.py +0 -0
  297. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/loss.py +0 -0
  298. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/metrics.py +0 -0
  299. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/nms.py +0 -0
  300. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/patches.py +0 -0
  301. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/plotting.py +0 -0
  302. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/tal.py +0 -0
  303. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/torch_utils.py +0 -0
  304. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/tqdm.py +0 -0
  305. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/triton.py +0 -0
  306. {dgenerate_ultralytics_headless-8.3.236 → dgenerate_ultralytics_headless-8.3.237}/ultralytics/utils/tuner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.236
3
+ Version: 8.3.237
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
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
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.236
3
+ Version: 8.3.237
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -168,6 +168,7 @@ ultralytics/models/rtdetr/val.py
168
168
  ultralytics/models/sam/__init__.py
169
169
  ultralytics/models/sam/amg.py
170
170
  ultralytics/models/sam/build.py
171
+ ultralytics/models/sam/build_sam3.py
171
172
  ultralytics/models/sam/model.py
172
173
  ultralytics/models/sam/predict.py
173
174
  ultralytics/models/sam/modules/__init__.py
@@ -179,6 +180,18 @@ ultralytics/models/sam/modules/sam.py
179
180
  ultralytics/models/sam/modules/tiny_encoder.py
180
181
  ultralytics/models/sam/modules/transformer.py
181
182
  ultralytics/models/sam/modules/utils.py
183
+ ultralytics/models/sam/sam3/__init__.py
184
+ ultralytics/models/sam/sam3/decoder.py
185
+ ultralytics/models/sam/sam3/encoder.py
186
+ ultralytics/models/sam/sam3/geometry_encoders.py
187
+ ultralytics/models/sam/sam3/maskformer_segmentation.py
188
+ ultralytics/models/sam/sam3/model_misc.py
189
+ ultralytics/models/sam/sam3/necks.py
190
+ ultralytics/models/sam/sam3/sam3_image.py
191
+ ultralytics/models/sam/sam3/text_encoder_ve.py
192
+ ultralytics/models/sam/sam3/tokenizer_ve.py
193
+ ultralytics/models/sam/sam3/vitdet.py
194
+ ultralytics/models/sam/sam3/vl_combiner.py
182
195
  ultralytics/models/utils/__init__.py
183
196
  ultralytics/models/utils/loss.py
184
197
  ultralytics/models/utils/ops.py
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.236"
3
+ __version__ = "8.3.237"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -392,8 +392,10 @@ class Exporter:
392
392
  if self.args.half and self.args.int8:
393
393
  LOGGER.warning("half=True and int8=True are mutually exclusive, setting half=False.")
394
394
  self.args.half = False
395
- if self.args.half and (onnx or jit) and self.device.type == "cpu":
396
- LOGGER.warning("half=True only compatible with GPU export, i.e. use device=0, setting half=False.")
395
+ if self.args.half and jit and self.device.type == "cpu":
396
+ LOGGER.warning(
397
+ "half=True only compatible with GPU export for TorchScript, i.e. use device=0, setting half=False."
398
+ )
397
399
  self.args.half = False
398
400
  self.imgsz = check_imgsz(self.args.imgsz, stride=model.stride, min_dim=2) # check image size
399
401
  if self.args.optimize:
@@ -716,6 +718,16 @@ class Exporter:
716
718
  LOGGER.info(f"{prefix} limiting IR version {model_onnx.ir_version} to 10 for ONNXRuntime compatibility...")
717
719
  model_onnx.ir_version = 10
718
720
 
721
+ # FP16 conversion for CPU export (GPU exports are already FP16 from model.half() during tracing)
722
+ if self.args.half and self.device.type == "cpu":
723
+ try:
724
+ from onnxruntime.transformers import float16
725
+
726
+ LOGGER.info(f"{prefix} converting to FP16...")
727
+ model_onnx = float16.convert_float_to_float16(model_onnx, keep_io_types=True)
728
+ except Exception as e:
729
+ LOGGER.warning(f"{prefix} FP16 conversion failure: {e}")
730
+
719
731
  onnx.save(model_onnx, f)
720
732
  return f
721
733
 
@@ -1220,10 +1232,9 @@ class Exporter:
1220
1232
  f"{sudo}mkdir -p /etc/apt/keyrings",
1221
1233
  f"curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | {sudo}gpg --dearmor -o /etc/apt/keyrings/google.gpg",
1222
1234
  f'echo "deb [signed-by=/etc/apt/keyrings/google.gpg] https://packages.cloud.google.com/apt coral-edgetpu-stable main" | {sudo}tee /etc/apt/sources.list.d/coral-edgetpu.list',
1223
- f"{sudo}apt-get update",
1224
- f"{sudo}apt-get install -y edgetpu-compiler",
1225
1235
  ):
1226
1236
  subprocess.run(c, shell=True, check=True)
1237
+ check_apt_requirements(["edgetpu-compiler"])
1227
1238
 
1228
1239
  ver = subprocess.run(cmd, shell=True, capture_output=True, check=True).stdout.decode().rsplit(maxsplit=1)[-1]
1229
1240
  LOGGER.info(f"\n{prefix} starting export with Edge TPU compiler {ver}...")
@@ -1301,16 +1312,12 @@ class Exporter:
1301
1312
  java_version = int(version_match.group(1)) if version_match else 0
1302
1313
  assert java_version >= 17, "Java version too old"
1303
1314
  except (FileNotFoundError, subprocess.CalledProcessError, AssertionError):
1304
- cmd = None
1305
1315
  if IS_UBUNTU or IS_DEBIAN_TRIXIE:
1306
1316
  LOGGER.info(f"\n{prefix} installing Java 21 for Ubuntu...")
1307
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt-get", "install", "-y", "openjdk-21-jre"]
1317
+ check_apt_requirements(["openjdk-21-jre"])
1308
1318
  elif IS_RASPBERRYPI or IS_DEBIAN_BOOKWORM:
1309
1319
  LOGGER.info(f"\n{prefix} installing Java 17 for Raspberry Pi or Debian ...")
1310
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt-get", "install", "-y", "openjdk-17-jre"]
1311
-
1312
- if cmd:
1313
- subprocess.run(cmd, check=True)
1320
+ check_apt_requirements(["openjdk-17-jre"])
1314
1321
 
1315
1322
  return torch2imx(
1316
1323
  self.model,
@@ -244,14 +244,15 @@ class BasePredictor:
244
244
  for _ in gen: # sourcery skip: remove-empty-nested-block, noqa
245
245
  pass
246
246
 
247
- def setup_source(self, source):
247
+ def setup_source(self, source, stride: int | None = None):
248
248
  """Set up source and inference mode.
249
249
 
250
250
  Args:
251
251
  source (str | Path | list[str] | list[Path] | list[np.ndarray] | np.ndarray | torch.Tensor): Source for
252
252
  inference.
253
+ stride (int, optional): Model stride for image size checking.
253
254
  """
254
- self.imgsz = check_imgsz(self.args.imgsz, stride=self.model.stride, min_dim=2) # check image size
255
+ self.imgsz = check_imgsz(self.args.imgsz, stride=stride or self.model.stride, min_dim=2) # check image size
255
256
  self.dataset = load_inference_source(
256
257
  source=source,
257
258
  batch=self.args.batch,
@@ -812,6 +812,14 @@ class BaseTrainer:
812
812
  "device",
813
813
  "close_mosaic",
814
814
  "augmentations",
815
+ "save_period",
816
+ "workers",
817
+ "cache",
818
+ "patience",
819
+ "time",
820
+ "freeze",
821
+ "val",
822
+ "plots",
815
823
  ): # allow arg updates to reduce memory or update device on resume
816
824
  if k in overrides:
817
825
  setattr(self.args, k, overrides[k])
@@ -85,7 +85,7 @@ class RTDETRDataset(YOLODataset):
85
85
  transforms = v8_transforms(self, self.imgsz, hyp, stretch=True)
86
86
  else:
87
87
  # transforms = Compose([LetterBox(new_shape=(self.imgsz, self.imgsz), auto=False, scale_fill=True)])
88
- transforms = Compose([lambda x: {**x, **{"ratio_pad": [x["ratio_pad"], [0, 0]]}}])
88
+ transforms = Compose([])
89
89
  transforms.append(
90
90
  Format(
91
91
  bbox_format="xywh",
@@ -150,6 +150,10 @@ class RTDETRValidator(DetectionValidator):
150
150
  data=self.data,
151
151
  )
152
152
 
153
+ def scale_preds(self, predn: dict[str, torch.Tensor], pbatch: dict[str, Any]) -> dict[str, torch.Tensor]:
154
+ """Scales predictions to the original image size."""
155
+ return predn
156
+
153
157
  def postprocess(
154
158
  self, preds: torch.Tensor | list[torch.Tensor] | tuple[torch.Tensor]
155
159
  ) -> list[dict[str, torch.Tensor]]:
@@ -0,0 +1,25 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ from .model import SAM
4
+ from .predict import (
5
+ Predictor,
6
+ SAM2DynamicInteractivePredictor,
7
+ SAM2Predictor,
8
+ SAM2VideoPredictor,
9
+ SAM3Predictor,
10
+ SAM3SemanticPredictor,
11
+ SAM3VideoPredictor,
12
+ SAM3VideoSemanticPredictor,
13
+ )
14
+
15
+ __all__ = (
16
+ "SAM",
17
+ "Predictor",
18
+ "SAM2DynamicInteractivePredictor",
19
+ "SAM2Predictor",
20
+ "SAM2VideoPredictor",
21
+ "SAM3Predictor",
22
+ "SAM3SemanticPredictor",
23
+ "SAM3VideoPredictor",
24
+ "SAM3VideoSemanticPredictor",
25
+ ) # tuple or list of exportable items
@@ -21,6 +21,21 @@ from .modules.tiny_encoder import TinyViT
21
21
  from .modules.transformer import TwoWayTransformer
22
22
 
23
23
 
24
+ def _load_checkpoint(model, checkpoint):
25
+ """Load checkpoint into model from file path."""
26
+ if checkpoint is None:
27
+ return model
28
+
29
+ checkpoint = attempt_download_asset(checkpoint)
30
+ with open(checkpoint, "rb") as f:
31
+ state_dict = torch_load(f)
32
+ # Handle nested "model" key
33
+ if "model" in state_dict and isinstance(state_dict["model"], dict):
34
+ state_dict = state_dict["model"]
35
+ model.load_state_dict(state_dict)
36
+ return model
37
+
38
+
24
39
  def build_sam_vit_h(checkpoint=None):
25
40
  """Build and return a Segment Anything Model (SAM) h-size model with specified encoder parameters."""
26
41
  return _build_sam(
@@ -205,10 +220,7 @@ def _build_sam(
205
220
  pixel_std=[58.395, 57.12, 57.375],
206
221
  )
207
222
  if checkpoint is not None:
208
- checkpoint = attempt_download_asset(checkpoint)
209
- with open(checkpoint, "rb") as f:
210
- state_dict = torch_load(f)
211
- sam.load_state_dict(state_dict)
223
+ sam = _load_checkpoint(sam, checkpoint)
212
224
  sam.eval()
213
225
  return sam
214
226
 
@@ -299,10 +311,7 @@ def _build_sam2(
299
311
  )
300
312
 
301
313
  if checkpoint is not None:
302
- checkpoint = attempt_download_asset(checkpoint)
303
- with open(checkpoint, "rb") as f:
304
- state_dict = torch_load(f)["model"]
305
- sam2.load_state_dict(state_dict)
314
+ sam2 = _load_checkpoint(sam2, checkpoint)
306
315
  sam2.eval()
307
316
  return sam2
308
317
 
@@ -0,0 +1,374 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved
4
+
5
+ import torch.nn as nn
6
+
7
+ from ultralytics.nn.modules.transformer import MLP
8
+ from ultralytics.utils.patches import torch_load
9
+
10
+ from .modules.blocks import PositionEmbeddingSine, RoPEAttention
11
+ from .modules.encoders import MemoryEncoder
12
+ from .modules.memory_attention import MemoryAttention, MemoryAttentionLayer
13
+ from .modules.sam import SAM3Model
14
+ from .sam3.decoder import TransformerDecoder, TransformerDecoderLayer
15
+ from .sam3.encoder import TransformerEncoderFusion, TransformerEncoderLayer
16
+ from .sam3.geometry_encoders import SequenceGeometryEncoder
17
+ from .sam3.maskformer_segmentation import PixelDecoder, UniversalSegmentationHead
18
+ from .sam3.model_misc import DotProductScoring, TransformerWrapper
19
+ from .sam3.necks import Sam3DualViTDetNeck
20
+ from .sam3.sam3_image import SAM3SemanticModel
21
+ from .sam3.text_encoder_ve import VETextEncoder
22
+ from .sam3.tokenizer_ve import SimpleTokenizer
23
+ from .sam3.vitdet import ViT
24
+ from .sam3.vl_combiner import SAM3VLBackbone
25
+
26
+
27
+ def _create_vision_backbone(compile_mode=None, enable_inst_interactivity=True) -> Sam3DualViTDetNeck:
28
+ """Create SAM3 visual backbone with ViT and neck."""
29
+ # Position encoding
30
+ position_encoding = PositionEmbeddingSine(
31
+ num_pos_feats=256,
32
+ normalize=True,
33
+ scale=None,
34
+ temperature=10000,
35
+ )
36
+
37
+ # ViT backbone
38
+ vit_backbone = ViT(
39
+ img_size=1008,
40
+ pretrain_img_size=336,
41
+ patch_size=14,
42
+ embed_dim=1024,
43
+ depth=32,
44
+ num_heads=16,
45
+ mlp_ratio=4.625,
46
+ norm_layer="LayerNorm",
47
+ drop_path_rate=0.1,
48
+ qkv_bias=True,
49
+ use_abs_pos=True,
50
+ tile_abs_pos=True,
51
+ global_att_blocks=(7, 15, 23, 31),
52
+ rel_pos_blocks=(),
53
+ use_rope=True,
54
+ use_interp_rope=True,
55
+ window_size=24,
56
+ pretrain_use_cls_token=True,
57
+ retain_cls_token=False,
58
+ ln_pre=True,
59
+ ln_post=False,
60
+ return_interm_layers=False,
61
+ bias_patch_embed=False,
62
+ compile_mode=compile_mode,
63
+ )
64
+ return Sam3DualViTDetNeck(
65
+ position_encoding=position_encoding,
66
+ d_model=256,
67
+ scale_factors=[4.0, 2.0, 1.0, 0.5],
68
+ trunk=vit_backbone,
69
+ add_sam2_neck=enable_inst_interactivity,
70
+ )
71
+
72
+
73
+ def _create_sam3_transformer() -> TransformerWrapper:
74
+ """Create SAM3 detector encoder and decoder."""
75
+ encoder: TransformerEncoderFusion = TransformerEncoderFusion(
76
+ layer=TransformerEncoderLayer(
77
+ d_model=256,
78
+ dim_feedforward=2048,
79
+ dropout=0.1,
80
+ pos_enc_at_attn=True,
81
+ pos_enc_at_cross_attn_keys=False,
82
+ pos_enc_at_cross_attn_queries=False,
83
+ pre_norm=True,
84
+ self_attention=nn.MultiheadAttention(
85
+ num_heads=8,
86
+ dropout=0.1,
87
+ embed_dim=256,
88
+ batch_first=True,
89
+ ),
90
+ cross_attention=nn.MultiheadAttention(
91
+ num_heads=8,
92
+ dropout=0.1,
93
+ embed_dim=256,
94
+ batch_first=True,
95
+ ),
96
+ ),
97
+ num_layers=6,
98
+ d_model=256,
99
+ num_feature_levels=1,
100
+ frozen=False,
101
+ use_act_checkpoint=True,
102
+ add_pooled_text_to_img_feat=False,
103
+ pool_text_with_mask=True,
104
+ )
105
+ decoder: TransformerDecoder = TransformerDecoder(
106
+ layer=TransformerDecoderLayer(
107
+ d_model=256,
108
+ dim_feedforward=2048,
109
+ dropout=0.1,
110
+ cross_attention=nn.MultiheadAttention(
111
+ num_heads=8,
112
+ dropout=0.1,
113
+ embed_dim=256,
114
+ ),
115
+ n_heads=8,
116
+ use_text_cross_attention=True,
117
+ ),
118
+ num_layers=6,
119
+ num_queries=200,
120
+ return_intermediate=True,
121
+ box_refine=True,
122
+ num_o2m_queries=0,
123
+ dac=True,
124
+ boxRPB="log",
125
+ d_model=256,
126
+ frozen=False,
127
+ interaction_layer=None,
128
+ dac_use_selfatt_ln=True,
129
+ use_act_checkpoint=True,
130
+ presence_token=True,
131
+ )
132
+
133
+ return TransformerWrapper(encoder=encoder, decoder=decoder, d_model=256)
134
+
135
+
136
+ def build_sam3_image_model(
137
+ checkpoint_path: str, bpe_path: str, enable_segmentation: bool = True, compile: bool = False
138
+ ):
139
+ """Build SAM3 image model.
140
+
141
+ Args:
142
+ checkpoint_path: Optional path to model checkpoint
143
+ bpe_path: Path to the BPE tokenizer vocabulary
144
+ enable_segmentation: Whether to enable segmentation head
145
+ compile: To enable compilation, set to "default"
146
+
147
+ Returns:
148
+ A SAM3 image model
149
+ """
150
+ # Create visual components
151
+ compile_mode = "default" if compile else None
152
+ vision_encoder = _create_vision_backbone(compile_mode=compile_mode, enable_inst_interactivity=True)
153
+
154
+ # Create text components
155
+ text_encoder = VETextEncoder(
156
+ tokenizer=SimpleTokenizer(bpe_path=bpe_path),
157
+ d_model=256,
158
+ width=1024,
159
+ heads=16,
160
+ layers=24,
161
+ )
162
+
163
+ # Create visual-language backbone
164
+ backbone = SAM3VLBackbone(visual=vision_encoder, text=text_encoder, scalp=1)
165
+
166
+ # Create transformer components
167
+ transformer = _create_sam3_transformer()
168
+
169
+ # Create dot product scoring
170
+ dot_prod_scoring = DotProductScoring(
171
+ d_model=256,
172
+ d_proj=256,
173
+ prompt_mlp=MLP(
174
+ input_dim=256,
175
+ hidden_dim=2048,
176
+ output_dim=256,
177
+ num_layers=2,
178
+ residual=True,
179
+ out_norm=nn.LayerNorm(256),
180
+ ),
181
+ )
182
+
183
+ # Create segmentation head if enabled
184
+ segmentation_head = (
185
+ UniversalSegmentationHead(
186
+ hidden_dim=256,
187
+ upsampling_stages=3,
188
+ aux_masks=False,
189
+ presence_head=False,
190
+ dot_product_scorer=None,
191
+ act_ckpt=True,
192
+ cross_attend_prompt=nn.MultiheadAttention(
193
+ num_heads=8,
194
+ dropout=0,
195
+ embed_dim=256,
196
+ ),
197
+ pixel_decoder=PixelDecoder(
198
+ num_upsampling_stages=3,
199
+ interpolation_mode="nearest",
200
+ hidden_dim=256,
201
+ compile_mode=compile_mode,
202
+ ),
203
+ )
204
+ if enable_segmentation
205
+ else None
206
+ )
207
+
208
+ # Create geometry encoder
209
+ input_geometry_encoder = SequenceGeometryEncoder(
210
+ pos_enc=PositionEmbeddingSine(
211
+ num_pos_feats=256,
212
+ normalize=True,
213
+ scale=None,
214
+ temperature=10000,
215
+ ),
216
+ encode_boxes_as_points=False,
217
+ boxes_direct_project=True,
218
+ boxes_pool=True,
219
+ boxes_pos_enc=True,
220
+ d_model=256,
221
+ num_layers=3,
222
+ layer=TransformerEncoderLayer(
223
+ d_model=256,
224
+ dim_feedforward=2048,
225
+ dropout=0.1,
226
+ pos_enc_at_attn=False,
227
+ pre_norm=True,
228
+ pos_enc_at_cross_attn_queries=False,
229
+ pos_enc_at_cross_attn_keys=True,
230
+ ),
231
+ use_act_ckpt=True,
232
+ add_cls=True,
233
+ add_post_encode_proj=True,
234
+ )
235
+
236
+ # Create the SAM3SemanticModel model
237
+ model = SAM3SemanticModel(
238
+ backbone=backbone,
239
+ transformer=transformer,
240
+ input_geometry_encoder=input_geometry_encoder,
241
+ segmentation_head=segmentation_head,
242
+ num_feature_levels=1,
243
+ o2m_mask_predict=True,
244
+ dot_prod_scoring=dot_prod_scoring,
245
+ use_instance_query=False,
246
+ multimask_output=True,
247
+ )
248
+
249
+ # Load checkpoint
250
+ model = _load_checkpoint(model, checkpoint_path)
251
+ model.eval()
252
+ return model
253
+
254
+
255
+ def build_interactive_sam3(checkpoint_path: str, compile=None, with_backbone=True) -> SAM3Model:
256
+ """Build the SAM3 Tracker module for video tracking.
257
+
258
+ Returns:
259
+ Sam3TrackerPredictor: Wrapped SAM3 Tracker module
260
+ """
261
+ # Create model components
262
+ memory_encoder = MemoryEncoder(out_dim=64, interpol_size=[1152, 1152])
263
+ memory_attention = MemoryAttention(
264
+ batch_first=True,
265
+ d_model=256,
266
+ pos_enc_at_input=True,
267
+ layer=MemoryAttentionLayer(
268
+ dim_feedforward=2048,
269
+ dropout=0.1,
270
+ pos_enc_at_attn=False,
271
+ pos_enc_at_cross_attn_keys=True,
272
+ pos_enc_at_cross_attn_queries=False,
273
+ self_attn=RoPEAttention(
274
+ embedding_dim=256,
275
+ num_heads=1,
276
+ downsample_rate=1,
277
+ rope_theta=10000.0,
278
+ feat_sizes=[72, 72],
279
+ ),
280
+ d_model=256,
281
+ cross_attn=RoPEAttention(
282
+ embedding_dim=256,
283
+ num_heads=1,
284
+ downsample_rate=1,
285
+ kv_in_dim=64,
286
+ rope_theta=10000.0,
287
+ feat_sizes=[72, 72],
288
+ rope_k_repeat=True,
289
+ ),
290
+ ),
291
+ num_layers=4,
292
+ )
293
+
294
+ backbone = (
295
+ SAM3VLBackbone(scalp=1, visual=_create_vision_backbone(compile_mode=compile), text=None)
296
+ if with_backbone
297
+ else None
298
+ )
299
+ model = SAM3Model(
300
+ image_size=1008,
301
+ image_encoder=backbone,
302
+ memory_attention=memory_attention,
303
+ memory_encoder=memory_encoder,
304
+ backbone_stride=14,
305
+ num_maskmem=7,
306
+ sigmoid_scale_for_mem_enc=20.0,
307
+ sigmoid_bias_for_mem_enc=-10.0,
308
+ use_mask_input_as_output_without_sam=True,
309
+ directly_add_no_mem_embed=True,
310
+ use_high_res_features_in_sam=True,
311
+ multimask_output_in_sam=True,
312
+ iou_prediction_use_sigmoid=True,
313
+ use_obj_ptrs_in_encoder=True,
314
+ add_tpos_enc_to_obj_ptrs=True,
315
+ only_obj_ptrs_in_the_past_for_eval=True,
316
+ pred_obj_scores=True,
317
+ pred_obj_scores_mlp=True,
318
+ fixed_no_obj_ptr=True,
319
+ multimask_output_for_tracking=True,
320
+ use_multimask_token_for_obj_ptr=True,
321
+ multimask_min_pt_num=0,
322
+ multimask_max_pt_num=1,
323
+ use_mlp_for_obj_ptr_proj=True,
324
+ compile_image_encoder=False,
325
+ no_obj_embed_spatial=True,
326
+ proj_tpos_enc_in_obj_ptrs=True,
327
+ use_signed_tpos_enc_to_obj_ptrs=True,
328
+ sam_mask_decoder_extra_args=dict(
329
+ dynamic_multimask_via_stability=True,
330
+ dynamic_multimask_stability_delta=0.05,
331
+ dynamic_multimask_stability_thresh=0.98,
332
+ ),
333
+ )
334
+
335
+ # Load checkpoint if provided
336
+ model = _load_checkpoint(model, checkpoint_path, interactive=True)
337
+
338
+ # Setup device and mode
339
+ model.eval()
340
+ return model
341
+
342
+
343
+ def _load_checkpoint(model, checkpoint, interactive=False):
344
+ """Load SAM3 model checkpoint from file."""
345
+ with open(checkpoint, "rb") as f:
346
+ ckpt = torch_load(f)
347
+ if "model" in ckpt and isinstance(ckpt["model"], dict):
348
+ ckpt = ckpt["model"]
349
+ sam3_image_ckpt = {k.replace("detector.", ""): v for k, v in ckpt.items() if "detector" in k}
350
+ if interactive:
351
+ sam3_image_ckpt.update(
352
+ {
353
+ k.replace("backbone.vision_backbone", "image_encoder.vision_backbone"): v
354
+ for k, v in sam3_image_ckpt.items()
355
+ if "backbone.vision_backbone" in k
356
+ }
357
+ )
358
+ sam3_image_ckpt.update(
359
+ {
360
+ k.replace("tracker.transformer.encoder", "memory_attention"): v
361
+ for k, v in ckpt.items()
362
+ if "tracker.transformer" in k
363
+ }
364
+ )
365
+ sam3_image_ckpt.update(
366
+ {
367
+ k.replace("tracker.maskmem_backbone", "memory_encoder"): v
368
+ for k, v in ckpt.items()
369
+ if "tracker.maskmem_backbone" in k
370
+ }
371
+ )
372
+ sam3_image_ckpt.update({k.replace("tracker.", ""): v for k, v in ckpt.items() if "tracker." in k})
373
+ model.load_state_dict(sam3_image_ckpt, strict=False)
374
+ return model
@@ -21,7 +21,7 @@ from pathlib import Path
21
21
  from ultralytics.engine.model import Model
22
22
  from ultralytics.utils.torch_utils import model_info
23
23
 
24
- from .predict import Predictor, SAM2Predictor
24
+ from .predict import Predictor, SAM2Predictor, SAM3Predictor
25
25
 
26
26
 
27
27
  class SAM(Model):
@@ -59,6 +59,7 @@ class SAM(Model):
59
59
  if model and Path(model).suffix not in {".pt", ".pth"}:
60
60
  raise NotImplementedError("SAM prediction requires pre-trained *.pt or *.pth model.")
61
61
  self.is_sam2 = "sam2" in Path(model).stem
62
+ self.is_sam3 = "sam3" in Path(model).stem
62
63
  super().__init__(model=model, task="segment")
63
64
 
64
65
  def _load(self, weights: str, task=None):
@@ -72,9 +73,14 @@ class SAM(Model):
72
73
  >>> sam = SAM("sam_b.pt")
73
74
  >>> sam._load("path/to/custom_weights.pt")
74
75
  """
75
- from .build import build_sam # slow import
76
+ if self.is_sam3:
77
+ from .build_sam3 import build_interactive_sam3
76
78
 
77
- self.model = build_sam(weights)
79
+ self.model = build_interactive_sam3(weights)
80
+ else:
81
+ from .build import build_sam # slow import
82
+
83
+ self.model = build_sam(weights)
78
84
 
79
85
  def predict(self, source, stream: bool = False, bboxes=None, points=None, labels=None, **kwargs):
80
86
  """Perform segmentation prediction on the given image or video source.
@@ -158,4 +164,6 @@ class SAM(Model):
158
164
  >>> print(task_map)
159
165
  {'segment': {'predictor': <class 'ultralytics.models.sam.predict.Predictor'>}}
160
166
  """
161
- return {"segment": {"predictor": SAM2Predictor if self.is_sam2 else Predictor}}
167
+ return {
168
+ "segment": {"predictor": SAM2Predictor if self.is_sam2 else SAM3Predictor if self.is_sam3 else Predictor}
169
+ }