ultralytics 8.3.131__tar.gz → 8.3.132__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. {ultralytics-8.3.131/ultralytics.egg-info → ultralytics-8.3.132}/PKG-INFO +1 -1
  2. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/__init__.py +1 -1
  3. ultralytics-8.3.132/ultralytics/cfg/datasets/HomeObjects-3K.yaml +33 -0
  4. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/dataset.py +1 -1
  5. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/trainer.py +13 -10
  6. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/detect/train.py +1 -1
  7. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/pose/train.py +15 -0
  8. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/world/train_world.py +6 -5
  9. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/yoloe/predict.py +0 -1
  10. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/yoloe/train_seg.py +0 -1
  11. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/block.py +2 -2
  12. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/tasks.py +15 -6
  13. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/heatmap.py +1 -2
  14. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/instance_segmentation.py +1 -0
  15. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/object_blurrer.py +0 -1
  16. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/object_counter.py +9 -4
  17. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/solutions.py +3 -6
  18. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/vision_eye.py +0 -1
  19. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/autodevice.py +0 -1
  20. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/neptune.py +0 -1
  21. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/checks.py +1 -1
  22. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/metrics.py +1 -1
  23. {ultralytics-8.3.131 → ultralytics-8.3.132/ultralytics.egg-info}/PKG-INFO +1 -1
  24. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics.egg-info/SOURCES.txt +1 -0
  25. {ultralytics-8.3.131 → ultralytics-8.3.132}/LICENSE +0 -0
  26. {ultralytics-8.3.131 → ultralytics-8.3.132}/README.md +0 -0
  27. {ultralytics-8.3.131 → ultralytics-8.3.132}/pyproject.toml +0 -0
  28. {ultralytics-8.3.131 → ultralytics-8.3.132}/setup.cfg +0 -0
  29. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/__init__.py +0 -0
  30. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/conftest.py +0 -0
  31. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_cli.py +0 -0
  32. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_cuda.py +0 -0
  33. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_engine.py +0 -0
  34. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_exports.py +0 -0
  35. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_integrations.py +0 -0
  36. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_python.py +0 -0
  37. {ultralytics-8.3.131 → ultralytics-8.3.132}/tests/test_solutions.py +0 -0
  38. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/assets/bus.jpg +0 -0
  39. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/assets/zidane.jpg +0 -0
  40. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/__init__.py +0 -0
  41. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  42. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  43. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  44. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  45. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  46. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  47. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  48. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  49. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  50. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  51. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  52. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  53. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  54. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco.yaml +0 -0
  55. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  56. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  57. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  58. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  59. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  60. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  61. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  62. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  63. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  64. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  65. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  66. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  67. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  68. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  69. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  70. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/signature.yaml +0 -0
  71. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  72. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/datasets/xView.yaml +0 -0
  73. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/default.yaml +0 -0
  74. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  75. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  76. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  77. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  78. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  79. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  80. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  81. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  82. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  83. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  84. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  85. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  86. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  87. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  88. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  89. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  90. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  91. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  92. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  93. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  94. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  95. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  96. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  97. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  98. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  99. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  100. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  101. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  102. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  103. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  104. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  105. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  106. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  107. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  108. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  109. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  110. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  111. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  112. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  113. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  114. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  115. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  116. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  117. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  118. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  119. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  120. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  121. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  122. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  123. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  124. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  125. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  126. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  127. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  128. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  129. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  130. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  131. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/__init__.py +0 -0
  132. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/annotator.py +0 -0
  133. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/augment.py +0 -0
  134. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/base.py +0 -0
  135. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/build.py +0 -0
  136. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/converter.py +0 -0
  137. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/loaders.py +0 -0
  138. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/scripts/download_weights.sh +0 -0
  139. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/scripts/get_coco.sh +0 -0
  140. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/scripts/get_coco128.sh +0 -0
  141. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  142. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/split.py +0 -0
  143. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/split_dota.py +0 -0
  144. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/data/utils.py +0 -0
  145. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/__init__.py +0 -0
  146. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/exporter.py +0 -0
  147. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/model.py +0 -0
  148. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/predictor.py +0 -0
  149. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/results.py +0 -0
  150. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/tuner.py +0 -0
  151. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/engine/validator.py +0 -0
  152. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/hub/__init__.py +0 -0
  153. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/hub/auth.py +0 -0
  154. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/hub/google/__init__.py +0 -0
  155. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/hub/session.py +0 -0
  156. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/hub/utils.py +0 -0
  157. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/__init__.py +0 -0
  158. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/fastsam/__init__.py +0 -0
  159. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/fastsam/model.py +0 -0
  160. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/fastsam/predict.py +0 -0
  161. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/fastsam/utils.py +0 -0
  162. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/fastsam/val.py +0 -0
  163. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/nas/__init__.py +0 -0
  164. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/nas/model.py +0 -0
  165. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/nas/predict.py +0 -0
  166. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/nas/val.py +0 -0
  167. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/rtdetr/__init__.py +0 -0
  168. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/rtdetr/model.py +0 -0
  169. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/rtdetr/predict.py +0 -0
  170. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/rtdetr/train.py +0 -0
  171. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/rtdetr/val.py +0 -0
  172. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/__init__.py +0 -0
  173. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/amg.py +0 -0
  174. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/build.py +0 -0
  175. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/model.py +0 -0
  176. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/__init__.py +0 -0
  177. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/blocks.py +0 -0
  178. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/decoders.py +0 -0
  179. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/encoders.py +0 -0
  180. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  181. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/sam.py +0 -0
  182. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  183. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/transformer.py +0 -0
  184. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/modules/utils.py +0 -0
  185. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/sam/predict.py +0 -0
  186. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/utils/__init__.py +0 -0
  187. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/utils/loss.py +0 -0
  188. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/utils/ops.py +0 -0
  189. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/__init__.py +0 -0
  190. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/classify/__init__.py +0 -0
  191. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/classify/predict.py +0 -0
  192. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/classify/train.py +0 -0
  193. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/classify/val.py +0 -0
  194. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/detect/__init__.py +0 -0
  195. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/detect/predict.py +0 -0
  196. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/detect/val.py +0 -0
  197. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/model.py +0 -0
  198. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/obb/__init__.py +0 -0
  199. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/obb/predict.py +0 -0
  200. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/obb/train.py +0 -0
  201. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/obb/val.py +0 -0
  202. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/pose/__init__.py +0 -0
  203. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/pose/predict.py +0 -0
  204. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/pose/val.py +0 -0
  205. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/segment/__init__.py +0 -0
  206. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/segment/predict.py +0 -0
  207. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/segment/train.py +0 -0
  208. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/segment/val.py +0 -0
  209. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/world/__init__.py +0 -0
  210. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/world/train.py +0 -0
  211. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  212. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/yoloe/train.py +0 -0
  213. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/models/yolo/yoloe/val.py +0 -0
  214. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/__init__.py +0 -0
  215. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/autobackend.py +0 -0
  216. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/__init__.py +0 -0
  217. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/activation.py +0 -0
  218. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/conv.py +0 -0
  219. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/head.py +0 -0
  220. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/transformer.py +0 -0
  221. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/modules/utils.py +0 -0
  222. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/nn/text_model.py +0 -0
  223. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/__init__.py +0 -0
  224. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/ai_gym.py +0 -0
  225. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/analytics.py +0 -0
  226. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/config.py +0 -0
  227. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/distance_calculation.py +0 -0
  228. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/object_cropper.py +0 -0
  229. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/parking_management.py +0 -0
  230. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/queue_management.py +0 -0
  231. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/region_counter.py +0 -0
  232. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/security_alarm.py +0 -0
  233. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/similarity_search.py +0 -0
  234. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/speed_estimation.py +0 -0
  235. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/streamlit_inference.py +0 -0
  236. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/templates/similarity-search.html +0 -0
  237. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/solutions/trackzone.py +0 -0
  238. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/__init__.py +0 -0
  239. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/basetrack.py +0 -0
  240. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/bot_sort.py +0 -0
  241. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/byte_tracker.py +0 -0
  242. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/track.py +0 -0
  243. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/utils/__init__.py +0 -0
  244. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/utils/gmc.py +0 -0
  245. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  246. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/trackers/utils/matching.py +0 -0
  247. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/__init__.py +0 -0
  248. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/autobatch.py +0 -0
  249. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/benchmarks.py +0 -0
  250. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/__init__.py +0 -0
  251. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/base.py +0 -0
  252. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/clearml.py +0 -0
  253. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/comet.py +0 -0
  254. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/dvc.py +0 -0
  255. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/hub.py +0 -0
  256. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/mlflow.py +0 -0
  257. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/raytune.py +0 -0
  258. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  259. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/callbacks/wb.py +0 -0
  260. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/dist.py +0 -0
  261. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/downloads.py +0 -0
  262. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/errors.py +0 -0
  263. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/export.py +0 -0
  264. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/files.py +0 -0
  265. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/instance.py +0 -0
  266. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/loss.py +0 -0
  267. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/ops.py +0 -0
  268. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/patches.py +0 -0
  269. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/plotting.py +0 -0
  270. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/tal.py +0 -0
  271. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/torch_utils.py +0 -0
  272. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/triton.py +0 -0
  273. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics/utils/tuner.py +0 -0
  274. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics.egg-info/dependency_links.txt +0 -0
  275. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics.egg-info/entry_points.txt +0 -0
  276. {ultralytics-8.3.131 → ultralytics-8.3.132}/ultralytics.egg-info/requires.txt +0 -0
  277. {ultralytics-8.3.131 → ultralytics-8.3.132}/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.131
3
+ Version: 8.3.132
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.131"
3
+ __version__ = "8.3.132"
4
4
 
5
5
  import os
6
6
 
@@ -0,0 +1,33 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # HomeObjects-3K dataset by Ultralytics
4
+ # Documentation: https://docs.ultralytics.com/datasets/detect/homeobjects-3k/
5
+ # Example usage: yolo train data=HomeObjects-3K.yaml
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── homeobjects-3K ← downloads here (390 MB)
10
+
11
+ # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
+ path: ../datasets/homeobjects-3K # dataset root dir
13
+ train: train/images # train images (relative to 'path') 2285 images
14
+ val: valid/images # val images (relative to 'path') 404 images
15
+ test: # test images (relative to 'path')
16
+
17
+ # Classes
18
+ names:
19
+ 0: bed
20
+ 1: sofa
21
+ 2: chair
22
+ 3: table
23
+ 4: lamp
24
+ 5: tv
25
+ 6: laptop
26
+ 7: wardrobe
27
+ 8: window
28
+ 9: door
29
+ 10: potted plant
30
+ 11: photo frame
31
+
32
+ # Download script/URL (optional)
33
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/homeobjects-3K.zip
@@ -39,7 +39,7 @@ from .utils import (
39
39
  verify_image_label,
40
40
  )
41
41
 
42
- # Ultralytics dataset *.cache version, >= 1.0.0 for YOLOv8
42
+ # Ultralytics dataset *.cache version, >= 1.0.0 for Ultralytics YOLO models
43
43
  DATASET_CACHE_VERSION = "1.0.3"
44
44
 
45
45
 
@@ -77,8 +77,6 @@ class BaseTrainer:
77
77
  amp (bool): Flag to enable AMP (Automatic Mixed Precision).
78
78
  scaler (amp.GradScaler): Gradient scaler for AMP.
79
79
  data (str): Path to data.
80
- trainset (torch.utils.data.Dataset): Training dataset.
81
- testset (torch.utils.data.Dataset): Testing dataset.
82
80
  ema (nn.Module): EMA (Exponential Moving Average) of the model.
83
81
  resume (bool): Resume training from a checkpoint.
84
82
  lf (nn.Module): Loss function.
@@ -136,7 +134,8 @@ class BaseTrainer:
136
134
  # Model and Dataset
137
135
  self.model = check_model_file_from_stem(self.args.model) # add suffix, i.e. yolo11n -> yolo11n.pt
138
136
  with torch_distributed_zero_first(LOCAL_RANK): # avoid auto-downloading dataset multiple times
139
- self.trainset, self.testset = self.get_dataset()
137
+ self.data = self.get_dataset()
138
+
140
139
  self.ema = None
141
140
 
142
141
  # Optimization utils init
@@ -289,11 +288,16 @@ class BaseTrainer:
289
288
 
290
289
  # Dataloaders
291
290
  batch_size = self.batch_size // max(world_size, 1)
292
- self.train_loader = self.get_dataloader(self.trainset, batch_size=batch_size, rank=LOCAL_RANK, mode="train")
291
+ self.train_loader = self.get_dataloader(
292
+ self.data["train"], batch_size=batch_size, rank=LOCAL_RANK, mode="train"
293
+ )
293
294
  if RANK in {-1, 0}:
294
295
  # Note: When training DOTA dataset, double batch size could get OOM on images with >2000 objects.
295
296
  self.test_loader = self.get_dataloader(
296
- self.testset, batch_size=batch_size if self.args.task == "obb" else batch_size * 2, rank=-1, mode="val"
297
+ self.data.get("val") or self.data.get("test"),
298
+ batch_size=batch_size if self.args.task == "obb" else batch_size * 2,
299
+ rank=-1,
300
+ mode="val",
297
301
  )
298
302
  self.validator = self.get_validator()
299
303
  metric_keys = self.validator.metrics.keys + self.label_loss_items(prefix="val")
@@ -569,7 +573,7 @@ class BaseTrainer:
569
573
  Get train and validation datasets from data dictionary.
570
574
 
571
575
  Returns:
572
- (tuple): A tuple containing the training and validation/test datasets.
576
+ (dict): A dictionary containing the training/validation/test dataset and category names.
573
577
  """
574
578
  try:
575
579
  if self.args.task == "classify":
@@ -585,12 +589,11 @@ class BaseTrainer:
585
589
  self.args.data = data["yaml_file"] # for validating 'yolo train data=url.zip' usage
586
590
  except Exception as e:
587
591
  raise RuntimeError(emojis(f"Dataset '{clean_url(self.args.data)}' error ❌ {e}")) from e
588
- self.data = data
589
592
  if self.args.single_cls:
590
593
  LOGGER.info("Overriding class names with single class.")
591
- self.data["names"] = {0: "item"}
592
- self.data["nc"] = 1
593
- return data["train"], data.get("val") or data.get("test")
594
+ data["names"] = {0: "item"}
595
+ data["nc"] = 1
596
+ return data
594
597
 
595
598
  def setup_model(self):
596
599
  """
@@ -212,6 +212,6 @@ class DetectionTrainer(BaseTrainer):
212
212
  Returns:
213
213
  (int): Optimal batch size.
214
214
  """
215
- train_dataset = self.build_dataset(self.trainset, mode="train", batch=16)
215
+ train_dataset = self.build_dataset(self.data["train"], mode="train", batch=16)
216
216
  max_num_obj = max(len(label["cls"]) for label in train_dataset.labels) * 4 # 4 for mosaic augmentation
217
217
  return super().auto_batch(max_num_obj)
@@ -137,3 +137,18 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
137
137
  def plot_metrics(self):
138
138
  """Plots training/val metrics."""
139
139
  plot_results(file=self.csv, pose=True, on_plot=self.on_plot) # save results.png
140
+
141
+ def get_dataset(self):
142
+ """
143
+ Retrieves the dataset and ensures it contains the required `kpt_shape` key.
144
+
145
+ Returns:
146
+ (dict): A dictionary containing the training/validation/test dataset and category names.
147
+
148
+ Raises:
149
+ KeyError: If the `kpt_shape` key is not present in the dataset.
150
+ """
151
+ data = super().get_dataset()
152
+ if "kpt_shape" not in data:
153
+ raise KeyError(f"No `kpt_shape` in the {self.args.data}. See https://docs.ultralytics.com/datasets/pose/")
154
+ return data
@@ -137,12 +137,13 @@ class WorldTrainerFromScratch(WorldTrainer):
137
137
  for g in grounding_data:
138
138
  assert isinstance(g, dict), f"Grounding data should be provided in dict format, but got {type(g)}"
139
139
  final_data[s] += grounding_data
140
+ data["val"] = data["val"][0] # assign the first val dataset as currently only one validation set is supported
140
141
  # NOTE: to make training work properly, set `nc` and `names`
141
- final_data["nc"] = data["val"][0]["nc"]
142
- final_data["names"] = data["val"][0]["names"]
142
+ final_data["nc"] = data["val"]["nc"]
143
+ final_data["names"] = data["val"]["names"]
143
144
  # NOTE: add path with lvis path
144
- final_data["path"] = data["val"][0]["path"]
145
- final_data["channels"] = data["val"][0]["channels"]
145
+ final_data["path"] = data["val"]["path"]
146
+ final_data["channels"] = data["val"]["channels"]
146
147
  self.data = final_data
147
148
  if self.args.single_cls: # consistent with base trainer
148
149
  LOGGER.info("Overriding class names with single class.")
@@ -154,7 +155,7 @@ class WorldTrainerFromScratch(WorldTrainer):
154
155
  d["names"] = {0: "object"}
155
156
  d["nc"] = 1
156
157
  self.training_data[d["train"]] = d
157
- return final_data["train"], final_data["val"][0]
158
+ return final_data
158
159
 
159
160
  def plot_training_labels(self):
160
161
  """Do not plot labels for YOLO-World training."""
@@ -1,6 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
-
4
3
  import numpy as np
5
4
  import torch
6
5
 
@@ -1,6 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
-
4
3
  from copy import copy, deepcopy
5
4
 
6
5
  from ultralytics.models.yolo.segment import SegmentationTrainer
@@ -76,11 +76,11 @@ class DFL(nn.Module):
76
76
 
77
77
 
78
78
  class Proto(nn.Module):
79
- """YOLOv8 mask Proto module for segmentation models."""
79
+ """Ultralytics YOLO models mask Proto module for segmentation models."""
80
80
 
81
81
  def __init__(self, c1, c_=256, c2=32):
82
82
  """
83
- Initialize the YOLOv8 mask Proto module with specified number of protos and masks.
83
+ Initialize the Ultralytics YOLO models mask Proto module with specified number of protos and masks.
84
84
 
85
85
  Args:
86
86
  c1 (int): Input channels.
@@ -281,10 +281,19 @@ class BaseModel(torch.nn.Module):
281
281
  """
282
282
  model = weights["model"] if isinstance(weights, dict) else weights # torchvision models are not dicts
283
283
  csd = model.float().state_dict() # checkpoint state_dict as FP32
284
- csd = intersect_dicts(csd, self.state_dict()) # intersect
285
- self.load_state_dict(csd, strict=False) # load
284
+ updated_csd = intersect_dicts(csd, self.state_dict()) # intersect
285
+ self.load_state_dict(updated_csd, strict=False) # load
286
+ len_updated_csd = len(updated_csd)
287
+ first_conv = "model.0.conv.weight"
288
+ if first_conv not in updated_csd: # mostly used to boost multi-channel training
289
+ c1, c2, h, w = self.state_dict()[first_conv].shape
290
+ cc1, cc2, ch, cw = csd[first_conv].shape
291
+ if ch == h and cw == w:
292
+ c1, c2 = min(c1, cc1), min(c2, cc2)
293
+ self.state_dict()[first_conv][:c1, :c2] = csd[first_conv][:c1, :c2]
294
+ len_updated_csd += 1
286
295
  if verbose:
287
- LOGGER.info(f"Transferred {len(csd)}/{len(self.model.state_dict())} items from pretrained weights")
296
+ LOGGER.info(f"Transferred {len_updated_csd}/{len(self.model.state_dict())} items from pretrained weights")
288
297
 
289
298
  def loss(self, batch, preds=None):
290
299
  """
@@ -458,7 +467,7 @@ class SegmentationModel(DetectionModel):
458
467
 
459
468
  def __init__(self, cfg="yolo11n-seg.yaml", ch=3, nc=None, verbose=True):
460
469
  """
461
- Initialize YOLOv8 segmentation model with given config and parameters.
470
+ Initialize Ultralytics YOLO segmentation model with given config and parameters.
462
471
 
463
472
  Args:
464
473
  cfg (str | dict): Model configuration file path or dictionary.
@@ -478,7 +487,7 @@ class PoseModel(DetectionModel):
478
487
 
479
488
  def __init__(self, cfg="yolo11n-pose.yaml", ch=3, nc=None, data_kpt_shape=(None, None), verbose=True):
480
489
  """
481
- Initialize YOLOv8 Pose model.
490
+ Initialize Ultralytics YOLO Pose model.
482
491
 
483
492
  Args:
484
493
  cfg (str | dict): Model configuration file path or dictionary.
@@ -517,7 +526,7 @@ class ClassificationModel(BaseModel):
517
526
 
518
527
  def _from_yaml(self, cfg, ch, nc, verbose):
519
528
  """
520
- Set YOLOv8 model configurations and define the model architecture.
529
+ Set Ultralytics YOLO model configurations and define the model architecture.
521
530
 
522
531
  Args:
523
532
  cfg (str | dict): Model configuration file path or dictionary.
@@ -100,12 +100,11 @@ class Heatmap(ObjectCounter):
100
100
  self.annotator.draw_region(reg_pts=self.region, color=(104, 0, 123), thickness=self.line_width * 2)
101
101
  self.store_tracking_history(track_id, box) # Store track history
102
102
  self.store_classwise_counts(cls) # Store classwise counts in dict
103
- current_centroid = ((box[0] + box[2]) / 2, (box[1] + box[3]) / 2)
104
103
  # Get previous position if available
105
104
  prev_position = None
106
105
  if len(self.track_history[track_id]) > 1:
107
106
  prev_position = self.track_history[track_id][-2]
108
- self.count_objects(current_centroid, track_id, prev_position, cls) # Perform object counting
107
+ self.count_objects(self.track_history[track_id][-1], track_id, prev_position, cls) # object counting
109
108
 
110
109
  plot_im = self.annotator.result()
111
110
  if self.region is not None:
@@ -62,6 +62,7 @@ class InstanceSegmentation(BaseSolution):
62
62
  >>> print(summary)
63
63
  """
64
64
  self.extract_tracks(im0) # Extract tracks (bounding boxes, classes, and masks)
65
+ self.masks = getattr(self.tracks[0], "masks", None)
65
66
 
66
67
  # Iterate over detected classes, track IDs, and segmentation masks
67
68
  if self.masks is None:
@@ -1,6 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
-
4
3
  import cv2
5
4
 
6
5
  from ultralytics.solutions.solutions import BaseSolution, SolutionAnnotator, SolutionResults
@@ -174,6 +174,10 @@ class ObjectCounter(BaseSolution):
174
174
  self.extract_tracks(im0) # Extract tracks
175
175
  self.annotator = SolutionAnnotator(im0, line_width=self.line_width) # Initialize annotator
176
176
 
177
+ is_obb = getattr(self.tracks[0], "obb", None) is not None # True if OBB results exist
178
+ if is_obb:
179
+ self.boxes = self.track_data.xyxyxyxy.reshape(-1, 4, 2).cpu()
180
+
177
181
  self.annotator.draw_region(
178
182
  reg_pts=self.region, color=(104, 0, 123), thickness=self.line_width * 2
179
183
  ) # Draw region
@@ -181,16 +185,17 @@ class ObjectCounter(BaseSolution):
181
185
  # Iterate over bounding boxes, track ids and classes index
182
186
  for box, track_id, cls, conf in zip(self.boxes, self.track_ids, self.clss, self.confs):
183
187
  # Draw bounding box and counting region
184
- self.annotator.box_label(box, label=self.adjust_box_label(cls, conf, track_id), color=colors(cls, True))
185
- self.store_tracking_history(track_id, box) # Store track history
188
+ self.annotator.box_label(
189
+ box, label=self.adjust_box_label(cls, conf, track_id), color=colors(cls, True), rotated=is_obb
190
+ )
191
+ self.store_tracking_history(track_id, box, is_obb=is_obb) # Store track history
186
192
  self.store_classwise_counts(cls) # Store classwise counts in dict
187
193
 
188
- current_centroid = ((box[0] + box[2]) / 2, (box[1] + box[3]) / 2)
189
194
  # Store previous position of track for object counting
190
195
  prev_position = None
191
196
  if len(self.track_history[track_id]) > 1:
192
197
  prev_position = self.track_history[track_id][-2]
193
- self.count_objects(current_centroid, track_id, prev_position, cls) # Perform object counting
198
+ self.count_objects(self.track_history[track_id][-1], track_id, prev_position, cls) # object counting
194
199
 
195
200
  plot_im = self.annotator.result()
196
201
  self.display_counts(plot_im) # Display the counts on the frame
@@ -139,10 +139,6 @@ class BaseSolution:
139
139
  self.tracks = self.model.track(source=im0, persist=True, classes=self.classes, **self.track_add_args)
140
140
  self.track_data = self.tracks[0].obb or self.tracks[0].boxes # Extract tracks for OBB or object detection
141
141
 
142
- self.masks = (
143
- self.tracks[0].masks if hasattr(self.tracks[0], "masks") and self.tracks[0].masks is not None else None
144
- )
145
-
146
142
  if self.track_data and self.track_data.id is not None:
147
143
  self.boxes = self.track_data.xyxy.cpu()
148
144
  self.clss = self.track_data.cls.cpu().tolist()
@@ -152,7 +148,7 @@ class BaseSolution:
152
148
  self.LOGGER.warning("no tracks found!")
153
149
  self.boxes, self.clss, self.track_ids, self.confs = [], [], [], []
154
150
 
155
- def store_tracking_history(self, track_id, box):
151
+ def store_tracking_history(self, track_id, box, is_obb=False):
156
152
  """
157
153
  Stores the tracking history of an object.
158
154
 
@@ -162,6 +158,7 @@ class BaseSolution:
162
158
  Args:
163
159
  track_id (int): The unique identifier for the tracked object.
164
160
  box (List[float]): The bounding box coordinates of the object in the format [x1, y1, x2, y2].
161
+ is_obb (bool): True if OBB model is used (applies to object counting only).
165
162
 
166
163
  Examples:
167
164
  >>> solution = BaseSolution()
@@ -169,7 +166,7 @@ class BaseSolution:
169
166
  """
170
167
  # Store tracking history
171
168
  self.track_line = self.track_history[track_id]
172
- self.track_line.append(((box[0] + box[2]) / 2, (box[1] + box[3]) / 2))
169
+ self.track_line.append(tuple(box.mean(dim=0)) if is_obb else (box[:4:2].mean(), box[1:4:2].mean()))
173
170
  if len(self.track_line) > 30:
174
171
  self.track_line.pop(0)
175
172
 
@@ -1,6 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
-
4
3
  from ultralytics.solutions.solutions import BaseSolution, SolutionAnnotator, SolutionResults
5
4
  from ultralytics.utils.plotting import colors
6
5
 
@@ -1,6 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
-
4
3
  from ultralytics.utils import LOGGER
5
4
  from ultralytics.utils.checks import check_requirements
6
5
 
@@ -1,6 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
-
4
3
  from ultralytics.utils import LOGGER, SETTINGS, TESTS_RUNNING
5
4
 
6
5
  try:
@@ -343,7 +343,7 @@ def check_python(minimum: str = "3.8.0", hard: bool = True, verbose: bool = Fals
343
343
  @TryExcept()
344
344
  def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=(), install=True, cmds=""):
345
345
  """
346
- Check if installed dependencies meet YOLOv8 requirements and attempt to auto-update if needed.
346
+ Check if installed dependencies meet Ultralytics YOLO models requirements and attempt to auto-update if needed.
347
347
 
348
348
  Args:
349
349
  requirements (Union[Path, str, List[str]]): Path to a requirements.txt file, a single package requirement as a
@@ -665,7 +665,7 @@ def ap_per_class(
665
665
 
666
666
  class Metric(SimpleClass):
667
667
  """
668
- Class for computing evaluation metrics for YOLOv8 model.
668
+ Class for computing evaluation metrics for Ultralytics YOLO models.
669
669
 
670
670
  Attributes:
671
671
  p (list): Precision for each class. Shape: (nc,).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.131
3
+ Version: 8.3.132
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>
@@ -32,6 +32,7 @@ ultralytics/cfg/datasets/Argoverse.yaml
32
32
  ultralytics/cfg/datasets/DOTAv1.5.yaml
33
33
  ultralytics/cfg/datasets/DOTAv1.yaml
34
34
  ultralytics/cfg/datasets/GlobalWheat2020.yaml
35
+ ultralytics/cfg/datasets/HomeObjects-3K.yaml
35
36
  ultralytics/cfg/datasets/ImageNet.yaml
36
37
  ultralytics/cfg/datasets/Objects365.yaml
37
38
  ultralytics/cfg/datasets/SKU-110K.yaml
File without changes
File without changes
File without changes