The YOLOv10 project, developed by THU-MIG, is a cutting-edge real-time object detection system implemented in PyTorch. It aims to enhance both efficiency and accuracy by eliminating non-maximum suppression (NMS) during post-processing, thereby reducing inference latency and computational overhead. The project has gained significant traction, evidenced by its 4308 stars and 267 forks on GitHub. Created on May 23, 2024, the repository has seen consistent updates, with the latest push on May 28, 2024. The project is active and rapidly evolving, with a strong focus on further optimization and integration into various platforms.
ultralytics/models/yolo/model.py
, ultralytics/models/yolov10/model.py
).logs/yolov10b.csv
, logs/yolov10l.csv
, etc.).ultralytics/nn/modules/block.py
).ultralytics/models/yolov10/predict.py
).README.md
).ultralytics/models/yolov10/predict.py
).docs/en/guides/view-results-in-terminal.md
).ultralytics/models/yolov10/predict.py
).ultralytics/engine/trainer.py
).The team exhibits a collaborative environment with frequent code updates, bug fixes, and documentation improvements. Wang Ao stands out as the most active contributor, focusing on core functionalities and performance enhancements. Other contributors provide valuable inputs through documentation updates, bug fixes, and feature integrations.
Recent issues highlight performance discrepancies, optimizer support queries, detection accuracy concerns for small or distant objects, and hardware compatibility issues. Closed pull requests reflect a mix of bug fixes, documentation updates, and new feature integrations.
Integration Efforts
Performance Logging
Documentation Updates
The YOLOv10 project is in an active development phase with frequent contributions from multiple team members focusing on optimization, bug fixes, and feature enhancements. However, performance discrepancies and detection accuracy issues pose significant risks that need addressing. The project's trajectory remains positive with ongoing efforts towards integration and community engagement.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Wang Ao | 1 | 0/0/0 | 21 | 54 | 9793 | |
Thomas Friedel | 1 | 2/2/0 | 2 | 2 | 8 | |
Piotr Skalski | 1 | 1/1/0 | 1 | 1 | 2 | |
Ikko Eltociear Ashimine | 1 | 1/1/0 | 1 | 1 | 2 | |
Prashant Dixit | 1 | 1/1/0 | 1 | 1 | 2 | |
Daniel Sarmiento | 1 | 1/1/0 | 1 | 1 | 1 | |
Kai CHEN (ckmessi) | 0 | 1/0/1 | 0 | 0 | 0 | |
Houang869 (Houangnt) | 0 | 1/0/1 | 0 | 0 | 0 | |
Laugh (laugh12321) | 0 | 1/0/1 | 0 | 0 | 0 | |
None (dependabot[bot]) | 0 | 3/0/3 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The YOLOv10 project, developed by THU-MIG, is an advanced real-time object detection system implemented in PyTorch. It aims to optimize both the efficiency and accuracy of object detection models by eliminating the need for non-maximum suppression (NMS) during post-processing. This results in lower inference latency and reduced computational overhead. The project has garnered significant attention, with 4308 stars and 267 forks on GitHub. The repository was created on May 23, 2024, and has seen consistent updates, with the latest push on May 28, 2024. The overall state of the project is active and rapidly evolving, with a strong trajectory towards further optimization and integration into various platforms.
ultralytics/models/yolo/model.py
(+5, -0), ultralytics/models/yolov10/model.py
(+6, -2)logs/yolov10b.csv
(added, +501), logs/yolov10l.csv
(added, +501), logs/yolov10m.csv
(added, +501), logs/yolov10n.csv
(added, +501), logs/yolov10s.csv
(added, +501), logs/yolov10x.csv
(added, +501)ultralytics/nn/modules/block.py
(+3, -3)ultralytics/models/yolov10/predict.py
(+3, -1)README.md
(+2, -1)README.md
(+7, -7), ultralytics/engine/validator.py
(+2, -1)ultralytics/models/yolov10/predict.py
(+2, -4)ultralytics/engine/validator.py
(+1, -2)README.md
(+4, -1)ultralytics/cfg/__init__.py
(+2, −1)
– Lines: +2, −1docs/en/guides/view-results-in-terminal.md
(+1, −1)
– Lines: +1, −1ultralytics/models/yolov10/predict.py
(+2, −4)
– Lines: +2ultralytics/engine/trainer.py
(+1, −1)
– Lines: +1The recent activities indicate a highly collaborative environment with frequent updates and improvements. Wang Ao is the most active contributor with multiple commits focusing on bug fixes and feature enhancements. Other contributors like Ikko Eltociear Ashimine and Daniel Sarmiento have also made significant contributions recently. There is a clear pattern of continuous integration and testing as seen from the frequent updates to the README files and validation scripts.
The team appears to be focused on enhancing the functionality and usability of YOLOv10 by integrating it with various platforms like TensorRT and ONNX. The addition of logs suggests an emphasis on monitoring performance metrics. Overall, the development activities reflect a robust effort towards making YOLOv10 more efficient and user-friendly.
Recent GitHub issue activity for the THU-MIG/yolov10 project shows a high volume of newly created issues, with 20 open issues and 82 closed issues. The issues cover a wide range of topics, including feature requests, bug reports, and questions about usage and performance.
Several issues exhibit notable anomalies or complications:
Common themes include performance discrepancies, optimizer support, object detection accuracy for small or distant objects, and compatibility issues with different hardware setups.
#104: Yolov10 Pose Estimation?
#103: AdamW Optimizer support
#102: Why can't I reproduce your results, and at the same time, there is a significant difference in FLOPS?
#101: Small objects unable to detect
#100: Problems with detecting smaller objects or objects in the distance
#104: Yolov10 Pose Estimation?
#103: AdamW Optimizer support
#102: Why can't I reproduce your results, and at the same time, there is a significant difference in FLOPS?
#101: Small objects unable to detect
#100: Problems with detecting smaller objects or objects in the distance
There are currently no open pull requests.
A total of 12 pull requests have been closed recently. Here are the details and notable points:
pyproject.toml
(+9, -13)ultralytics/__init__.py
(+1, -1)ultralytics/utils/torch_utils.py
(+1, -1)Notable Points:
pyproject.toml
file.README.md
(+1, -0)Notable Points:
docs/en/guides/view-results-in-terminal.md
(+1, -1)Notable Points:
ultralytics/engine/trainer.py
(+1, -1)Notable Points:
ultralytics/models/yolov10/predict.py
(+2, -4)Notable Points:
README.md
(+1, -1)Notable Points:
Notable Points:
Notable Points:
Notable Points: This PR adds a Google Colab example demonstrating various functionalities of YOLOv10, which is useful for new users.
Several dependabot updates were closed without merging:
Notable Points for Dependabot Updates: These updates were closed without merging due to issues like non-collaborator review requests or label mismatches.
The recent activity shows a healthy mix of bug fixes, documentation updates, and new feature integrations. However, there are some concerns regarding unmerged pull requests like #82 and several dependabot updates that were closed without merging due to procedural issues. These should be revisited to ensure that necessary updates are not missed.
This pull request aims to update the pyproject.toml
and project version information for the THU-MIG/yolov10 repository. The changes include modifications to the project metadata, such as the project name, description, authors, maintainers, and URLs. Additionally, it updates the version number in the __init__.py
file and modifies a string in torch_utils.py
.
pyproject.toml
>=3.8
to >=3.9
.ultralytics/init.py
8.1.34
to 10.1.1
.ultralytics/utils/torch_utils.py
diff --git a/pyproject.toml b/pyproject.toml
index d42c3805..813e10c2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,4 +1,4 @@
-# Ultralytics YOLO 🚀, AGPL-3.0 license
+# THU-MIG YOLO v10 🚀, AGPL-3.0 license
# Overview:
# This pyproject.toml file manages the build, packaging, and distribution of the Ultralytics library.
@@ -24,22 +24,18 @@ build-backend = "setuptools.build_meta"
# Project settings -----------------------------------------------------------------------------------------------------
[project]
-name = "ultralytics"
+name = "yolov10"
dynamic = ["version"]
-description = "Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification."
+description = "THU-MIG YOLOv10 for SOTA Real-Time End-to-End Object Detection, based on Ultralytics YOLOv8."
readme = "README.md"
-requires-python = ">=3.8"
+requires-python = ">=3.9"
license = { "text" = "AGPL-3.0" }
keywords = ["machine-learning", "deep-learning", "computer-vision", "ML", "DL", "AI", "YOLO", "YOLOv3", "YOLOv5", "YOLOv8", "HUB", "Ultralytics"]
authors = [
- { name = "Glenn Jocher" },
- { name = "Ayush Chaurasia" },
- { name = "Jing Qiu" }
+ { name = "Ao Wang" },
]
maintainers = [
- { name = "Glenn Jocher" },
- { name = "Ayush Chaurasia" },
- { name = "Jing Qiu" }
+ { name = "Ao Wang" },
]
classifiers = [
"Development Status :: 4 - Beta",
@@ -124,9 +120,9 @@ extra = [
]
[project.urls]
-"Bug Reports" = "https://github.com/ultralytics/ultralytics/issues"
-"Funding" = "https://ultralytics.com"
-"Source" = "https://github.com/ultralytics/ultralytics/"
+"Bug Reports" = "https://github.com/THU-MIG/yolov10/issues"
+# "Funding" = "https://ultralytics.com"
+"Source" = "https://github.com/THU-MIG/yolov10/"
[project.scripts]
yolo = "ultralytics.cfg:entrypoint"
diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py
index 8ff1b4fb..1cd5eb5d 100644
--- a/ultralytics/__init__.py
+++ b/ultralytics/__init__.py
@@ -1,6 +1,6 @@
# Ultralytics YOLO 🚀, AGPL-3.0 license
-__version__ = "8.1.34"
+__version__ = "10.1.1"
from ultralytics.data.explorer.explorer import Explorer
from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld, YOLOv10
diff --git a/ultralytics/utils/torch_utils.py b/ultralytics/utils/torch_utils.py
index d476e1f8..90a792a9 100644
--- a/ultralytics/utils/torch_utils.py
+++ b/ultralytics/utils/torch_utils.py
@@ -104,7 +104,7 @@ def select_device(device="", batch=0, newline=False, verbose=True):
if isinstance(device, torch.device):
return device
- s = f"Ultralytics YOLOv{__version__} 🚀 Python-{PYTHON_VERSION} torch-{torch.__version__} "
+ s = f"THU-MIG YOLOv{__version__} 🚀 Python-{PYTHON_VERSION} torch-{torch.__version__} "
device = str(device).lower()
for remove in "cuda:", "none", "(", ")", "[", "]", "'", " ":
device = device.replace(remove, "") # to string, 'cuda:0' -> '0' and '(0, 1)' -> '0,1'
>=3.9
).>=3.8
to >=3.9
might affect users who are still on Python 3.8.The PR effectively updates the project metadata and version information to align with its new identity under THU-MIG/yolov10. The changes are well-executed and maintain consistency across the codebase.
However, it is important to consider the impact of changing the required Python version on existing users who may be using Python 3.8.
Given that this PR was closed without merging, it would be beneficial to understand why it was not merged and address any concerns before re-submitting or implementing similar changes in future updates.
If you have any questions or need further assistance with this assessment or any other matter related to this PR or project in general, feel free to ask!
ultralytics/models/yolo/model.py
YOLO
and YOLOWorld
, which are both subclasses of Model
.YOLO
class constructor initializes the model based on the provided model path. It dynamically switches to YOLOWorld
or YOLOv10
based on the model filename.YOLOWorld
class constructor initializes with a default model path and sets default COCO class names if not provided.task_map
property that maps tasks (e.g., classify, detect) to their respective model, trainer, validator, and predictor classes.ultralytics/models/yolov10/model.py
YOLOv10
, which is a subclass of Model
.task_map
property maps the "detect" task to its respective model, trainer, validator, and predictor classes specific to YOLOv10.Model
class ensures consistency with other model definitions.ultralytics/nn/modules/block.py
logs/yolov10b.csv
, logs/yolov10l.csv
, etc.)lr/pg0
, lr/pg1
, lr/pg2
).train/box_om
, train/cls_om
, etc.).model.py
) is consistent, adhering to a common design pattern which aids in maintainability.ultralytics/models/yolo/model.py
showcases advanced flexibility in handling different model variants.The source code files exhibit a high level of organization and adherence to object-oriented principles. Key areas for improvement include enhancing documentation, adding error handling where necessary, and providing tools for visualizing performance logs. Overall, the codebase demonstrates robustness suitable for maintaining complex deep learning models like YOLOv10.