YOLOv10 是一个开源的实时端到端目标检测系统,由清华大学多媒体智能组(THU-MIG)开发。 意味着从输入图像到输出物体检测结果(包括物体的类别和位置)这一过程是由同一个模型直接完成的,而不需要额外的后处理步骤,如非极大值抑制(NMS)。 模型能够在接收到图像或视频的同时,迅速且准确地识别并定位其中的物体,从输入到输出的整个过程由统一的模型直接完成,无需额外的后处理步骤。它在自动驾驶、安防监控、机器人导航等需要快速响应的应用中尤为重要。 YOLOv10 能够在保持高精度的同时,大幅度减少计算时间和所需资源。它主要用于自动驾驶、机器人导航等需要快速检测物体的场景。 <h3><img class="aligncenter size-full wp-image-8523" src="https://img.xiaohu.ai/2024/05/Jietu20240525-145537@2x.jpg" alt="" width="1272" height="1262" />功能特点</h3> <ol> <li><strong>实时检测</strong>: <ul> <li><strong>高速度</strong>:YOLOv10 能够在极短的时间内处理输入的图像或视频帧,通常在毫秒级别内完成物体检测,适用于需要快速响应的应用场景如自动驾驶、安防监控和机器人导航。</li> <li><strong>低延迟</strong>:优化的模型架构减少了处理时间,确保系统能够实时输出检测结果。</li> </ul> </li> <li><strong>端到端模型</strong>: <ul> <li><strong>统一处理流程</strong>:从输入图像到输出检测结果的整个过程由一个统一的模型直接完成,消除了中间的人工干预或额外处理步骤。</li> <li><strong>无 NMS 依赖</strong>:引入一致的双重分配策略,使模型不再依赖非极大值抑制(NMS)进行后处理,从而减少推理时间,提高检测效率。</li> </ul> </li> <li><strong>高精度与高效性</strong>: <ul> <li>通过优化模型架构和训练策略,YOLOv10 在保持高检测精度的同时,显著减少了计算开销和推理延迟,实现了精度与效率的良好平衡。</li> </ul> </li> <li><strong>多尺度检测</strong>: <ul> <li><strong>适应复杂场景</strong>:能够检测不同尺度的物体,包括小物体和大物体,适用于各种复杂的实际应用场景,如交通监控、无人驾驶等。</li> <li><strong>多层次特征融合</strong>:通过改进的特征融合策略,增强了对多尺度物体的检测能力。</li> </ul> </li> <li><strong>轻量化设计</strong>: <ul> <li>引入轻量级分类头和空间-通道解耦降采样策略,减少了模型参数和计算量,使其能够在资源受限的设备上运行,如嵌入式系统和移动设备。</li> </ul> </li> <li><strong>增强的特征提取能力</strong>: <ul> <li><strong>大核卷积</strong>:利用大核卷积增强模型的感受野,提高特征提取能力,尤其对大型物体的检测更加准确。</li> <li><strong>部分自注意力模块(PSA)</strong>:引入部分自注意力机制,增强模型的全局建模能力,提高检测准确性和鲁棒性。</li> </ul> </li> <li><strong>多模型规模选择</strong>: <ul> <li><strong>灵活性</strong>:提供多种模型规模(如 YOLOv10-N, YOLOv10-S, YOLOv10-M, YOLOv10-L, YOLOv10-X),用户可以根据具体应用需求和计算资源选择合适的模型。</li> <li><strong>可扩展性</strong>:不同规模的模型在参数数量和计算量上有明显差异,适应从嵌入式设备到高性能服务器的多种平台。</li> </ul> </li> <li><strong>开源与易部署</strong>: <ul> <li>提供开源代码,便于用户进行模型训练、推理和部署,适用于多种实际应用场景。</li> </ul> </li> </ol> <h3><img class="aligncenter size-full wp-image-8521" src="https://img.xiaohu.ai/2024/05/Jietu20240525-144215@2x.jpg" alt="" width="1636" height="732" />技术方法</h3> <strong>技术方法改进</strong> <ol> <li><strong>去掉多余步骤,提高效率</strong>: <ul> <li>传统的目标检测方法需要一个叫做“NMS”的步骤来去掉重复的检测结果。YOLOv10通过一种新的方法,避免了这个步骤,从而加快了检测速度。</li> </ul> </li> <li><strong>更轻量的设计</strong>: <ul> <li>YOLOv10对模型的设计进行了优化,使其更轻量、更高效。例如,使用了一种轻量级的分类方法来减少计算量。</li> </ul> </li> <li><strong>更好的下采样方法</strong>: <ul> <li>在处理图像时,YOLOv10采用了一种新的下采样方法,能够更好地保留图像中的信息,同时减少计算量。</li> </ul> </li> <li><strong>大核卷积和自注意力机制</strong>: <ul> <li>YOLOv10使用了一些新技术,比如大核卷积和自注意力机制,使得模型在处理大范围图像信息时更加高效和准确。</li> </ul> </li> </ol> <strong>实际效果</strong> <ul> <li><strong>快速</strong>:YOLOv10在处理速度上有了显著提升。例如,YOLOv10可以在几毫秒内处理一张图片,快速找到图片中的目标物体。</li> <li><strong>高效</strong>:相比之前的版本,YOLOv10在保持相同准确度的情况下,减少了计算量和所需的参数量。</li> <li><strong>多场景应用</strong>:适用于各种实时检测场景,如自动驾驶中的行人检测、安防监控中的入侵者检测等。</li> </ul> <h4><strong><img class="aligncenter size-full wp-image-8520" src="https://img.xiaohu.ai/2024/05/Jietu20240525-143645@2x.jpg" alt="" width="2442" height="832" />详细技术方法介绍</strong></h4> YOLOv10通过一系列技术方法的改进,实现了在实时端到端目标检测中的性能提升。以下是YOLOv10的主要技术方法: <h4>1. 无NMS训练策略</h4> <strong>一致的双重分配策略</strong>:YOLOv10提出了一致的双重分配策略,用于无非极大值抑制(NMS)的训练。这种方法包括: <ul> <li><strong>一对多分配(One-to-Many Assignment)</strong>:在训练过程中,为每个真实目标分配多个正样本,提供丰富的监督信号,有助于模型优化和性能提升。</li> <li><strong>一对一分配(One-to-One Assignment)</strong>:在推理过程中,只保留一个正样本,避免了冗余预测,从而提高了推理效率。</li> </ul> 这种双重分配策略结合了两者的优点,在训练阶段提供了丰富的监督信号,同时在推理阶段消除了对NMS的依赖。 <h4>2. 整体效率-准确性驱动的模型设计策略</h4> YOLOv10通过综合考虑效率和准确性,对模型的各个组件进行了优化设计,包括以下几个方面: <strong>轻量级分类头</strong>: <ul> <li>采用两个深度可分离卷积(Depthwise Separable Convolutions)和一个1×1卷积,减少了计算成本。</li> </ul> <strong>空间-通道解耦的下采样</strong>: <ul> <li>将空间下采样和通道变换操作解耦,先通过点卷积(Pointwise Convolution)调整通道数,再通过深度卷积(Depthwise Convolution)进行空间下采样,最大限度地保留信息,同时减少计算开销。</li> </ul> <strong>基于Rank指导的块设计</strong>: <ul> <li>使用内在Rank分析方法,确定每个阶段的冗余度,针对冗余较大的阶段采用紧凑的反转块(Compact Inverted Block, CIB)设计,提升效率。</li> </ul> <h4>3. 准确性驱动的模型设计</h4> 为了在低成本下提升性能,YOLOv10采用了大核卷积和部分自注意力模块: <strong>大核卷积(Large-Kernel Convolution)</strong>: <ul> <li>在深层阶段使用大核深度卷积(如7×7卷积),扩展感受野,提高模型能力。</li> <li>使用结构重参数化技术(Structural Reparameterization)引入额外的3×3卷积分支,缓解优化问题。</li> </ul> <strong>部分自注意力模块(Partial Self-Attention, PSA)</strong>: <ul> <li>引入部分自注意力模块,将特征在通道维度上分为两部分,其中一部分输入到多头自注意力模块(Multi-Head Self-Attention, MHSA)和前馈网络(Feed-Forward Network, FFN)中进行处理,另一部分则直接连接。</li> <li>通过这种方式,在保证全局建模能力的同时,降低计算复杂度。</li> </ul> <h4>4. 模型变体和性能优化</h4> YOLOv10提供了多个模型变体,包括N(Nano)、S(Small)、M(Medium)、B(Base)、L(Large)、X(Extra Large),以适应不同的计算资源和应用需求。通过一致的双重分配策略和整体效率-准确性驱动的模型设计,YOLOv10在各个模型规模下均实现了优异的性能表现。 <h3><strong>性能评估</strong></h3> YOLOv10在性能和效率方面取得了显著的进步,YOLOv10 在保持或提高检测精度的同时,显著减少了参数数量和计算量。例如,YOLOv10-S 比 YOLOv9-C 在相同性能下减少了 46% 的延迟和 25% 的参数。 其在多个模型规模下的性能表现如下: <h4>模型性能比较</h4> <table> <thead> <tr> <th>模型</th> <th>测试尺寸</th> <th>参数量</th> <th>FLOPs</th> <th>APval</th> <th>延迟</th> </tr> </thead> <tbody> <tr> <td>YOLOv10-N</td> <td>640</td> <td>2.3M</td> <td>6.7G</td> <td>38.5%</td> <td>1.84ms</td> </tr> <tr> <td>YOLOv10-S</td> <td>640</td> <td>7.2M</td> <td>21.6G</td> <td>46.3%</td> <td>2.49ms</td> </tr> <tr> <td>YOLOv10-M</td> <td>640</td> <td>15.4M</td> <td>59.1G</td> <td>51.1%</td> <td>4.74ms</td> </tr> <tr> <td>YOLOv10-B</td> <td>640</td> <td>19.1M</td> <td>92.0G</td> <td>52.5%</td> <td>5.74ms</td> </tr> <tr> <td>YOLOv10-L</td> <td>640</td> <td>24.4M</td> <td>120.3G</td> <td>53.2%</td> <td>7.28ms</td> </tr> <tr> <td>YOLOv10-X</td> <td>640</td> <td>29.5M</td> <td>160.4G</td> <td>54.4%</td> <td>10.70ms</td> </tr> </tbody> </table> <h4>主要改进点</h4> <ol> <li><strong>无NMS训练策略</strong>:通过一致的双重分配策略,YOLOv10消除了对NMS的依赖,实现了高效的训练和推理性能。与传统的NMS策略相比,这种方法在减少冗余预测方面具有显著优势。</li> <li><strong>整体效率-准确性驱动的模型设计</strong>:通过优化模型的各个组件,YOLOv10减少了计算冗余,提升了模型的计算效率。例如,采用轻量级分类头和空间-通道解耦的下采样策略,大幅度降低了计算成本。</li> <li><strong>大核卷积和部分自注意力模块</strong>:通过增加大核卷积和引入部分自注意力模块,YOLOv10增强了模型的感受野和全局建模能力,从而提升了检测精度。</li> </ol> <h4>性能对比</h4> <img class="aligncenter size-full wp-image-8519" src="https://img.xiaohu.ai/2024/05/Jietu20240525-143708@2x.jpg" alt="" width="1820" height="1608" /> <ul> <li><strong>与YOLOv9-C比较</strong>: <ul> <li>YOLOv10-B在相同性能下延迟减少了46%,参数量减少了25%。</li> </ul> </li> <li><strong>与RT-DETR-R18比较</strong>: <ul> <li>YOLOv10-S在相似AP下快了1.8倍,参数量和FLOPs分别小了2.8倍和2.8倍。</li> </ul> </li> <li><strong>与其他YOLO版本比较</strong>: <ul> <li>YOLOv10在各个模型规模上都展示了更优越的计算-准确性权衡。比如,YOLOv10-S在比YOLOv8-S减少36%参数和24%计算量的情况下,AP提升了1.4%。</li> </ul> </li> </ul> 大量实验表明,YOLOv10在不同模型规模下都能显著超过现有的最先进模型,在计算量和准确性之间取得了卓越的平衡。具体来说,YOLOv10在COCO数据集上的表现尤为突出,展示了其在实际应用中的强大潜力。 <h3>应用场景</h3> 实时端到端目标检测技术在多个领域有广泛应用,以下是一些典型的应用场景: <ol> <li><strong>自动驾驶</strong>:实时检测道路上的行人、车辆、交通标志等,辅助自动驾驶系统进行决策,确保行车安全。</li> <li><strong>视频监控</strong>:实时监控视频流,检测并识别潜在的安全威胁,如入侵者、遗留物等,提升安全性。</li> <li><strong>智能家居</strong>:用于家庭监控,检测门前是否有访客、是否有异常情况发生,并及时通知用户。</li> <li><strong>零售分析</strong>:在零售店内部署摄像头,实时检测顾客行为,分析顾客购物习惯,提高客户服务质量。</li> <li><strong>医疗影像分析</strong>:实时检测医学影像中的异常,如肿瘤、病变等,辅助医生进行诊断和治疗。</li> <li><strong>无人机监控</strong>:无人机搭载摄像头,对农田、森林、建筑等进行实时监控,检测作物生长情况、森林火灾、建筑施工进展等。</li> <li><strong>工业自动化</strong>:用于生产线上的实时检测,识别和定位产品缺陷,提高生产效率和质量。</li> </ol> GitHub:<a href="https://github.com/THU-MIG/yolov10" target="_blank" rel="noopener">https://github.com/THU-MIG/yolov10</a> 论文:<a href="https://arxiv.org/pdf/2405.14458v1" target="_blank" rel="noopener">https://arxiv.org/pdf/2405.14458v1</a> 模型下载:<a href="https://huggingface.co/models?library=transformers.js&other=yolov10&sort=trending" target="_blank" rel="noopener">https://huggingface.co/models?library=transformers.js&other=yolov10&sort=trending</a> 在线演示: [<a href="https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/train-yolov10-object-detection-on-custom-dataset.ipynb#scrollTo=SaKTSzSWnG7s" rel="nofollow" data-immersive-translate-walked="fe312bbf-5090-4627-8e44-0084fc5834f0"><code data-immersive-translate-walked="fe312bbf-5090-4627-8e44-0084fc5834f0">colab</code></a>] [<a href="https://huggingface.co/spaces/kadirnar/Yolov10" rel="nofollow" data-immersive-translate-walked="fe312bbf-5090-4627-8e44-0084fc5834f0"><code data-immersive-translate-walked="fe312bbf-5090-4627-8e44-0084fc5834f0">Huggingface demo</code></a>] [<a href="https://huggingface.co/spaces/Xenova/yolov10-web" rel="nofollow" data-immersive-translate-walked="fe312bbf-5090-4627-8e44-0084fc5834f0"><code data-immersive-translate-walked="fe312bbf-5090-4627-8e44-0084fc5834f0">Transformers.js demo</code></a>]