ultralytics 8.3.16__tar.gz → 8.3.17__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 (240) hide show
  1. {ultralytics-8.3.16/ultralytics.egg-info → ultralytics-8.3.17}/PKG-INFO +1 -1
  2. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/__init__.py +40 -14
  4. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/head.py +11 -6
  5. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/tasks.py +7 -2
  6. {ultralytics-8.3.16 → ultralytics-8.3.17/ultralytics.egg-info}/PKG-INFO +1 -1
  7. {ultralytics-8.3.16 → ultralytics-8.3.17}/LICENSE +0 -0
  8. {ultralytics-8.3.16 → ultralytics-8.3.17}/README.md +0 -0
  9. {ultralytics-8.3.16 → ultralytics-8.3.17}/pyproject.toml +0 -0
  10. {ultralytics-8.3.16 → ultralytics-8.3.17}/setup.cfg +0 -0
  11. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/__init__.py +0 -0
  12. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/conftest.py +0 -0
  13. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_cli.py +0 -0
  14. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_cuda.py +0 -0
  15. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_engine.py +0 -0
  16. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_exports.py +0 -0
  17. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_integrations.py +0 -0
  18. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_python.py +0 -0
  19. {ultralytics-8.3.16 → ultralytics-8.3.17}/tests/test_solutions.py +0 -0
  20. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/assets/bus.jpg +0 -0
  21. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/assets/zidane.jpg +0 -0
  22. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  23. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  24. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  25. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  26. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  27. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  28. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  29. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  30. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  31. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  32. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  33. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  34. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  35. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco.yaml +0 -0
  36. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  37. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  38. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  39. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  40. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  41. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  42. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  43. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  44. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  45. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  46. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  47. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/signature.yaml +0 -0
  48. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  49. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/datasets/xView.yaml +0 -0
  50. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/default.yaml +0 -0
  51. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  52. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  53. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  54. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  55. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  56. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  57. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  58. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  59. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  60. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  61. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  62. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  63. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  64. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  65. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  66. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  67. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  68. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  69. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  70. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  71. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  72. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  73. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  74. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  75. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  76. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  77. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  78. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  79. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  80. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  81. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  82. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  83. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  84. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  85. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  86. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  87. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  88. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  89. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  90. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  91. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  92. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  93. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  94. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  95. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  96. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/solutions/default.yaml +0 -0
  97. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  98. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  99. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/__init__.py +0 -0
  100. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/annotator.py +0 -0
  101. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/augment.py +0 -0
  102. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/base.py +0 -0
  103. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/build.py +0 -0
  104. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/converter.py +0 -0
  105. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/dataset.py +0 -0
  106. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/loaders.py +0 -0
  107. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/split_dota.py +0 -0
  108. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/data/utils.py +0 -0
  109. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/__init__.py +0 -0
  110. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/exporter.py +0 -0
  111. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/model.py +0 -0
  112. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/predictor.py +0 -0
  113. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/results.py +0 -0
  114. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/trainer.py +0 -0
  115. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/tuner.py +0 -0
  116. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/engine/validator.py +0 -0
  117. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/hub/__init__.py +0 -0
  118. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/hub/auth.py +0 -0
  119. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/hub/google/__init__.py +0 -0
  120. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/hub/session.py +0 -0
  121. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/hub/utils.py +0 -0
  122. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/__init__.py +0 -0
  123. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/fastsam/__init__.py +0 -0
  124. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/fastsam/model.py +0 -0
  125. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/fastsam/predict.py +0 -0
  126. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/fastsam/utils.py +0 -0
  127. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/fastsam/val.py +0 -0
  128. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/nas/__init__.py +0 -0
  129. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/nas/model.py +0 -0
  130. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/nas/predict.py +0 -0
  131. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/nas/val.py +0 -0
  132. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/rtdetr/__init__.py +0 -0
  133. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/rtdetr/model.py +0 -0
  134. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/rtdetr/predict.py +0 -0
  135. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/rtdetr/train.py +0 -0
  136. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/rtdetr/val.py +0 -0
  137. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/__init__.py +0 -0
  138. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/amg.py +0 -0
  139. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/build.py +0 -0
  140. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/model.py +0 -0
  141. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/__init__.py +0 -0
  142. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/blocks.py +0 -0
  143. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/decoders.py +0 -0
  144. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/encoders.py +0 -0
  145. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  146. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/sam.py +0 -0
  147. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  148. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/transformer.py +0 -0
  149. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/modules/utils.py +0 -0
  150. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/sam/predict.py +0 -0
  151. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/utils/__init__.py +0 -0
  152. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/utils/loss.py +0 -0
  153. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/utils/ops.py +0 -0
  154. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/__init__.py +0 -0
  155. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/classify/__init__.py +0 -0
  156. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/classify/predict.py +0 -0
  157. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/classify/train.py +0 -0
  158. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/classify/val.py +0 -0
  159. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/detect/__init__.py +0 -0
  160. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/detect/predict.py +0 -0
  161. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/detect/train.py +0 -0
  162. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/detect/val.py +0 -0
  163. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/model.py +0 -0
  164. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/obb/__init__.py +0 -0
  165. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/obb/predict.py +0 -0
  166. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/obb/train.py +0 -0
  167. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/obb/val.py +0 -0
  168. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/pose/__init__.py +0 -0
  169. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/pose/predict.py +0 -0
  170. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/pose/train.py +0 -0
  171. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/pose/val.py +0 -0
  172. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/segment/__init__.py +0 -0
  173. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/segment/predict.py +0 -0
  174. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/segment/train.py +0 -0
  175. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/segment/val.py +0 -0
  176. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/world/__init__.py +0 -0
  177. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/world/train.py +0 -0
  178. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/models/yolo/world/train_world.py +0 -0
  179. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/__init__.py +0 -0
  180. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/autobackend.py +0 -0
  181. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/__init__.py +0 -0
  182. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/activation.py +0 -0
  183. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/block.py +0 -0
  184. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/conv.py +0 -0
  185. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/transformer.py +0 -0
  186. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/nn/modules/utils.py +0 -0
  187. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/__init__.py +0 -0
  188. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/ai_gym.py +0 -0
  189. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/analytics.py +0 -0
  190. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/distance_calculation.py +0 -0
  191. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/heatmap.py +0 -0
  192. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/object_counter.py +0 -0
  193. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/parking_management.py +0 -0
  194. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/queue_management.py +0 -0
  195. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/solutions.py +0 -0
  196. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/speed_estimation.py +0 -0
  197. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/solutions/streamlit_inference.py +0 -0
  198. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/__init__.py +0 -0
  199. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/basetrack.py +0 -0
  200. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/bot_sort.py +0 -0
  201. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/byte_tracker.py +0 -0
  202. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/track.py +0 -0
  203. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/utils/__init__.py +0 -0
  204. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/utils/gmc.py +0 -0
  205. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  206. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/trackers/utils/matching.py +0 -0
  207. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/__init__.py +0 -0
  208. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/autobatch.py +0 -0
  209. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/benchmarks.py +0 -0
  210. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/__init__.py +0 -0
  211. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/base.py +0 -0
  212. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/clearml.py +0 -0
  213. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/comet.py +0 -0
  214. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/dvc.py +0 -0
  215. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/hub.py +0 -0
  216. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/mlflow.py +0 -0
  217. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/neptune.py +0 -0
  218. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/raytune.py +0 -0
  219. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  220. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/callbacks/wb.py +0 -0
  221. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/checks.py +0 -0
  222. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/dist.py +0 -0
  223. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/downloads.py +0 -0
  224. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/errors.py +0 -0
  225. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/files.py +0 -0
  226. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/instance.py +0 -0
  227. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/loss.py +0 -0
  228. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/metrics.py +0 -0
  229. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/ops.py +0 -0
  230. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/patches.py +0 -0
  231. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/plotting.py +0 -0
  232. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/tal.py +0 -0
  233. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/torch_utils.py +0 -0
  234. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/triton.py +0 -0
  235. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics/utils/tuner.py +0 -0
  236. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics.egg-info/SOURCES.txt +0 -0
  237. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics.egg-info/dependency_links.txt +0 -0
  238. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics.egg-info/entry_points.txt +0 -0
  239. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics.egg-info/requires.txt +0 -0
  240. {ultralytics-8.3.16 → ultralytics-8.3.17}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.16
3
+ Version: 8.3.17
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.3.16"
3
+ __version__ = "8.3.17"
4
4
 
5
5
  import os
6
6
 
@@ -438,34 +438,60 @@ def check_dict_alignment(base: Dict, custom: Dict, e=None):
438
438
 
439
439
  def merge_equals_args(args: List[str]) -> List[str]:
440
440
  """
441
- Merges arguments around isolated '=' in a list of strings, handling three cases:
442
- 1. ['arg', '=', 'val'] becomes ['arg=val'],
443
- 2. ['arg=', 'val'] becomes ['arg=val'],
444
- 3. ['arg', '=val'] becomes ['arg=val'].
441
+ Merges arguments around isolated '=' in a list of strings and joins fragments with brackets.
442
+
443
+ This function handles the following cases:
444
+ 1. ['arg', '=', 'val'] becomes ['arg=val']
445
+ 2. ['arg=', 'val'] becomes ['arg=val']
446
+ 3. ['arg', '=val'] becomes ['arg=val']
447
+ 4. Joins fragments with brackets, e.g., ['imgsz=[3,', '640,', '640]'] becomes ['imgsz=[3,640,640]']
445
448
 
446
449
  Args:
447
- args (List[str]): A list of strings where each element represents an argument.
450
+ args (List[str]): A list of strings where each element represents an argument or fragment.
448
451
 
449
452
  Returns:
450
- (List[str]): A list of strings where the arguments around isolated '=' are merged.
453
+ List[str]: A list of strings where the arguments around isolated '=' are merged and fragments with brackets are joined.
451
454
 
452
455
  Examples:
453
- >>> args = ["arg1", "=", "value", "arg2=", "value2", "arg3", "=value3"]
454
- >>> merge_equals_args(args)
455
- ['arg1=value', 'arg2=value2', 'arg3=value3']
456
+ >>> args = ["arg1", "=", "value", "arg2=", "value2", "arg3", "=value3", "imgsz=[3,", "640,", "640]"]
457
+ >>> merge_and_join_args(args)
458
+ ['arg1=value', 'arg2=value2', 'arg3=value3', 'imgsz=[3,640,640]']
456
459
  """
457
460
  new_args = []
458
- for i, arg in enumerate(args):
461
+ current = ""
462
+ depth = 0
463
+
464
+ i = 0
465
+ while i < len(args):
466
+ arg = args[i]
467
+
468
+ # Handle equals sign merging
459
469
  if arg == "=" and 0 < i < len(args) - 1: # merge ['arg', '=', 'val']
460
470
  new_args[-1] += f"={args[i + 1]}"
461
- del args[i + 1]
471
+ i += 2
472
+ continue
462
473
  elif arg.endswith("=") and i < len(args) - 1 and "=" not in args[i + 1]: # merge ['arg=', 'val']
463
474
  new_args.append(f"{arg}{args[i + 1]}")
464
- del args[i + 1]
475
+ i += 2
476
+ continue
465
477
  elif arg.startswith("=") and i > 0: # merge ['arg', '=val']
466
478
  new_args[-1] += arg
467
- else:
468
- new_args.append(arg)
479
+ i += 1
480
+ continue
481
+
482
+ # Handle bracket joining
483
+ depth += arg.count("[") - arg.count("]")
484
+ current += arg
485
+ if depth == 0:
486
+ new_args.append(current)
487
+ current = ""
488
+
489
+ i += 1
490
+
491
+ # Append any remaining current string
492
+ if current:
493
+ new_args.append(current)
494
+
469
495
  return new_args
470
496
 
471
497
 
@@ -28,6 +28,7 @@ class Detect(nn.Module):
28
28
  shape = None
29
29
  anchors = torch.empty(0) # init
30
30
  strides = torch.empty(0) # init
31
+ legacy = False # backward compatibility for v3/v5/v8/v9 models
31
32
 
32
33
  def __init__(self, nc=80, ch=()):
33
34
  """Initializes the YOLO detection layer with specified number of classes and channels."""
@@ -41,13 +42,17 @@ class Detect(nn.Module):
41
42
  self.cv2 = nn.ModuleList(
42
43
  nn.Sequential(Conv(x, c2, 3), Conv(c2, c2, 3), nn.Conv2d(c2, 4 * self.reg_max, 1)) for x in ch
43
44
  )
44
- self.cv3 = nn.ModuleList(
45
- nn.Sequential(
46
- nn.Sequential(DWConv(x, x, 3), Conv(x, c3, 1)),
47
- nn.Sequential(DWConv(c3, c3, 3), Conv(c3, c3, 1)),
48
- nn.Conv2d(c3, self.nc, 1),
45
+ self.cv3 = (
46
+ nn.ModuleList(nn.Sequential(Conv(x, c3, 3), Conv(c3, c3, 3), nn.Conv2d(c3, self.nc, 1)) for x in ch)
47
+ if self.legacy
48
+ else nn.ModuleList(
49
+ nn.Sequential(
50
+ nn.Sequential(DWConv(x, x, 3), Conv(x, c3, 1)),
51
+ nn.Sequential(DWConv(c3, c3, 3), Conv(c3, c3, 1)),
52
+ nn.Conv2d(c3, self.nc, 1),
53
+ )
54
+ for x in ch
49
55
  )
50
- for x in ch
51
56
  )
52
57
  self.dfl = DFL(self.reg_max) if self.reg_max > 1 else nn.Identity()
53
58
 
@@ -936,6 +936,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
936
936
  import ast
937
937
 
938
938
  # Args
939
+ legacy = True # backward compatibility for v3/v5/v8/v9 models
939
940
  max_channels = float("inf")
940
941
  nc, act, scales = (d.get(x) for x in ("nc", "activation", "scales"))
941
942
  depth, width, kpt_shape = (d.get(x, 1.0) for x in ("depth_multiple", "width_multiple", "kpt_shape"))
@@ -1027,8 +1028,10 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
1027
1028
  }:
1028
1029
  args.insert(2, n) # number of repeats
1029
1030
  n = 1
1030
- if m is C3k2 and scale in "mlx": # for M/L/X sizes
1031
- args[3] = True
1031
+ if m is C3k2: # for M/L/X sizes
1032
+ legacy = False
1033
+ if scale in "mlx":
1034
+ args[3] = True
1032
1035
  elif m is AIFI:
1033
1036
  args = [ch[f], *args]
1034
1037
  elif m in {HGStem, HGBlock}:
@@ -1047,6 +1050,8 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
1047
1050
  args.append([ch[x] for x in f])
1048
1051
  if m is Segment:
1049
1052
  args[2] = make_divisible(min(args[2], max_channels) * width, 8)
1053
+ if m in {Detect, Segment, Pose, OBB}:
1054
+ m.legacy = legacy
1050
1055
  elif m is RTDETRDecoder: # special case, channels arg must be passed in index 1
1051
1056
  args.insert(1, [ch[x] for x in f])
1052
1057
  elif m is CBLinear:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.16
3
+ Version: 8.3.17
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