ultralytics 8.3.70__tar.gz → 8.3.71__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 (246) hide show
  1. {ultralytics-8.3.70/ultralytics.egg-info → ultralytics-8.3.71}/PKG-INFO +2 -1
  2. {ultralytics-8.3.70 → ultralytics-8.3.71}/pyproject.toml +1 -0
  3. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v6/yolov6.yaml +1 -1
  5. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/model.py +9 -9
  6. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/results.py +25 -20
  7. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/sam.py +1 -2
  8. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/val.py +1 -1
  9. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/autobackend.py +1 -1
  10. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/tasks.py +30 -32
  11. {ultralytics-8.3.70 → ultralytics-8.3.71/ultralytics.egg-info}/PKG-INFO +2 -1
  12. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/requires.txt +1 -0
  13. {ultralytics-8.3.70 → ultralytics-8.3.71}/LICENSE +0 -0
  14. {ultralytics-8.3.70 → ultralytics-8.3.71}/README.md +0 -0
  15. {ultralytics-8.3.70 → ultralytics-8.3.71}/setup.cfg +0 -0
  16. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/__init__.py +0 -0
  17. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/conftest.py +0 -0
  18. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_cli.py +0 -0
  19. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_cuda.py +0 -0
  20. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_engine.py +0 -0
  21. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_exports.py +0 -0
  22. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_integrations.py +0 -0
  23. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_python.py +0 -0
  24. {ultralytics-8.3.70 → ultralytics-8.3.71}/tests/test_solutions.py +0 -0
  25. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/assets/bus.jpg +0 -0
  26. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/assets/zidane.jpg +0 -0
  27. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/__init__.py +0 -0
  28. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  29. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  30. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  31. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  32. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  33. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  34. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  35. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  36. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  37. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  38. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  39. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  40. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  41. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco.yaml +0 -0
  42. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  43. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  44. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  45. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  46. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  47. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  48. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  49. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  50. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  51. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  52. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  53. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  54. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  55. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/signature.yaml +0 -0
  56. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  57. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/datasets/xView.yaml +0 -0
  58. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/default.yaml +0 -0
  59. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  60. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  61. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  62. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  63. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  64. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  65. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  66. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  67. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  68. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  69. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  70. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  71. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  72. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  73. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  74. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  75. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  76. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  77. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  78. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  79. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  80. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  81. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  82. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  83. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  84. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  85. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  86. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  87. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  88. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  89. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  90. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  91. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  92. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  93. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  94. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  95. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  96. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  97. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  98. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  99. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  100. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  101. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  102. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  103. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  104. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/solutions/default.yaml +0 -0
  105. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  106. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  107. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/__init__.py +0 -0
  108. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/annotator.py +0 -0
  109. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/augment.py +0 -0
  110. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/base.py +0 -0
  111. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/build.py +0 -0
  112. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/converter.py +0 -0
  113. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/dataset.py +0 -0
  114. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/loaders.py +0 -0
  115. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/split_dota.py +0 -0
  116. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/data/utils.py +0 -0
  117. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/__init__.py +0 -0
  118. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/exporter.py +0 -0
  119. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/predictor.py +0 -0
  120. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/trainer.py +0 -0
  121. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/tuner.py +0 -0
  122. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/engine/validator.py +0 -0
  123. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/__init__.py +0 -0
  124. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/auth.py +0 -0
  125. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/google/__init__.py +0 -0
  126. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/session.py +0 -0
  127. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/hub/utils.py +0 -0
  128. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/__init__.py +0 -0
  129. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/__init__.py +0 -0
  130. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/model.py +0 -0
  131. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/predict.py +0 -0
  132. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/utils.py +0 -0
  133. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/fastsam/val.py +0 -0
  134. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/__init__.py +0 -0
  135. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/model.py +0 -0
  136. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/predict.py +0 -0
  137. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/nas/val.py +0 -0
  138. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/__init__.py +0 -0
  139. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/model.py +0 -0
  140. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/predict.py +0 -0
  141. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/train.py +0 -0
  142. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/rtdetr/val.py +0 -0
  143. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/__init__.py +0 -0
  144. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/amg.py +0 -0
  145. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/build.py +0 -0
  146. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/model.py +0 -0
  147. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/__init__.py +0 -0
  148. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/blocks.py +0 -0
  149. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/decoders.py +0 -0
  150. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/encoders.py +0 -0
  151. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  152. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  153. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/transformer.py +0 -0
  154. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/modules/utils.py +0 -0
  155. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/sam/predict.py +0 -0
  156. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/utils/__init__.py +0 -0
  157. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/utils/loss.py +0 -0
  158. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/utils/ops.py +0 -0
  159. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/__init__.py +0 -0
  160. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/__init__.py +0 -0
  161. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/predict.py +0 -0
  162. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/train.py +0 -0
  163. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/classify/val.py +0 -0
  164. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/__init__.py +0 -0
  165. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/predict.py +0 -0
  166. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/train.py +0 -0
  167. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/detect/val.py +0 -0
  168. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/model.py +0 -0
  169. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/__init__.py +0 -0
  170. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/predict.py +0 -0
  171. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/train.py +0 -0
  172. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/obb/val.py +0 -0
  173. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/__init__.py +0 -0
  174. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/predict.py +0 -0
  175. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/pose/train.py +0 -0
  176. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/__init__.py +0 -0
  177. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/predict.py +0 -0
  178. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/train.py +0 -0
  179. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/segment/val.py +0 -0
  180. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/world/__init__.py +0 -0
  181. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/world/train.py +0 -0
  182. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/models/yolo/world/train_world.py +0 -0
  183. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/__init__.py +0 -0
  184. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/__init__.py +0 -0
  185. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/activation.py +0 -0
  186. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/block.py +0 -0
  187. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/conv.py +0 -0
  188. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/head.py +0 -0
  189. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/transformer.py +0 -0
  190. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/nn/modules/utils.py +0 -0
  191. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/__init__.py +0 -0
  192. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/ai_gym.py +0 -0
  193. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/analytics.py +0 -0
  194. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/distance_calculation.py +0 -0
  195. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/heatmap.py +0 -0
  196. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/object_counter.py +0 -0
  197. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/parking_management.py +0 -0
  198. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/queue_management.py +0 -0
  199. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/region_counter.py +0 -0
  200. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/security_alarm.py +0 -0
  201. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/solutions.py +0 -0
  202. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/speed_estimation.py +0 -0
  203. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/streamlit_inference.py +0 -0
  204. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/solutions/trackzone.py +0 -0
  205. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/__init__.py +0 -0
  206. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/basetrack.py +0 -0
  207. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/bot_sort.py +0 -0
  208. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/byte_tracker.py +0 -0
  209. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/track.py +0 -0
  210. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/__init__.py +0 -0
  211. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/gmc.py +0 -0
  212. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  213. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/trackers/utils/matching.py +0 -0
  214. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/__init__.py +0 -0
  215. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/autobatch.py +0 -0
  216. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/benchmarks.py +0 -0
  217. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/__init__.py +0 -0
  218. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/base.py +0 -0
  219. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/clearml.py +0 -0
  220. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/comet.py +0 -0
  221. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/dvc.py +0 -0
  222. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/hub.py +0 -0
  223. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/mlflow.py +0 -0
  224. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/neptune.py +0 -0
  225. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/raytune.py +0 -0
  226. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  227. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/callbacks/wb.py +0 -0
  228. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/checks.py +0 -0
  229. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/dist.py +0 -0
  230. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/downloads.py +0 -0
  231. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/errors.py +0 -0
  232. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/files.py +0 -0
  233. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/instance.py +0 -0
  234. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/loss.py +0 -0
  235. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/metrics.py +0 -0
  236. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/ops.py +0 -0
  237. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/patches.py +0 -0
  238. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/plotting.py +0 -0
  239. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/tal.py +0 -0
  240. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/torch_utils.py +0 -0
  241. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/triton.py +0 -0
  242. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics/utils/tuner.py +0 -0
  243. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/SOURCES.txt +0 -0
  244. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/dependency_links.txt +0 -0
  245. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/entry_points.txt +0 -0
  246. {ultralytics-8.3.70 → ultralytics-8.3.71}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ultralytics
3
- Version: 8.3.70
3
+ Version: 8.3.71
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>
@@ -54,6 +54,7 @@ Requires-Dist: pytest; extra == "dev"
54
54
  Requires-Dist: pytest-cov; extra == "dev"
55
55
  Requires-Dist: coverage[toml]; extra == "dev"
56
56
  Requires-Dist: mkdocs>=1.6.0; extra == "dev"
57
+ Requires-Dist: beautifulsoup4<=4.12.3; extra == "dev"
57
58
  Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
58
59
  Requires-Dist: mkdocstrings[python]; extra == "dev"
59
60
  Requires-Dist: mkdocs-redirects; extra == "dev"
@@ -87,6 +87,7 @@ dev = [
87
87
  "pytest-cov",
88
88
  "coverage[toml]",
89
89
  "mkdocs>=1.6.0",
90
+ "beautifulsoup4<=4.12.3", # For docs https://github.com/ultralytics/ultralytics/pull/19067
90
91
  "mkdocs-material>=9.5.9",
91
92
  "mkdocstrings[python]",
92
93
  "mkdocs-redirects", # 301 redirects
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.70"
3
+ __version__ = "8.3.71"
4
4
 
5
5
  import os
6
6
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  # Parameters
8
8
  nc: 80 # number of classes
9
- activation: nn.ReLU() # (optional) model default activation function
9
+ activation: torch.nn.ReLU() # (optional) model default activation function
10
10
  scales: # model compound scaling constants, i.e. 'model=yolov6n.yaml' will call yolov8.yaml with scale 'n'
11
11
  # [depth, width, max_channels]
12
12
  n: [0.33, 0.25, 1024]
@@ -11,7 +11,7 @@ from PIL import Image
11
11
  from ultralytics.cfg import TASK2DATA, get_cfg, get_save_dir
12
12
  from ultralytics.engine.results import Results
13
13
  from ultralytics.hub import HUB_WEB_ROOT, HUBTrainingSession
14
- from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task, nn, yaml_model_load
14
+ from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task, yaml_model_load
15
15
  from ultralytics.utils import (
16
16
  ARGV,
17
17
  ASSETS,
@@ -26,7 +26,7 @@ from ultralytics.utils import (
26
26
  )
27
27
 
28
28
 
29
- class Model(nn.Module):
29
+ class Model(torch.nn.Module):
30
30
  """
31
31
  A base class for implementing YOLO models, unifying APIs across different model types.
32
32
 
@@ -37,7 +37,7 @@ class Model(nn.Module):
37
37
  Attributes:
38
38
  callbacks (Dict): A dictionary of callback functions for various events during model operations.
39
39
  predictor (BasePredictor): The predictor object used for making predictions.
40
- model (nn.Module): The underlying PyTorch model.
40
+ model (torch.nn.Module): The underlying PyTorch model.
41
41
  trainer (BaseTrainer): The trainer object used for training the model.
42
42
  ckpt (Dict): The checkpoint data if the model is loaded from a *.pt file.
43
43
  cfg (str): The configuration of the model if loaded from a *.yaml file.
@@ -317,7 +317,7 @@ class Model(nn.Module):
317
317
  >>> model._check_is_pytorch_model() # Raises TypeError
318
318
  """
319
319
  pt_str = isinstance(self.model, (str, Path)) and Path(self.model).suffix == ".pt"
320
- pt_module = isinstance(self.model, nn.Module)
320
+ pt_module = isinstance(self.model, torch.nn.Module)
321
321
  if not (pt_module or pt_str):
322
322
  raise TypeError(
323
323
  f"model='{self.model}' should be a *.pt PyTorch model to run this method, but is a different format. "
@@ -405,7 +405,7 @@ class Model(nn.Module):
405
405
  from ultralytics import __version__
406
406
 
407
407
  updates = {
408
- "model": deepcopy(self.model).half() if isinstance(self.model, nn.Module) else self.model,
408
+ "model": deepcopy(self.model).half() if isinstance(self.model, torch.nn.Module) else self.model,
409
409
  "date": datetime.now().isoformat(),
410
410
  "version": __version__,
411
411
  "license": "AGPL-3.0 License (https://ultralytics.com/license)",
@@ -452,7 +452,7 @@ class Model(nn.Module):
452
452
  performs both convolution and normalization in one step.
453
453
 
454
454
  Raises:
455
- TypeError: If the model is not a PyTorch nn.Module.
455
+ TypeError: If the model is not a PyTorch torch.nn.Module.
456
456
 
457
457
  Examples:
458
458
  >>> model = Model("yolo11n.pt")
@@ -921,13 +921,13 @@ class Model(nn.Module):
921
921
  Retrieves the device on which the model's parameters are allocated.
922
922
 
923
923
  This property determines the device (CPU or GPU) where the model's parameters are currently stored. It is
924
- applicable only to models that are instances of nn.Module.
924
+ applicable only to models that are instances of torch.nn.Module.
925
925
 
926
926
  Returns:
927
927
  (torch.device): The device (CPU/GPU) of the model.
928
928
 
929
929
  Raises:
930
- AttributeError: If the model is not a PyTorch nn.Module instance.
930
+ AttributeError: If the model is not a torch.nn.Module instance.
931
931
 
932
932
  Examples:
933
933
  >>> model = YOLO("yolo11n.pt")
@@ -937,7 +937,7 @@ class Model(nn.Module):
937
937
  >>> print(model.device)
938
938
  device(type='cpu')
939
939
  """
940
- return next(self.model.parameters()).device if isinstance(self.model, nn.Module) else None
940
+ return next(self.model.parameters()).device if isinstance(self.model, torch.nn.Module) else None
941
941
 
942
942
  @property
943
943
  def transforms(self):
@@ -494,8 +494,8 @@ class Results(SimpleClass):
494
494
  Examples:
495
495
  >>> results = model("image.jpg")
496
496
  >>> for result in results:
497
- ... im = result.plot()
498
- ... im.show()
497
+ >>> im = result.plot()
498
+ >>> im.show()
499
499
  """
500
500
  assert color_mode in {"instance", "class"}, f"Expected color_mode='instance' or 'class', not {color_mode}."
501
501
  if img is None and isinstance(self.orig_img, torch.Tensor):
@@ -600,7 +600,7 @@ class Results(SimpleClass):
600
600
  >>> results = model("path/to/image.jpg")
601
601
  >>> results[0].show() # Display the first result
602
602
  >>> for result in results:
603
- ... result.show() # Display all results
603
+ >>> result.show() # Display all results
604
604
  """
605
605
  self.plot(show=True, *args, **kwargs)
606
606
 
@@ -620,10 +620,10 @@ class Results(SimpleClass):
620
620
  Examples:
621
621
  >>> results = model("path/to/image.jpg")
622
622
  >>> for result in results:
623
- ... result.save("annotated_image.jpg")
623
+ >>> result.save("annotated_image.jpg")
624
624
  >>> # Or with custom plot arguments
625
625
  >>> for result in results:
626
- ... result.save("annotated_image.jpg", conf=False, line_width=2)
626
+ >>> result.save("annotated_image.jpg", conf=False, line_width=2)
627
627
  """
628
628
  if not filename:
629
629
  filename = f"results_{Path(self.path).name}"
@@ -644,7 +644,7 @@ class Results(SimpleClass):
644
644
  Examples:
645
645
  >>> results = model("path/to/image.jpg")
646
646
  >>> for result in results:
647
- ... print(result.verbose())
647
+ >>> print(result.verbose())
648
648
  2 persons, 1 car, 3 traffic lights,
649
649
  dog 0.92, cat 0.78, horse 0.64,
650
650
 
@@ -681,7 +681,7 @@ class Results(SimpleClass):
681
681
  >>> model = YOLO("yolo11n.pt")
682
682
  >>> results = model("path/to/image.jpg")
683
683
  >>> for result in results:
684
- ... result.save_txt("output.txt")
684
+ >>> result.save_txt("output.txt")
685
685
 
686
686
  Notes:
687
687
  - The file will contain one line per detection or classification with the following structure:
@@ -740,7 +740,7 @@ class Results(SimpleClass):
740
740
  Examples:
741
741
  >>> results = model("path/to/image.jpg")
742
742
  >>> for result in results:
743
- ... result.save_crop(save_dir="path/to/crops", file_name="detection")
743
+ >>> result.save_crop(save_dir="path/to/crops", file_name="detection")
744
744
  """
745
745
  if self.probs is not None:
746
746
  LOGGER.warning("WARNING ⚠️ Classify task do not support `save_crop`.")
@@ -776,8 +776,9 @@ class Results(SimpleClass):
776
776
 
777
777
  Examples:
778
778
  >>> results = model("image.jpg")
779
- >>> summary = results[0].summary()
780
- >>> print(summary)
779
+ >>> for result in results:
780
+ >>> summary = result.summary()
781
+ >>> print(summary)
781
782
  """
782
783
  # Create list of detection dictionaries
783
784
  results = []
@@ -839,8 +840,9 @@ class Results(SimpleClass):
839
840
 
840
841
  Examples:
841
842
  >>> results = model("path/to/image.jpg")
842
- >>> df_result = results[0].to_df()
843
- >>> print(df_result)
843
+ >>> for result in results:
844
+ >>> df_result = result.to_df()
845
+ >>> print(df_result)
844
846
  """
845
847
  import pandas as pd # scope for faster 'import ultralytics'
846
848
 
@@ -867,8 +869,9 @@ class Results(SimpleClass):
867
869
 
868
870
  Examples:
869
871
  >>> results = model("path/to/image.jpg")
870
- >>> csv_result = results[0].to_csv()
871
- >>> print(csv_result)
872
+ >>> for result in results:
873
+ >>> csv_result = result.to_csv()
874
+ >>> print(csv_result)
872
875
  """
873
876
  return self.to_df(normalize=normalize, decimals=decimals).to_csv(*args, **kwargs)
874
877
 
@@ -892,8 +895,9 @@ class Results(SimpleClass):
892
895
 
893
896
  Examples:
894
897
  >>> results = model("path/to/image.jpg")
895
- >>> xml_result = results[0].to_xml()
896
- >>> print(xml_result)
898
+ >>> for result in results:
899
+ >>> xml_result = result.to_xml()
900
+ >>> print(xml_result)
897
901
  """
898
902
  check_requirements("lxml")
899
903
  df = self.to_df(normalize=normalize, decimals=decimals)
@@ -922,8 +926,9 @@ class Results(SimpleClass):
922
926
 
923
927
  Examples:
924
928
  >>> results = model("path/to/image.jpg")
925
- >>> json_result = results[0].to_json()
926
- >>> print(json_result)
929
+ >>> for result in results:
930
+ >>> json_result = result.to_json()
931
+ >>> print(json_result)
927
932
 
928
933
  Notes:
929
934
  - For classification tasks, the JSON will contain class probabilities instead of bounding boxes.
@@ -954,8 +959,8 @@ class Results(SimpleClass):
954
959
 
955
960
  Examples:
956
961
  >>> results = model("path/to/image.jpg")
957
- >>> results[0].to_sql()
958
- >>> print("SQL data written successfully.")
962
+ >>> for result in results:
963
+ >>> result.to_sql()
959
964
  """
960
965
  import json
961
966
  import sqlite3
@@ -426,8 +426,7 @@ class SAM2Model(torch.nn.Module):
426
426
  high_res_masks: Tensor of shape (B, 1, H*16, W*16) with the best high-resolution mask.
427
427
  obj_ptr: Tensor of shape (B, C) with object pointer vector for the output mask.
428
428
  object_score_logits: Tensor of shape (B) with object score logits.
429
-
430
- Where M is 3 if multimask_output=True, and 1 if multimask_output=False.
429
+ Where M is 3 if multimask_output=True, and 1 if multimask_output=False.
431
430
 
432
431
  Examples:
433
432
  >>> backbone_features = torch.rand(1, 256, 32, 32)
@@ -158,7 +158,7 @@ class PoseValidator(DetectionValidator):
158
158
  gt_kpts (torch.Tensor | None): Optional tensor with shape (N, 51) representing ground truth keypoints.
159
159
 
160
160
  Returns:
161
- torch.Tensor: A tensor with shape (N, 10) representing the correct prediction matrix for 10 IoU levels,
161
+ (torch.Tensor): A tensor with shape (N, 10) representing the correct prediction matrix for 10 IoU levels,
162
162
  where N is the number of detections.
163
163
 
164
164
  Example:
@@ -780,7 +780,7 @@ class AutoBackend(nn.Module):
780
780
  saved_model, pb, tflite, edgetpu, tfjs, ncnn or paddle.
781
781
 
782
782
  Args:
783
- p: path to the model file. Defaults to path/to/model.pt
783
+ p (str): path to the model file. Defaults to path/to/model.pt
784
784
 
785
785
  Examples:
786
786
  >>> model = AutoBackend(weights="path/to/model.onnx")
@@ -9,7 +9,6 @@ from pathlib import Path
9
9
 
10
10
  import thop
11
11
  import torch
12
- import torch.nn as nn
13
12
 
14
13
  from ultralytics.nn.modules import (
15
14
  AIFI,
@@ -88,7 +87,7 @@ from ultralytics.utils.torch_utils import (
88
87
  )
89
88
 
90
89
 
91
- class BaseModel(nn.Module):
90
+ class BaseModel(torch.nn.Module):
92
91
  """The BaseModel class serves as a base class for all the models in the Ultralytics YOLO family."""
93
92
 
94
93
  def forward(self, x, *args, **kwargs):
@@ -151,7 +150,7 @@ class BaseModel(nn.Module):
151
150
  if visualize:
152
151
  feature_visualization(x, m.type, m.i, save_dir=visualize)
153
152
  if embed and m.i in embed:
154
- embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
153
+ embeddings.append(torch.nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
155
154
  if m.i == max(embed):
156
155
  return torch.unbind(torch.cat(embeddings, 1), dim=0)
157
156
  return x
@@ -170,12 +169,9 @@ class BaseModel(nn.Module):
170
169
  the provided list.
171
170
 
172
171
  Args:
173
- m (nn.Module): The layer to be profiled.
172
+ m (torch.nn.Module): The layer to be profiled.
174
173
  x (torch.Tensor): The input data to the layer.
175
174
  dt (list): A list to store the computation time of the layer.
176
-
177
- Returns:
178
- None
179
175
  """
180
176
  c = m == self.model[-1] and isinstance(x, list) # is final layer list, copy input as inplace fix
181
177
  flops = thop.profile(m, inputs=[x.copy() if c else x], verbose=False)[0] / 1e9 * 2 if thop else 0 # GFLOPs
@@ -195,7 +191,7 @@ class BaseModel(nn.Module):
195
191
  computation efficiency.
196
192
 
197
193
  Returns:
198
- (nn.Module): The fused model is returned.
194
+ (torch.nn.Module): The fused model is returned.
199
195
  """
200
196
  if not self.is_fused():
201
197
  for m in self.model.modules():
@@ -229,7 +225,7 @@ class BaseModel(nn.Module):
229
225
  Returns:
230
226
  (bool): True if the number of BatchNorm layers in the model is less than the threshold, False otherwise.
231
227
  """
232
- bn = tuple(v for k, v in nn.__dict__.items() if "Norm" in k) # normalization layers, i.e. BatchNorm2d()
228
+ bn = tuple(v for k, v in torch.nn.__dict__.items() if "Norm" in k) # normalization layers, i.e. BatchNorm2d()
233
229
  return sum(isinstance(v, bn) for v in self.modules()) < thresh # True if < 'thresh' BatchNorm layers in model
234
230
 
235
231
  def info(self, detailed=False, verbose=True, imgsz=640):
@@ -304,7 +300,7 @@ class DetectionModel(BaseModel):
304
300
  self.yaml = cfg if isinstance(cfg, dict) else yaml_model_load(cfg) # cfg dict
305
301
  if self.yaml["backbone"][0][2] == "Silence":
306
302
  LOGGER.warning(
307
- "WARNING ⚠️ YOLOv9 `Silence` module is deprecated in favor of nn.Identity. "
303
+ "WARNING ⚠️ YOLOv9 `Silence` module is deprecated in favor of torch.nn.Identity. "
308
304
  "Please delete local *.pt file and re-download the latest model checkpoint."
309
305
  )
310
306
  self.yaml["backbone"][0][2] = "nn.Identity"
@@ -458,20 +454,22 @@ class ClassificationModel(BaseModel):
458
454
  name, m = list((model.model if hasattr(model, "model") else model).named_children())[-1] # last module
459
455
  if isinstance(m, Classify): # YOLO Classify() head
460
456
  if m.linear.out_features != nc:
461
- m.linear = nn.Linear(m.linear.in_features, nc)
462
- elif isinstance(m, nn.Linear): # ResNet, EfficientNet
457
+ m.linear = torch.nn.Linear(m.linear.in_features, nc)
458
+ elif isinstance(m, torch.nn.Linear): # ResNet, EfficientNet
463
459
  if m.out_features != nc:
464
- setattr(model, name, nn.Linear(m.in_features, nc))
465
- elif isinstance(m, nn.Sequential):
460
+ setattr(model, name, torch.nn.Linear(m.in_features, nc))
461
+ elif isinstance(m, torch.nn.Sequential):
466
462
  types = [type(x) for x in m]
467
- if nn.Linear in types:
468
- i = len(types) - 1 - types[::-1].index(nn.Linear) # last nn.Linear index
463
+ if torch.nn.Linear in types:
464
+ i = len(types) - 1 - types[::-1].index(torch.nn.Linear) # last torch.nn.Linear index
469
465
  if m[i].out_features != nc:
470
- m[i] = nn.Linear(m[i].in_features, nc)
471
- elif nn.Conv2d in types:
472
- i = len(types) - 1 - types[::-1].index(nn.Conv2d) # last nn.Conv2d index
466
+ m[i] = torch.nn.Linear(m[i].in_features, nc)
467
+ elif torch.nn.Conv2d in types:
468
+ i = len(types) - 1 - types[::-1].index(torch.nn.Conv2d) # last torch.nn.Conv2d index
473
469
  if m[i].out_channels != nc:
474
- m[i] = nn.Conv2d(m[i].in_channels, nc, m[i].kernel_size, m[i].stride, bias=m[i].bias is not None)
470
+ m[i] = torch.nn.Conv2d(
471
+ m[i].in_channels, nc, m[i].kernel_size, m[i].stride, bias=m[i].bias is not None
472
+ )
475
473
 
476
474
  def init_criterion(self):
477
475
  """Initialize the loss criterion for the ClassificationModel."""
@@ -587,7 +585,7 @@ class RTDETRDetectionModel(DetectionModel):
587
585
  if visualize:
588
586
  feature_visualization(x, m.type, m.i, save_dir=visualize)
589
587
  if embed and m.i in embed:
590
- embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
588
+ embeddings.append(torch.nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
591
589
  if m.i == max(embed):
592
590
  return torch.unbind(torch.cat(embeddings, 1), dim=0)
593
591
  head = self.model[-1]
@@ -663,7 +661,7 @@ class WorldModel(DetectionModel):
663
661
  if visualize:
664
662
  feature_visualization(x, m.type, m.i, save_dir=visualize)
665
663
  if embed and m.i in embed:
666
- embeddings.append(nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
664
+ embeddings.append(torch.nn.functional.adaptive_avg_pool2d(x, (1, 1)).squeeze(-1).squeeze(-1)) # flatten
667
665
  if m.i == max(embed):
668
666
  return torch.unbind(torch.cat(embeddings, 1), dim=0)
669
667
  return x
@@ -684,7 +682,7 @@ class WorldModel(DetectionModel):
684
682
  return self.criterion(preds, batch)
685
683
 
686
684
 
687
- class Ensemble(nn.ModuleList):
685
+ class Ensemble(torch.nn.ModuleList):
688
686
  """Ensemble of models."""
689
687
 
690
688
  def __init__(self):
@@ -887,7 +885,7 @@ def attempt_load_weights(weights, device=None, inplace=True, fuse=False):
887
885
  for m in ensemble.modules():
888
886
  if hasattr(m, "inplace"):
889
887
  m.inplace = inplace
890
- elif isinstance(m, nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
888
+ elif isinstance(m, torch.nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
891
889
  m.recompute_scale_factor = None # torch 1.11.0 compatibility
892
890
 
893
891
  # Return model
@@ -922,7 +920,7 @@ def attempt_load_one_weight(weight, device=None, inplace=True, fuse=False):
922
920
  for m in model.modules():
923
921
  if hasattr(m, "inplace"):
924
922
  m.inplace = inplace
925
- elif isinstance(m, nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
923
+ elif isinstance(m, torch.nn.Upsample) and not hasattr(m, "recompute_scale_factor"):
926
924
  m.recompute_scale_factor = None # torch 1.11.0 compatibility
927
925
 
928
926
  # Return model and ckpt
@@ -946,7 +944,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
946
944
  depth, width, max_channels = scales[scale]
947
945
 
948
946
  if act:
949
- Conv.default_act = eval(act) # redefine default activation, i.e. Conv.default_act = nn.SiLU()
947
+ Conv.default_act = eval(act) # redefine default activation, i.e. Conv.default_act = torch.nn.SiLU()
950
948
  if verbose:
951
949
  LOGGER.info(f"{colorstr('activation:')} {act}") # print
952
950
 
@@ -982,7 +980,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
982
980
  C3,
983
981
  C3TR,
984
982
  C3Ghost,
985
- nn.ConvTranspose2d,
983
+ torch.nn.ConvTranspose2d,
986
984
  DWConvTranspose2d,
987
985
  C3x,
988
986
  RepC3,
@@ -1048,7 +1046,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
1048
1046
  n = 1
1049
1047
  elif m is ResNetLayer:
1050
1048
  c2 = args[1] if args[3] else args[1] * 4
1051
- elif m is nn.BatchNorm2d:
1049
+ elif m is torch.nn.BatchNorm2d:
1052
1050
  args = [ch[f]]
1053
1051
  elif m is Concat:
1054
1052
  c2 = sum(ch[x] for x in f)
@@ -1073,7 +1071,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
1073
1071
  else:
1074
1072
  c2 = ch[f]
1075
1073
 
1076
- m_ = nn.Sequential(*(m(*args) for _ in range(n))) if n > 1 else m(*args) # module
1074
+ m_ = torch.nn.Sequential(*(m(*args) for _ in range(n))) if n > 1 else m(*args) # module
1077
1075
  t = str(m)[8:-2].replace("__main__.", "") # module type
1078
1076
  m_.np = sum(x.numel() for x in m_.parameters()) # number params
1079
1077
  m_.i, m_.f, m_.type = i, f, t # attach index, 'from' index, type
@@ -1084,7 +1082,7 @@ def parse_model(d, ch, verbose=True): # model_dict, input_channels(3)
1084
1082
  if i == 0:
1085
1083
  ch = []
1086
1084
  ch.append(c2)
1087
- return nn.Sequential(*layers), sorted(save)
1085
+ return torch.nn.Sequential(*layers), sorted(save)
1088
1086
 
1089
1087
 
1090
1088
  def yaml_model_load(path):
@@ -1126,7 +1124,7 @@ def guess_model_task(model):
1126
1124
  Guess the task of a PyTorch model from its architecture or configuration.
1127
1125
 
1128
1126
  Args:
1129
- model (nn.Module | dict): PyTorch model or model configuration in YAML format.
1127
+ model (torch.nn.Module | dict): PyTorch model or model configuration in YAML format.
1130
1128
 
1131
1129
  Returns:
1132
1130
  (str): Task of the model ('detect', 'segment', 'classify', 'pose').
@@ -1154,7 +1152,7 @@ def guess_model_task(model):
1154
1152
  with contextlib.suppress(Exception):
1155
1153
  return cfg2task(model)
1156
1154
  # Guess from PyTorch model
1157
- if isinstance(model, nn.Module): # PyTorch model
1155
+ if isinstance(model, torch.nn.Module): # PyTorch model
1158
1156
  for x in "model.args", "model.model.args", "model.model.model.args":
1159
1157
  with contextlib.suppress(Exception):
1160
1158
  return eval(x)["task"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ultralytics
3
- Version: 8.3.70
3
+ Version: 8.3.71
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>
@@ -54,6 +54,7 @@ Requires-Dist: pytest; extra == "dev"
54
54
  Requires-Dist: pytest-cov; extra == "dev"
55
55
  Requires-Dist: coverage[toml]; extra == "dev"
56
56
  Requires-Dist: mkdocs>=1.6.0; extra == "dev"
57
+ Requires-Dist: beautifulsoup4<=4.12.3; extra == "dev"
57
58
  Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
58
59
  Requires-Dist: mkdocstrings[python]; extra == "dev"
59
60
  Requires-Dist: mkdocs-redirects; extra == "dev"
@@ -23,6 +23,7 @@ pytest
23
23
  pytest-cov
24
24
  coverage[toml]
25
25
  mkdocs>=1.6.0
26
+ beautifulsoup4<=4.12.3
26
27
  mkdocs-material>=9.5.9
27
28
  mkdocstrings[python]
28
29
  mkdocs-redirects
File without changes
File without changes
File without changes