ultralytics 8.2.58__tar.gz → 8.2.60__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (234) hide show
  1. {ultralytics-8.2.58/ultralytics.egg-info → ultralytics-8.2.60}/PKG-INFO +1 -1
  2. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/exporter.py +1 -1
  4. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/detect/val.py +28 -17
  5. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/obb/val.py +13 -7
  6. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/pose/val.py +20 -2
  7. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/segment/val.py +29 -9
  8. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/modules/block.py +1 -1
  9. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/streamlit_inference.py +7 -5
  10. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/ops.py +0 -21
  11. {ultralytics-8.2.58 → ultralytics-8.2.60/ultralytics.egg-info}/PKG-INFO +1 -1
  12. {ultralytics-8.2.58 → ultralytics-8.2.60}/LICENSE +0 -0
  13. {ultralytics-8.2.58 → ultralytics-8.2.60}/README.md +0 -0
  14. {ultralytics-8.2.58 → ultralytics-8.2.60}/pyproject.toml +0 -0
  15. {ultralytics-8.2.58 → ultralytics-8.2.60}/setup.cfg +0 -0
  16. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/__init__.py +0 -0
  17. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/conftest.py +0 -0
  18. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_cli.py +0 -0
  19. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_cuda.py +0 -0
  20. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_engine.py +0 -0
  21. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_explorer.py +0 -0
  22. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_exports.py +0 -0
  23. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_integrations.py +0 -0
  24. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_python.py +0 -0
  25. {ultralytics-8.2.58 → ultralytics-8.2.60}/tests/test_solutions.py +0 -0
  26. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/assets/bus.jpg +0 -0
  27. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/assets/zidane.jpg +0 -0
  28. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/__init__.py +0 -0
  29. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  30. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  31. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  32. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  33. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  34. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  35. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  36. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  37. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  38. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  39. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  40. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  41. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  42. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco.yaml +0 -0
  43. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  44. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  45. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  46. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  47. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  48. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  49. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  50. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  51. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  52. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  53. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/signature.yaml +0 -0
  54. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  55. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/datasets/xView.yaml +0 -0
  56. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/default.yaml +0 -0
  57. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  58. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  59. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  60. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  61. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  62. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  63. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  64. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  65. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  66. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  67. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  68. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  69. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  70. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  71. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  72. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  73. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  74. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  75. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  76. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  77. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  78. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  79. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  80. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  81. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  82. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  83. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  84. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  85. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  86. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  87. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  88. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  89. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  90. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  91. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  92. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  93. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  94. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  95. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  96. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  97. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  98. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  99. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/__init__.py +0 -0
  100. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/annotator.py +0 -0
  101. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/augment.py +0 -0
  102. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/base.py +0 -0
  103. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/build.py +0 -0
  104. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/converter.py +0 -0
  105. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/dataset.py +0 -0
  106. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/explorer/__init__.py +0 -0
  107. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/explorer/explorer.py +0 -0
  108. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/explorer/gui/__init__.py +0 -0
  109. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/explorer/gui/dash.py +0 -0
  110. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/explorer/utils.py +0 -0
  111. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/loaders.py +0 -0
  112. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/split_dota.py +0 -0
  113. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/data/utils.py +0 -0
  114. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/__init__.py +0 -0
  115. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/model.py +0 -0
  116. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/predictor.py +0 -0
  117. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/results.py +0 -0
  118. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/trainer.py +0 -0
  119. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/tuner.py +0 -0
  120. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/engine/validator.py +0 -0
  121. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/hub/__init__.py +0 -0
  122. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/hub/auth.py +0 -0
  123. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/hub/session.py +0 -0
  124. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/hub/utils.py +0 -0
  125. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/__init__.py +0 -0
  126. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/fastsam/__init__.py +0 -0
  127. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/fastsam/model.py +0 -0
  128. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/fastsam/predict.py +0 -0
  129. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/fastsam/prompt.py +0 -0
  130. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/fastsam/utils.py +0 -0
  131. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/fastsam/val.py +0 -0
  132. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/nas/__init__.py +0 -0
  133. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/nas/model.py +0 -0
  134. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/nas/predict.py +0 -0
  135. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/nas/val.py +0 -0
  136. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/rtdetr/__init__.py +0 -0
  137. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/rtdetr/model.py +0 -0
  138. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/rtdetr/predict.py +0 -0
  139. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/rtdetr/train.py +0 -0
  140. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/rtdetr/val.py +0 -0
  141. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/__init__.py +0 -0
  142. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/amg.py +0 -0
  143. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/build.py +0 -0
  144. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/model.py +0 -0
  145. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/modules/__init__.py +0 -0
  146. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/modules/decoders.py +0 -0
  147. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/modules/encoders.py +0 -0
  148. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/modules/sam.py +0 -0
  149. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  150. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/modules/transformer.py +0 -0
  151. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/sam/predict.py +0 -0
  152. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/utils/__init__.py +0 -0
  153. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/utils/loss.py +0 -0
  154. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/utils/ops.py +0 -0
  155. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/__init__.py +0 -0
  156. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/classify/__init__.py +0 -0
  157. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/classify/predict.py +0 -0
  158. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/classify/train.py +0 -0
  159. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/classify/val.py +0 -0
  160. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/detect/__init__.py +0 -0
  161. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/detect/predict.py +0 -0
  162. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/detect/train.py +0 -0
  163. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/model.py +0 -0
  164. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/obb/__init__.py +0 -0
  165. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/obb/predict.py +0 -0
  166. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/obb/train.py +0 -0
  167. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/pose/__init__.py +0 -0
  168. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/pose/predict.py +0 -0
  169. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/pose/train.py +0 -0
  170. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/segment/__init__.py +0 -0
  171. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/segment/predict.py +0 -0
  172. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/segment/train.py +0 -0
  173. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/world/__init__.py +0 -0
  174. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/world/train.py +0 -0
  175. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/models/yolo/world/train_world.py +0 -0
  176. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/__init__.py +0 -0
  177. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/autobackend.py +0 -0
  178. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/modules/__init__.py +0 -0
  179. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/modules/conv.py +0 -0
  180. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/modules/head.py +0 -0
  181. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/modules/transformer.py +0 -0
  182. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/modules/utils.py +0 -0
  183. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/nn/tasks.py +0 -0
  184. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/__init__.py +0 -0
  185. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/ai_gym.py +0 -0
  186. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/analytics.py +0 -0
  187. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/distance_calculation.py +0 -0
  188. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/heatmap.py +0 -0
  189. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/object_counter.py +0 -0
  190. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/parking_management.py +0 -0
  191. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/queue_management.py +0 -0
  192. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/solutions/speed_estimation.py +0 -0
  193. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/__init__.py +0 -0
  194. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/basetrack.py +0 -0
  195. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/bot_sort.py +0 -0
  196. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/byte_tracker.py +0 -0
  197. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/track.py +0 -0
  198. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/utils/__init__.py +0 -0
  199. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/utils/gmc.py +0 -0
  200. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  201. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/trackers/utils/matching.py +0 -0
  202. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/__init__.py +0 -0
  203. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/autobatch.py +0 -0
  204. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/benchmarks.py +0 -0
  205. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/__init__.py +0 -0
  206. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/base.py +0 -0
  207. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/clearml.py +0 -0
  208. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/comet.py +0 -0
  209. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/dvc.py +0 -0
  210. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/hub.py +0 -0
  211. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/mlflow.py +0 -0
  212. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/neptune.py +0 -0
  213. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/raytune.py +0 -0
  214. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  215. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/callbacks/wb.py +0 -0
  216. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/checks.py +0 -0
  217. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/dist.py +0 -0
  218. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/downloads.py +0 -0
  219. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/errors.py +0 -0
  220. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/files.py +0 -0
  221. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/instance.py +0 -0
  222. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/loss.py +0 -0
  223. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/metrics.py +0 -0
  224. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/patches.py +0 -0
  225. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/plotting.py +0 -0
  226. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/tal.py +0 -0
  227. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/torch_utils.py +0 -0
  228. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/triton.py +0 -0
  229. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics/utils/tuner.py +0 -0
  230. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics.egg-info/SOURCES.txt +0 -0
  231. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics.egg-info/dependency_links.txt +0 -0
  232. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics.egg-info/entry_points.txt +0 -0
  233. {ultralytics-8.2.58 → ultralytics-8.2.60}/ultralytics.egg-info/requires.txt +0 -0
  234. {ultralytics-8.2.58 → ultralytics-8.2.60}/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.2.58
3
+ Version: 8.2.60
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.58"
3
+ __version__ = "8.2.60"
4
4
 
5
5
  import os
6
6
 
@@ -563,7 +563,7 @@ class Exporter:
563
563
  LOGGER.warning(f"{prefix} WARNING ⚠️ PNNX GitHub assets not found: {e}, using default {asset}")
564
564
  unzip_dir = safe_download(f"https://github.com/pnnx/pnnx/releases/download/{release}/{asset}", delete=True)
565
565
  if check_is_path_safe(Path.cwd(), unzip_dir): # avoid path traversal security vulnerability
566
- (unzip_dir / name).rename(pnnx) # move binary to ROOT
566
+ shutil.move(src=unzip_dir / name, dst=pnnx) # move binary to ROOT
567
567
  pnnx.chmod(0o777) # set read, write, and execute permissions for everyone
568
568
  shutil.rmtree(unzip_dir) # delete unzip dir
569
569
 
@@ -41,6 +41,11 @@ class DetectionValidator(BaseValidator):
41
41
  self.iouv = torch.linspace(0.5, 0.95, 10) # IoU vector for mAP@0.5:0.95
42
42
  self.niou = self.iouv.numel()
43
43
  self.lb = [] # for autolabelling
44
+ if self.args.save_hybrid:
45
+ LOGGER.warning(
46
+ "WARNING ⚠️ 'save_hybrid=True' will append ground truth to predictions for autolabelling.\n"
47
+ "WARNING ⚠️ 'save_hybrid=True' will cause incorrect mAP.\n"
48
+ )
44
49
 
45
50
  def preprocess(self, batch):
46
51
  """Preprocesses batch of images for YOLO training."""
@@ -53,21 +58,21 @@ class DetectionValidator(BaseValidator):
53
58
  height, width = batch["img"].shape[2:]
54
59
  nb = len(batch["img"])
55
60
  bboxes = batch["bboxes"] * torch.tensor((width, height, width, height), device=self.device)
56
- self.lb = (
57
- [
58
- torch.cat([batch["cls"][batch["batch_idx"] == i], bboxes[batch["batch_idx"] == i]], dim=-1)
59
- for i in range(nb)
60
- ]
61
- if self.args.save_hybrid
62
- else []
63
- ) # for autolabelling
61
+ self.lb = [
62
+ torch.cat([batch["cls"][batch["batch_idx"] == i], bboxes[batch["batch_idx"] == i]], dim=-1)
63
+ for i in range(nb)
64
+ ]
64
65
 
65
66
  return batch
66
67
 
67
68
  def init_metrics(self, model):
68
69
  """Initialize evaluation metrics for YOLO."""
69
70
  val = self.data.get(self.args.split, "") # validation path
70
- self.is_coco = isinstance(val, str) and "coco" in val and val.endswith(f"{os.sep}val2017.txt") # is COCO
71
+ self.is_coco = (
72
+ isinstance(val, str)
73
+ and "coco" in val
74
+ and (val.endswith(f"{os.sep}val2017.txt") or val.endswith(f"{os.sep}test-dev2017.txt"))
75
+ ) # is COCO
71
76
  self.is_lvis = isinstance(val, str) and "lvis" in val and not self.is_coco # is LVIS
72
77
  self.class_map = converter.coco80_to_coco91_class() if self.is_coco else list(range(len(model.names)))
73
78
  self.args.save_json |= (self.is_coco or self.is_lvis) and not self.training # run on final val if training COCO
@@ -159,8 +164,12 @@ class DetectionValidator(BaseValidator):
159
164
  if self.args.save_json:
160
165
  self.pred_to_json(predn, batch["im_file"][si])
161
166
  if self.args.save_txt:
162
- file = self.save_dir / "labels" / f'{Path(batch["im_file"][si]).stem}.txt'
163
- self.save_one_txt(predn, self.args.save_conf, pbatch["ori_shape"], file)
167
+ self.save_one_txt(
168
+ predn,
169
+ self.args.save_conf,
170
+ pbatch["ori_shape"],
171
+ self.save_dir / "labels" / f'{Path(batch["im_file"][si]).stem}.txt',
172
+ )
164
173
 
165
174
  def finalize_metrics(self, *args, **kwargs):
166
175
  """Set final values for metrics speed and confusion matrix."""
@@ -260,12 +269,14 @@ class DetectionValidator(BaseValidator):
260
269
 
261
270
  def save_one_txt(self, predn, save_conf, shape, file):
262
271
  """Save YOLO detections to a txt file in normalized coordinates in a specific format."""
263
- gn = torch.tensor(shape)[[1, 0, 1, 0]] # normalization gain whwh
264
- for *xyxy, conf, cls in predn.tolist():
265
- xywh = (ops.xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh
266
- line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format
267
- with open(file, "a") as f:
268
- f.write(("%g " * len(line)).rstrip() % line + "\n")
272
+ from ultralytics.engine.results import Results
273
+
274
+ Results(
275
+ np.zeros((shape[0], shape[1]), dtype=np.uint8),
276
+ path=None,
277
+ names=self.names,
278
+ boxes=predn[:, :6],
279
+ ).save_txt(file, save_conf=save_conf)
269
280
 
270
281
  def pred_to_json(self, predn, filename):
271
282
  """Serialize YOLO predictions to COCO json format."""
@@ -130,13 +130,19 @@ class OBBValidator(DetectionValidator):
130
130
 
131
131
  def save_one_txt(self, predn, save_conf, shape, file):
132
132
  """Save YOLO detections to a txt file in normalized coordinates in a specific format."""
133
- gn = torch.tensor(shape)[[1, 0]] # normalization gain whwh
134
- for *xywh, conf, cls, angle in predn.tolist():
135
- xywha = torch.tensor([*xywh, angle]).view(1, 5)
136
- xyxyxyxy = (ops.xywhr2xyxyxyxy(xywha) / gn).view(-1).tolist() # normalized xywh
137
- line = (cls, *xyxyxyxy, conf) if save_conf else (cls, *xyxyxyxy) # label format
138
- with open(file, "a") as f:
139
- f.write(("%g " * len(line)).rstrip() % line + "\n")
133
+ import numpy as np
134
+
135
+ from ultralytics.engine.results import Results
136
+
137
+ rboxes = torch.cat([predn[:, :4], predn[:, -1:]], dim=-1)
138
+ # xywh, r, conf, cls
139
+ obb = torch.cat([rboxes, predn[:, 4:6]], dim=-1)
140
+ Results(
141
+ np.zeros((shape[0], shape[1]), dtype=np.uint8),
142
+ path=None,
143
+ names=self.names,
144
+ obb=obb,
145
+ ).save_txt(file, save_conf=save_conf)
140
146
 
141
147
  def eval_json(self, stats):
142
148
  """Evaluates YOLO output in JSON format and returns performance statistics."""
@@ -147,8 +147,14 @@ class PoseValidator(DetectionValidator):
147
147
  # Save
148
148
  if self.args.save_json:
149
149
  self.pred_to_json(predn, batch["im_file"][si])
150
- # if self.args.save_txt:
151
- # save_one_txt(predn, save_conf, shape, file=save_dir / 'labels' / f'{path.stem}.txt')
150
+ if self.args.save_txt:
151
+ self.save_one_txt(
152
+ predn,
153
+ pred_kpts,
154
+ self.args.save_conf,
155
+ pbatch["ori_shape"],
156
+ self.save_dir / "labels" / f'{Path(batch["im_file"][si]).stem}.txt',
157
+ )
152
158
 
153
159
  def _process_batch(self, detections, gt_bboxes, gt_cls, pred_kpts=None, gt_kpts=None):
154
160
  """
@@ -217,6 +223,18 @@ class PoseValidator(DetectionValidator):
217
223
  on_plot=self.on_plot,
218
224
  ) # pred
219
225
 
226
+ def save_one_txt(self, predn, pred_kpts, save_conf, shape, file):
227
+ """Save YOLO detections to a txt file in normalized coordinates in a specific format."""
228
+ from ultralytics.engine.results import Results
229
+
230
+ Results(
231
+ np.zeros((shape[0], shape[1]), dtype=np.uint8),
232
+ path=None,
233
+ names=self.names,
234
+ boxes=predn[:, :6],
235
+ keypoints=pred_kpts,
236
+ ).save_txt(file, save_conf=save_conf)
237
+
220
238
  def pred_to_json(self, predn, filename):
221
239
  """Converts YOLO predictions to COCO JSON format."""
222
240
  stem = Path(filename).stem
@@ -48,9 +48,8 @@ class SegmentationValidator(DetectionValidator):
48
48
  self.plot_masks = []
49
49
  if self.args.save_json:
50
50
  check_requirements("pycocotools>=2.0.6")
51
- self.process = ops.process_mask_upsample # more accurate
52
- else:
53
- self.process = ops.process_mask # faster
51
+ # more accurate vs faster
52
+ self.process = ops.process_mask_native if self.args.save_json or self.args.save_txt else ops.process_mask
54
53
  self.stats = dict(tp_m=[], tp=[], conf=[], pred_cls=[], target_cls=[], target_img=[])
55
54
 
56
55
  def get_desc(self):
@@ -148,14 +147,23 @@ class SegmentationValidator(DetectionValidator):
148
147
 
149
148
  # Save
150
149
  if self.args.save_json:
151
- pred_masks = ops.scale_image(
152
- pred_masks.permute(1, 2, 0).contiguous().cpu().numpy(),
150
+ self.pred_to_json(
151
+ predn,
152
+ batch["im_file"][si],
153
+ ops.scale_image(
154
+ pred_masks.permute(1, 2, 0).contiguous().cpu().numpy(),
155
+ pbatch["ori_shape"],
156
+ ratio_pad=batch["ratio_pad"][si],
157
+ ),
158
+ )
159
+ if self.args.save_txt:
160
+ self.save_one_txt(
161
+ predn,
162
+ pred_masks,
163
+ self.args.save_conf,
153
164
  pbatch["ori_shape"],
154
- ratio_pad=batch["ratio_pad"][si],
165
+ self.save_dir / "labels" / f'{Path(batch["im_file"][si]).stem}.txt',
155
166
  )
156
- self.pred_to_json(predn, batch["im_file"][si], pred_masks)
157
- # if self.args.save_txt:
158
- # save_one_txt(predn, save_conf, shape, file=save_dir / 'labels' / f'{path.stem}.txt')
159
167
 
160
168
  def finalize_metrics(self, *args, **kwargs):
161
169
  """Sets speed and confusion matrix for evaluation metrics."""
@@ -235,6 +243,18 @@ class SegmentationValidator(DetectionValidator):
235
243
  ) # pred
236
244
  self.plot_masks.clear()
237
245
 
246
+ def save_one_txt(self, predn, pred_masks, save_conf, shape, file):
247
+ """Save YOLO detections to a txt file in normalized coordinates in a specific format."""
248
+ from ultralytics.engine.results import Results
249
+
250
+ Results(
251
+ np.zeros((shape[0], shape[1]), dtype=np.uint8),
252
+ path=None,
253
+ names=self.names,
254
+ boxes=predn[:, :6],
255
+ masks=pred_masks,
256
+ ).save_txt(file, save_conf=save_conf)
257
+
238
258
  def pred_to_json(self, predn, filename, pred_masks):
239
259
  """
240
260
  Save one JSON result.
@@ -855,7 +855,7 @@ class Attention(nn.Module):
855
855
  self.head_dim = dim // num_heads
856
856
  self.key_dim = int(self.head_dim * attn_ratio)
857
857
  self.scale = self.key_dim**-0.5
858
- nh_kd = nh_kd = self.key_dim * num_heads
858
+ nh_kd = self.key_dim * num_heads
859
859
  h = dim + nh_kd * 2
860
860
  self.qkv = Conv(dim, h, 1, act=False)
861
861
  self.proj = Conv(dim, dim, 1, act=False)
@@ -99,24 +99,26 @@ def inference():
99
99
 
100
100
  stop_button = st.button("Stop") # Button to stop the inference
101
101
 
102
- prev_time = 0
103
102
  while videocapture.isOpened():
104
103
  success, frame = videocapture.read()
105
104
  if not success:
106
105
  st.warning("Failed to read frame from webcam. Please make sure the webcam is connected properly.")
107
106
  break
108
107
 
109
- curr_time = time.time()
110
- fps = 1 / (curr_time - prev_time)
111
- prev_time = curr_time
108
+ prev_time = time.time()
112
109
 
113
110
  # Store model predictions
114
- if enable_trk:
111
+ if enable_trk == "Yes":
115
112
  results = model.track(frame, conf=conf, iou=iou, classes=selected_ind, persist=True)
116
113
  else:
117
114
  results = model(frame, conf=conf, iou=iou, classes=selected_ind)
118
115
  annotated_frame = results[0].plot() # Add annotations on frame
119
116
 
117
+ # Calculate model FPS
118
+ curr_time = time.time()
119
+ fps = 1 / (curr_time - prev_time)
120
+ prev_time = curr_time
121
+
120
122
  # display frame
121
123
  org_frame.image(frame, channels="BGR")
122
124
  ann_frame.image(annotated_frame, channels="BGR")
@@ -652,27 +652,6 @@ def crop_mask(masks, boxes):
652
652
  return masks * ((r >= x1) * (r < x2) * (c >= y1) * (c < y2))
653
653
 
654
654
 
655
- def process_mask_upsample(protos, masks_in, bboxes, shape):
656
- """
657
- Takes the output of the mask head, and applies the mask to the bounding boxes. This produces masks of higher quality
658
- but is slower.
659
-
660
- Args:
661
- protos (torch.Tensor): [mask_dim, mask_h, mask_w]
662
- masks_in (torch.Tensor): [n, mask_dim], n is number of masks after nms
663
- bboxes (torch.Tensor): [n, 4], n is number of masks after nms
664
- shape (tuple): the size of the input image (h,w)
665
-
666
- Returns:
667
- (torch.Tensor): The upsampled masks.
668
- """
669
- c, mh, mw = protos.shape # CHW
670
- masks = (masks_in @ protos.float().view(c, -1)).view(-1, mh, mw)
671
- masks = F.interpolate(masks[None], shape, mode="bilinear", align_corners=False)[0] # CHW
672
- masks = crop_mask(masks, bboxes) # CHW
673
- return masks.gt_(0.0)
674
-
675
-
676
655
  def process_mask(protos, masks_in, bboxes, shape, upsample=False):
677
656
  """
678
657
  Apply masks to bounding boxes using the output of the mask head.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.58
3
+ Version: 8.2.60
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
File without changes
File without changes
File without changes