ultralytics 8.0.82__tar.gz → 8.0.84__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 (133) hide show
  1. {ultralytics-8.0.82/ultralytics.egg-info → ultralytics-8.0.84}/PKG-INFO +11 -3
  2. {ultralytics-8.0.82 → ultralytics-8.0.84}/README.md +10 -2
  3. {ultralytics-8.0.82 → ultralytics-8.0.84}/README.zh-CN.md +10 -3
  4. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/__init__.py +1 -1
  5. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/base.py +31 -10
  6. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/model.py +8 -12
  7. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/results.py +33 -9
  8. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/__init__.py +23 -0
  9. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/base.py +2 -1
  10. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/mlflow.py +1 -9
  11. ultralytics-8.0.84/ultralytics/yolo/utils/callbacks/neptune.py +105 -0
  12. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/instance.py +2 -2
  13. {ultralytics-8.0.82 → ultralytics-8.0.84/ultralytics.egg-info}/PKG-INFO +11 -3
  14. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics.egg-info/SOURCES.txt +1 -0
  15. {ultralytics-8.0.82 → ultralytics-8.0.84}/CONTRIBUTING.md +0 -0
  16. {ultralytics-8.0.82 → ultralytics-8.0.84}/LICENSE +0 -0
  17. {ultralytics-8.0.82 → ultralytics-8.0.84}/MANIFEST.in +0 -0
  18. {ultralytics-8.0.82 → ultralytics-8.0.84}/requirements.txt +0 -0
  19. {ultralytics-8.0.82 → ultralytics-8.0.84}/setup.cfg +0 -0
  20. {ultralytics-8.0.82 → ultralytics-8.0.84}/setup.py +0 -0
  21. {ultralytics-8.0.82 → ultralytics-8.0.84}/tests/test_cli.py +0 -0
  22. {ultralytics-8.0.82 → ultralytics-8.0.84}/tests/test_engine.py +0 -0
  23. {ultralytics-8.0.82 → ultralytics-8.0.84}/tests/test_python.py +0 -0
  24. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/assets/bus.jpg +0 -0
  25. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/assets/zidane.jpg +0 -0
  26. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/Argoverse.yaml +0 -0
  27. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/GlobalWheat2020.yaml +0 -0
  28. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/ImageNet.yaml +0 -0
  29. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/Objects365.yaml +0 -0
  30. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/SKU-110K.yaml +0 -0
  31. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/VOC.yaml +0 -0
  32. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/VisDrone.yaml +0 -0
  33. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco-pose.yaml +0 -0
  34. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco.yaml +0 -0
  35. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco128-seg.yaml +0 -0
  36. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco128.yaml +0 -0
  37. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco8-pose.yaml +0 -0
  38. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco8-seg.yaml +0 -0
  39. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/coco8.yaml +0 -0
  40. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/datasets/xView.yaml +0 -0
  41. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/hub/__init__.py +0 -0
  42. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/hub/auth.py +0 -0
  43. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/hub/session.py +0 -0
  44. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/hub/utils.py +0 -0
  45. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v3/yolov3-spp.yaml +0 -0
  46. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v3/yolov3-tiny.yaml +0 -0
  47. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v3/yolov3.yaml +0 -0
  48. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v5/yolov5-p6.yaml +0 -0
  49. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v5/yolov5.yaml +0 -0
  50. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8-cls.yaml +0 -0
  51. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8-p2.yaml +0 -0
  52. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8-p6.yaml +0 -0
  53. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8-pose-p6.yaml +0 -0
  54. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8-pose.yaml +0 -0
  55. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8-seg.yaml +0 -0
  56. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/models/v8/yolov8.yaml +0 -0
  57. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/nn/__init__.py +0 -0
  58. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/nn/autobackend.py +0 -0
  59. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/nn/autoshape.py +0 -0
  60. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/nn/modules.py +0 -0
  61. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/nn/tasks.py +0 -0
  62. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/__init__.py +0 -0
  63. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/cfg/botsort.yaml +0 -0
  64. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/cfg/bytetrack.yaml +0 -0
  65. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/track.py +0 -0
  66. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/trackers/__init__.py +0 -0
  67. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/trackers/basetrack.py +0 -0
  68. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/trackers/bot_sort.py +0 -0
  69. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/trackers/byte_tracker.py +0 -0
  70. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/utils/__init__.py +0 -0
  71. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/utils/gmc.py +0 -0
  72. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/utils/kalman_filter.py +0 -0
  73. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/tracker/utils/matching.py +0 -0
  74. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/__init__.py +0 -0
  75. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/cfg/__init__.py +0 -0
  76. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/cfg/default.yaml +0 -0
  77. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/__init__.py +0 -0
  78. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/augment.py +0 -0
  79. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/build.py +0 -0
  80. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/dataloaders/__init__.py +0 -0
  81. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/dataloaders/stream_loaders.py +0 -0
  82. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/dataloaders/v5augmentations.py +0 -0
  83. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/dataloaders/v5loader.py +0 -0
  84. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/dataset.py +0 -0
  85. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/dataset_wrappers.py +0 -0
  86. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/data/utils.py +0 -0
  87. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/__init__.py +0 -0
  88. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/exporter.py +0 -0
  89. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/predictor.py +0 -0
  90. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/trainer.py +0 -0
  91. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/engine/validator.py +0 -0
  92. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/autobatch.py +0 -0
  93. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/benchmarks.py +0 -0
  94. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/__init__.py +0 -0
  95. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/clearml.py +0 -0
  96. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/comet.py +0 -0
  97. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/hub.py +0 -0
  98. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/raytune.py +0 -0
  99. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/tensorboard.py +0 -0
  100. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/callbacks/wb.py +0 -0
  101. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/checks.py +0 -0
  102. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/dist.py +0 -0
  103. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/downloads.py +0 -0
  104. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/errors.py +0 -0
  105. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/files.py +0 -0
  106. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/loss.py +0 -0
  107. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/metrics.py +0 -0
  108. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/ops.py +0 -0
  109. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/plotting.py +0 -0
  110. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/tal.py +0 -0
  111. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/torch_utils.py +0 -0
  112. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/utils/tuner.py +0 -0
  113. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/__init__.py +0 -0
  114. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/classify/__init__.py +0 -0
  115. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/classify/predict.py +0 -0
  116. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/classify/train.py +0 -0
  117. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/classify/val.py +0 -0
  118. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/detect/__init__.py +0 -0
  119. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/detect/predict.py +0 -0
  120. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/detect/train.py +0 -0
  121. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/detect/val.py +0 -0
  122. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/pose/__init__.py +0 -0
  123. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/pose/predict.py +0 -0
  124. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/pose/train.py +0 -0
  125. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/pose/val.py +0 -0
  126. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/segment/__init__.py +0 -0
  127. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/segment/predict.py +0 -0
  128. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/segment/train.py +0 -0
  129. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics/yolo/v8/segment/val.py +0 -0
  130. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics.egg-info/dependency_links.txt +0 -0
  131. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics.egg-info/entry_points.txt +0 -0
  132. {ultralytics-8.0.82 → ultralytics-8.0.84}/ultralytics.egg-info/requires.txt +0 -0
  133. {ultralytics-8.0.82 → ultralytics-8.0.84}/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.0.82
3
+ Version: 8.0.84
4
4
  Summary: Ultralytics YOLOv8
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
@@ -54,7 +54,9 @@ License-File: LICENSE
54
54
  </div>
55
55
  <br>
56
56
 
57
- [Ultralytics YOLOv8](https://github.com/ultralytics/ultralytics), developed by [Ultralytics](https://ultralytics.com), is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection, image segmentation and image classification tasks.
57
+ [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
58
+
59
+ We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics">GitHub</a> for support, and join our <a href="https://discord.gg/n6cFeSPZdD">Discord</a> community for questions and discussions!
58
60
 
59
61
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://ultralytics.com/license).
60
62
 
@@ -78,6 +80,9 @@ To request an Enterprise License please complete the form at [Ultralytics Licens
78
80
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
79
81
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
80
82
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="2%" alt="" /></a>
83
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
84
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
85
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="2%" alt="" /></a>
81
86
  </div>
82
87
  </div>
83
88
 
@@ -266,7 +271,7 @@ YOLOv8 is available under two different licenses:
266
271
 
267
272
  ## <div align="center">Contact</div>
268
273
 
269
- For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/).
274
+ For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues), and join our [Discord](https://discord.gg/n6cFeSPZdD) community for questions and discussions!
270
275
 
271
276
  <br>
272
277
  <div align="center">
@@ -287,4 +292,7 @@ For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https:/
287
292
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
288
293
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
289
294
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="3%" alt="" /></a>
295
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
296
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
297
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="3%" alt="" /></a>
290
298
  </div>
@@ -18,7 +18,9 @@
18
18
  </div>
19
19
  <br>
20
20
 
21
- [Ultralytics YOLOv8](https://github.com/ultralytics/ultralytics), developed by [Ultralytics](https://ultralytics.com), is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection, image segmentation and image classification tasks.
21
+ [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
22
+
23
+ We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics">GitHub</a> for support, and join our <a href="https://discord.gg/n6cFeSPZdD">Discord</a> community for questions and discussions!
22
24
 
23
25
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://ultralytics.com/license).
24
26
 
@@ -42,6 +44,9 @@ To request an Enterprise License please complete the form at [Ultralytics Licens
42
44
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
43
45
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
44
46
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="2%" alt="" /></a>
47
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
48
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
49
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="2%" alt="" /></a>
45
50
  </div>
46
51
  </div>
47
52
 
@@ -230,7 +235,7 @@ YOLOv8 is available under two different licenses:
230
235
 
231
236
  ## <div align="center">Contact</div>
232
237
 
233
- For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/).
238
+ For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues), and join our [Discord](https://discord.gg/n6cFeSPZdD) community for questions and discussions!
234
239
 
235
240
  <br>
236
241
  <div align="center">
@@ -251,4 +256,7 @@ For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https:/
251
256
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
252
257
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
253
258
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="3%" alt="" /></a>
259
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
260
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
261
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="3%" alt="" /></a>
254
262
  </div>
@@ -18,9 +18,11 @@
18
18
  </div>
19
19
  <br>
20
20
 
21
- [Ultralytics YOLOv8](https://github.com/ultralytics/ultralytics),由 [Ultralytics](https://ultralytics.com) 开发,是一种尖端的、最先进(SOTA)的模型,它在之前 YOLO 版本的成功基础上进行了建设,并引入了新的特性和改进,以进一步提高性能和灵活性。YOLOv8 旨在快速、准确且易于使用,使其成为广泛的对象检测、图像分割和图像分类任务的绝佳选择。
21
+ [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) 是一款前沿、最先进(SOTA)的模型,基于先前 YOLO 版本的成功,引入了新功能和改进,进一步提升性能和灵活性。YOLOv8 设计快速、准确且易于使用,使其成为各种物体检测与跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。
22
22
 
23
- 如需申请企业许可,请在 [Ultralytics 授权](https://ultralytics.com/license) 完成表格。
23
+ 我们希望这里的资源能帮助您充分利用 YOLOv8。请浏览 YOLOv8 <a href="https://docs.ultralytics.com/">文档</a> 了解详细信息,在 <a href="https://github.com/ultralytics/ultralytics">GitHub</a> 上提交问题以获得支持,并加入我们的 <a href="https://discord.gg/n6cFeSPZdD">Discord</a> 社区进行问题和讨论!
24
+
25
+ 如需申请企业许可,请在 [Ultralytics Licensing](https://ultralytics.com/license) 处填写表格
24
26
 
25
27
  <img width="100%" src="https://raw.githubusercontent.com/ultralytics/assets/main/yolov8/yolo-comparison-plots.png"></a>
26
28
 
@@ -42,6 +44,9 @@
42
44
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
43
45
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
44
46
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="2%" alt="" /></a>
47
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
48
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
49
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="2%" alt="" /></a>
45
50
  </div>
46
51
  </div>
47
52
 
@@ -229,7 +234,7 @@ YOLOv8 提供两种不同的许可证:
229
234
 
230
235
  ## <div align="center">联系方式</div>
231
236
 
232
- 如需报告 YOLOv8 的错误或提出功能需求,请访问 [GitHub Issues](https://github.com/ultralytics/ultralytics/issues) [Ultralytics 社区论坛](https://community.ultralytics.com/)
237
+ 对于 YOLOv8 的错误报告和功能请求,请访问 [GitHub Issues](https://github.com/ultralytics/ultralytics/issues),并加入我们的 [Discord](https://discord.gg/n6cFeSPZdD) 社区进行问题和讨论!
233
238
 
234
239
  <br>
235
240
  <div align="center">
@@ -250,4 +255,6 @@ YOLOv8 提供两种不同的许可证:
250
255
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
251
256
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
252
257
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="3%" alt="" /></a>
258
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
259
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="3%" alt="" /></a>
253
260
  </div>
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = '8.0.82'
3
+ __version__ = '8.0.84'
4
4
 
5
5
  from ultralytics.hub import start
6
6
  from ultralytics.yolo.engine.model import YOLO
@@ -3,6 +3,7 @@
3
3
  import glob
4
4
  import math
5
5
  import os
6
+ import random
6
7
  from copy import deepcopy
7
8
  from multiprocessing.pool import ThreadPool
8
9
  from pathlib import Path
@@ -10,10 +11,11 @@ from typing import Optional
10
11
 
11
12
  import cv2
12
13
  import numpy as np
14
+ import psutil
13
15
  from torch.utils.data import Dataset
14
16
  from tqdm import tqdm
15
17
 
16
- from ..utils import LOCAL_RANK, NUM_THREADS, TQDM_BAR_FORMAT
18
+ from ..utils import LOCAL_RANK, LOGGER, NUM_THREADS, TQDM_BAR_FORMAT
17
19
  from .utils import HELP_URL, IMG_FORMATS
18
20
 
19
21
 
@@ -63,14 +65,10 @@ class BaseDataset(Dataset):
63
65
  self.augment = augment
64
66
  self.single_cls = single_cls
65
67
  self.prefix = prefix
66
-
67
68
  self.im_files = self.get_img_files(self.img_path)
68
69
  self.labels = self.get_labels()
69
70
  self.update_labels(include_class=classes) # single_cls and include_class
70
-
71
- self.ni = len(self.labels)
72
-
73
- # Rect stuff
71
+ self.ni = len(self.labels) # number of images
74
72
  self.rect = rect
75
73
  self.batch_size = batch_size
76
74
  self.stride = stride
@@ -80,6 +78,8 @@ class BaseDataset(Dataset):
80
78
  self.set_rectangle()
81
79
 
82
80
  # Cache stuff
81
+ if cache == 'ram' and not self.check_cache_ram():
82
+ cache = False
83
83
  self.ims = [None] * self.ni
84
84
  self.npy_files = [Path(f).with_suffix('.npy') for f in self.im_files]
85
85
  if cache:
@@ -120,11 +120,14 @@ class BaseDataset(Dataset):
120
120
  cls = self.labels[i]['cls']
121
121
  bboxes = self.labels[i]['bboxes']
122
122
  segments = self.labels[i]['segments']
123
+ keypoints = self.labels[i]['keypoints']
123
124
  j = (cls == include_class_array).any(1)
124
125
  self.labels[i]['cls'] = cls[j]
125
126
  self.labels[i]['bboxes'] = bboxes[j]
126
127
  if segments:
127
128
  self.labels[i]['segments'] = [segments[si] for si, idx in enumerate(j) if idx]
129
+ if keypoints is not None:
130
+ self.labels[i]['keypoints'] = keypoints[j]
128
131
  if self.single_cls:
129
132
  self.labels[i]['cls'][:, 0] = 0
130
133
 
@@ -148,7 +151,7 @@ class BaseDataset(Dataset):
148
151
 
149
152
  def cache_images(self, cache):
150
153
  """Cache images to memory or disk."""
151
- gb = 0 # Gigabytes of cached images
154
+ b, gb = 0, 1 << 30 # bytes of cached images, bytes per gigabytes
152
155
  self.im_hw0, self.im_hw = [None] * self.ni, [None] * self.ni
153
156
  fcn = self.cache_images_to_disk if cache == 'disk' else self.load_image
154
157
  with ThreadPool(NUM_THREADS) as pool:
@@ -156,11 +159,11 @@ class BaseDataset(Dataset):
156
159
  pbar = tqdm(enumerate(results), total=self.ni, bar_format=TQDM_BAR_FORMAT, disable=LOCAL_RANK > 0)
157
160
  for i, x in pbar:
158
161
  if cache == 'disk':
159
- gb += self.npy_files[i].stat().st_size
162
+ b += self.npy_files[i].stat().st_size
160
163
  else: # 'ram'
161
164
  self.ims[i], self.im_hw0[i], self.im_hw[i] = x # im, hw_orig, hw_resized = load_image(self, i)
162
- gb += self.ims[i].nbytes
163
- pbar.desc = f'{self.prefix}Caching images ({gb / 1E9:.1f}GB {cache})'
165
+ b += self.ims[i].nbytes
166
+ pbar.desc = f'{self.prefix}Caching images ({b / gb:.1f}GB {cache})'
164
167
  pbar.close()
165
168
 
166
169
  def cache_images_to_disk(self, i):
@@ -169,6 +172,24 @@ class BaseDataset(Dataset):
169
172
  if not f.exists():
170
173
  np.save(f.as_posix(), cv2.imread(self.im_files[i]))
171
174
 
175
+ def check_cache_ram(self, safety_margin=0.5):
176
+ """Check image caching requirements vs available memory."""
177
+ b, gb = 0, 1 << 30 # bytes of cached images, bytes per gigabytes
178
+ n = min(self.ni, 30) # extrapolate from 30 random images
179
+ for _ in range(n):
180
+ im = cv2.imread(random.choice(self.im_files)) # sample image
181
+ ratio = self.imgsz / max(im.shape[0], im.shape[1]) # max(h, w) # ratio
182
+ b += im.nbytes * ratio ** 2
183
+ mem_required = b * self.ni / n * (1 + safety_margin) # GB required to cache dataset into RAM
184
+ mem = psutil.virtual_memory()
185
+ cache = mem_required < mem.available # to cache or not to cache, that is the question
186
+ if not cache:
187
+ LOGGER.info(f'{self.prefix}{mem_required / gb:.1f}GB RAM required to cache images '
188
+ f'with {int(safety_margin * 100)}% safety margin but only '
189
+ f'{mem.available / gb:.1f}/{mem.total / gb:.1f}GB available, '
190
+ f"{'caching images ✅' if cache else 'not caching images ⚠️'}")
191
+ return cache
192
+
172
193
  def set_rectangle(self):
173
194
  """Sets the shape of bounding boxes for YOLO detections as rectangles."""
174
195
  bi = np.floor(np.arange(self.ni) / self.batch_size).astype(int) # batch index
@@ -469,31 +469,27 @@ class YOLO:
469
469
 
470
470
  @property
471
471
  def names(self):
472
- """
473
- Returns class names of the loaded model.
474
- """
472
+ """Returns class names of the loaded model."""
475
473
  return self.model.names if hasattr(self.model, 'names') else None
476
474
 
477
475
  @property
478
476
  def device(self):
479
- """
480
- Returns device if PyTorch model
481
- """
477
+ """Returns device if PyTorch model."""
482
478
  return next(self.model.parameters()).device if isinstance(self.model, nn.Module) else None
483
479
 
484
480
  @property
485
481
  def transforms(self):
486
- """
487
- Returns transform of the loaded model.
488
- """
482
+ """Returns transform of the loaded model."""
489
483
  return self.model.transforms if hasattr(self.model, 'transforms') else None
490
484
 
491
485
  def add_callback(self, event: str, func):
492
- """
493
- Add callback
494
- """
486
+ """Add a callback."""
495
487
  self.callbacks[event].append(func)
496
488
 
489
+ def clear_callback(self, event: str):
490
+ """Clear all event callbacks."""
491
+ self.callbacks[event] = []
492
+
497
493
  @staticmethod
498
494
  def _reset_ckpt_args(args):
499
495
  """Reset arguments when loading a PyTorch model."""
@@ -97,11 +97,6 @@ class Results(SimpleClass):
97
97
  self.path = path
98
98
  self._keys = ('boxes', 'masks', 'probs', 'keypoints')
99
99
 
100
- def pandas(self):
101
- """Convert the results to a pandas DataFrame."""
102
- pass
103
- # TODO masks.pandas + boxes.pandas + cls.pandas
104
-
105
100
  def __getitem__(self, idx):
106
101
  """Return a Results object for the specified index."""
107
102
  r = self.new()
@@ -315,6 +310,35 @@ class Results(SimpleClass):
315
310
  file=save_dir / self.names[int(d.cls)] / f'{file_name.stem}.jpg',
316
311
  BGR=True)
317
312
 
313
+ def pandas(self):
314
+ """Convert the object to a pandas DataFrame (not yet implemented)."""
315
+ LOGGER.warning("WARNING ⚠️ 'Results.pandas' method is not yet implemented.")
316
+
317
+ def tojson(self, normalize=False):
318
+ """Convert the object to JSON format."""
319
+ import json
320
+
321
+ # Create list of detection dictionaries
322
+ results = []
323
+ data = self.boxes.data.cpu().tolist()
324
+ h, w = self.orig_shape if normalize else (1, 1)
325
+ for i, row in enumerate(data):
326
+ box = {'x1': row[0] / w, 'y1': row[1] / h, 'x2': row[2] / w, 'y2': row[3] / h}
327
+ conf = row[4]
328
+ id = int(row[5])
329
+ name = self.names[id]
330
+ result = {'name': name, 'class': id, 'confidence': conf, 'box': box}
331
+ if self.masks:
332
+ x, y = self.masks.xy[i][:, 0], self.masks.xy[i][:, 1] # numpy array
333
+ result['segments'] = {'x': (x / w).tolist(), 'y': (y / h).tolist()}
334
+ if self.keypoints is not None:
335
+ x, y, visible = self.keypoints[i].cpu().unbind(dim=1) # torch Tensor
336
+ result['keypoints'] = {'x': (x / w).tolist(), 'y': (y / h).tolist(), 'visible': visible.tolist()}
337
+ results.append(result)
338
+
339
+ # Convert detections to JSON
340
+ return json.dumps(results, indent=2)
341
+
318
342
 
319
343
  class Boxes(BaseTensor):
320
344
  """
@@ -397,10 +421,6 @@ class Boxes(BaseTensor):
397
421
  """Return the boxes in xywh format normalized by original image size."""
398
422
  return self.xywh / self.orig_shape[[1, 0, 1, 0]]
399
423
 
400
- def pandas(self):
401
- """Convert the object to a pandas DataFrame (not yet implemented)."""
402
- LOGGER.info('results.pandas() method not yet implemented')
403
-
404
424
  @property
405
425
  def boxes(self):
406
426
  """Return the raw bboxes tensor (deprecated)."""
@@ -466,3 +486,7 @@ class Masks(BaseTensor):
466
486
  """Return the raw masks tensor (deprecated)."""
467
487
  LOGGER.warning("WARNING ⚠️ 'Masks.masks' is deprecated. Use 'Masks.data' instead.")
468
488
  return self.data
489
+
490
+ def pandas(self):
491
+ """Convert the object to a pandas DataFrame (not yet implemented)."""
492
+ LOGGER.warning("WARNING ⚠️ 'Masks.pandas' method is not yet implemented.")
@@ -734,3 +734,26 @@ ENVIRONMENT = 'Colab' if is_colab() else 'Kaggle' if is_kaggle() else 'Jupyter'
734
734
  'Docker' if is_docker() else platform.system()
735
735
  TESTS_RUNNING = is_pytest_running() or is_github_actions_ci()
736
736
  set_sentry()
737
+
738
+ # OpenCV Multilanguage-friendly functions ------------------------------------------------------------------------------------
739
+ imshow_ = cv2.imshow # copy to avoid recursion errors
740
+
741
+
742
+ def imread(filename, flags=cv2.IMREAD_COLOR):
743
+ return cv2.imdecode(np.fromfile(filename, np.uint8), flags)
744
+
745
+
746
+ def imwrite(filename, img):
747
+ try:
748
+ cv2.imencode(Path(filename).suffix, img)[1].tofile(filename)
749
+ return True
750
+ except Exception:
751
+ return False
752
+
753
+
754
+ def imshow(path, im):
755
+ imshow_(path.encode('unicode_escape').decode(), im)
756
+
757
+
758
+ if Path(inspect.stack()[0].filename).parent.parent.as_posix() in inspect.stack()[-1].filename:
759
+ cv2.imread, cv2.imwrite, cv2.imshow = imread, imwrite, imshow # redefine
@@ -200,11 +200,12 @@ def add_integration_callbacks(instance):
200
200
  from .comet import callbacks as comet_callbacks
201
201
  from .hub import callbacks as hub_callbacks
202
202
  from .mlflow import callbacks as mf_callbacks
203
+ from .neptune import callbacks as neptune_callbacks
203
204
  from .raytune import callbacks as tune_callbacks
204
205
  from .tensorboard import callbacks as tb_callbacks
205
206
  from .wb import callbacks as wb_callbacks
206
207
 
207
- for x in clearml_callbacks, comet_callbacks, hub_callbacks, tb_callbacks, mf_callbacks, tune_callbacks, wb_callbacks:
208
+ for x in clearml_callbacks, comet_callbacks, hub_callbacks, tb_callbacks, mf_callbacks, tune_callbacks, wb_callbacks, neptune_callbacks:
208
209
  for k, v in x.items():
209
210
  if v not in instance.callbacks[k]: # prevent duplicate callbacks addition
210
211
  instance.callbacks[k].append(v) # callback[name].append(func)
@@ -52,19 +52,12 @@ def on_fit_epoch_end(trainer):
52
52
  run.log_metrics(metrics=metrics_dict, step=trainer.epoch)
53
53
 
54
54
 
55
- def on_model_save(trainer):
56
- """Logs model and metrics to mlflow on save."""
57
- if mlflow:
58
- run.log_artifact(trainer.last)
59
-
60
-
61
55
  def on_train_end(trainer):
62
56
  """Called at end of train loop to log model artifact info."""
63
57
  if mlflow:
64
58
  root_dir = Path(__file__).resolve().parents[3]
59
+ run.log_artifact(trainer.last)
65
60
  run.log_artifact(trainer.best)
66
- model_uri = f'runs:/{run_id}/'
67
- run.register_model(model_uri, experiment_name)
68
61
  run.pyfunc.log_model(artifact_path=experiment_name,
69
62
  code_path=[str(root_dir)],
70
63
  artifacts={'model_path': str(trainer.save_dir)},
@@ -74,5 +67,4 @@ def on_train_end(trainer):
74
67
  callbacks = {
75
68
  'on_pretrain_routine_end': on_pretrain_routine_end,
76
69
  'on_fit_epoch_end': on_fit_epoch_end,
77
- 'on_model_save': on_model_save,
78
70
  'on_train_end': on_train_end} if mlflow else {}
@@ -0,0 +1,105 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+ import matplotlib.image as mpimg
3
+ import matplotlib.pyplot as plt
4
+
5
+ from ultralytics.yolo.utils import LOGGER, TESTS_RUNNING
6
+ from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params
7
+
8
+ try:
9
+ import neptune
10
+ from neptune.types import File
11
+
12
+ assert not TESTS_RUNNING # do not log pytest
13
+ assert hasattr(neptune, '__version__')
14
+ except (ImportError, AssertionError):
15
+ neptune = None
16
+
17
+ run = None # NeptuneAI experiment logger instance
18
+
19
+
20
+ def _log_scalars(scalars, step=0):
21
+ """Log scalars to the NeptuneAI experiment logger."""
22
+ if run:
23
+ for k, v in scalars.items():
24
+ run[k].append(value=v, step=step)
25
+
26
+
27
+ def _log_images(imgs_dict, group=''):
28
+ """Log scalars to the NeptuneAI experiment logger."""
29
+ if run:
30
+ for k, v in imgs_dict.items():
31
+ run[f'{group}/{k}'].upload(File(v))
32
+
33
+
34
+ def _log_plot(title, plot_path):
35
+ """Log plots to the NeptuneAI experiment logger."""
36
+ """
37
+ Log image as plot in the plot section of NeptuneAI
38
+
39
+ arguments:
40
+ title (str) Title of the plot
41
+ plot_path (PosixPath or str) Path to the saved image file
42
+ """
43
+ img = mpimg.imread(plot_path)
44
+ fig = plt.figure()
45
+ ax = fig.add_axes([0, 0, 1, 1], frameon=False, aspect='auto', xticks=[], yticks=[]) # no ticks
46
+ ax.imshow(img)
47
+ run[f'Plots/{title}'].upload(fig)
48
+
49
+
50
+ def on_pretrain_routine_start(trainer):
51
+ """Callback function called before the training routine starts."""
52
+ try:
53
+ global run
54
+ run = neptune.init_run(project=trainer.args.project or 'YOLOv8', name=trainer.args.name, tags=['YOLOv8'])
55
+ run['Configuration/Hyperparameters'] = {k: '' if v is None else v for k, v in vars(trainer.args).items()}
56
+ except Exception as e:
57
+ LOGGER.warning(f'WARNING ⚠️ NeptuneAI installed but not initialized correctly, not logging this run. {e}')
58
+
59
+
60
+ def on_train_epoch_end(trainer):
61
+ """Callback function called at end of each training epoch."""
62
+ _log_scalars(trainer.label_loss_items(trainer.tloss, prefix='train'), trainer.epoch + 1)
63
+ _log_scalars(trainer.lr, trainer.epoch + 1)
64
+ if trainer.epoch == 1:
65
+ _log_images({f.stem: str(f) for f in trainer.save_dir.glob('train_batch*.jpg')}, 'Mosaic')
66
+
67
+
68
+ def on_fit_epoch_end(trainer):
69
+ """Callback function called at end of each fit (train+val) epoch."""
70
+ if run and trainer.epoch == 0:
71
+ model_info = {
72
+ 'parameters': get_num_params(trainer.model),
73
+ 'GFLOPs': round(get_flops(trainer.model), 3),
74
+ 'speed(ms)': round(trainer.validator.speed['inference'], 3)}
75
+ run['Configuration/Model'] = model_info
76
+ _log_scalars(trainer.metrics, trainer.epoch + 1)
77
+
78
+
79
+ def on_val_end(validator):
80
+ """Callback function called at end of each validation."""
81
+ if run:
82
+ # Log val_labels and val_pred
83
+ _log_images({f.stem: str(f) for f in validator.save_dir.glob('val*.jpg')}, 'Validation')
84
+
85
+
86
+ def on_train_end(trainer):
87
+ """Callback function called at end of training."""
88
+ if run:
89
+ # Log final results, CM matrix + PR plots
90
+ files = ['results.png', 'confusion_matrix.png', *(f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R'))]
91
+ files = [(trainer.save_dir / f) for f in files if (trainer.save_dir / f).exists()] # filter
92
+ for f in files:
93
+ _log_plot(title=f.stem, plot_path=f)
94
+ # Log the final model
95
+ run[f'weights/{trainer.args.name or trainer.args.task}/{str(trainer.best.name)}'].upload(File(str(
96
+ trainer.best)))
97
+ run.stop()
98
+
99
+
100
+ callbacks = {
101
+ 'on_pretrain_routine_start': on_pretrain_routine_start,
102
+ 'on_train_epoch_end': on_train_epoch_end,
103
+ 'on_fit_epoch_end': on_fit_epoch_end,
104
+ 'on_val_end': on_val_end,
105
+ 'on_train_end': on_train_end} if neptune else {}
@@ -34,7 +34,7 @@ class Bboxes:
34
34
  """Now only numpy is supported."""
35
35
 
36
36
  def __init__(self, bboxes, format='xyxy') -> None:
37
- assert format in _formats
37
+ assert format in _formats, f'Invalid bounding box format: {format}, format must be one of {_formats}'
38
38
  bboxes = bboxes[None, :] if bboxes.ndim == 1 else bboxes
39
39
  assert bboxes.ndim == 2
40
40
  assert bboxes.shape[1] == 4
@@ -66,7 +66,7 @@ class Bboxes:
66
66
 
67
67
  def convert(self, format):
68
68
  """Converts bounding box format from one type to another."""
69
- assert format in _formats
69
+ assert format in _formats, f'Invalid bounding box format: {format}, format must be one of {_formats}'
70
70
  if self.format == format:
71
71
  return
72
72
  elif self.format == 'xyxy':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.0.82
3
+ Version: 8.0.84
4
4
  Summary: Ultralytics YOLOv8
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
@@ -54,7 +54,9 @@ License-File: LICENSE
54
54
  </div>
55
55
  <br>
56
56
 
57
- [Ultralytics YOLOv8](https://github.com/ultralytics/ultralytics), developed by [Ultralytics](https://ultralytics.com), is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection, image segmentation and image classification tasks.
57
+ [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
58
+
59
+ We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics">GitHub</a> for support, and join our <a href="https://discord.gg/n6cFeSPZdD">Discord</a> community for questions and discussions!
58
60
 
59
61
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://ultralytics.com/license).
60
62
 
@@ -78,6 +80,9 @@ To request an Enterprise License please complete the form at [Ultralytics Licens
78
80
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
79
81
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
80
82
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="2%" alt="" /></a>
83
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="" />
84
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
85
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="2%" alt="" /></a>
81
86
  </div>
82
87
  </div>
83
88
 
@@ -266,7 +271,7 @@ YOLOv8 is available under two different licenses:
266
271
 
267
272
  ## <div align="center">Contact</div>
268
273
 
269
- For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/).
274
+ For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues), and join our [Discord](https://discord.gg/n6cFeSPZdD) community for questions and discussions!
270
275
 
271
276
  <br>
272
277
  <div align="center">
@@ -287,4 +292,7 @@ For YOLOv8 bug reports and feature requests please visit [GitHub Issues](https:/
287
292
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
288
293
  <a href="https://www.instagram.com/ultralytics/" style="text-decoration:none;">
289
294
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-instagram.png" width="3%" alt="" /></a>
295
+ <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="" />
296
+ <a href="https://discord.gg/n6cFeSPZdD" style="text-decoration:none;">
297
+ <img src="https://github.com/ultralytics/assets/blob/main/social/logo-social-discord.png" width="3%" alt="" /></a>
290
298
  </div>
@@ -109,6 +109,7 @@ ultralytics/yolo/utils/callbacks/clearml.py
109
109
  ultralytics/yolo/utils/callbacks/comet.py
110
110
  ultralytics/yolo/utils/callbacks/hub.py
111
111
  ultralytics/yolo/utils/callbacks/mlflow.py
112
+ ultralytics/yolo/utils/callbacks/neptune.py
112
113
  ultralytics/yolo/utils/callbacks/raytune.py
113
114
  ultralytics/yolo/utils/callbacks/tensorboard.py
114
115
  ultralytics/yolo/utils/callbacks/wb.py
File without changes
File without changes
File without changes
File without changes