You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YOLOv7检测目标数量是否存在上限?训练参数需调整吗?

YOLOv7检测目标数量限制问题解决

YOLOv7本身没有检测目标数量的硬限制,你遇到的最多检测100个目标的问题,是因为默认参数设置了检测框的最大输出数量。

核心原因

YOLO系列(包括v7)在推理时的非极大值抑制(NMS)环节,默认通过max_det参数限制了单张图片输出的检测框数量,这个参数默认值就是100——这就是为什么超过100个目标的图片里,模型只输出前100个置信度较高的结果,而目标少的时候能全部检测到。

需要调整的参数

1. 推理阶段修改max_det

不管是用官方的detect.py脚本还是Roboflow的notebook,找到推理相关的代码/命令,把max_det的值调高就行:

  • 如果是命令行运行,加参数:--max-det 200(数值根据你的实际需求设置,比如300、500都可以)
  • 如果是notebook里的推理代码,找到类似model.predict(..., max_det=100)的语句,把100改成你需要的数值。

2. 训练阶段的辅助调整

虽然训练阶段max_det不直接影响,但针对微生物菌落这类小目标密集的场景,还可以做这些优化:

  • 重新计算锚框:YOLOv7默认锚框可能不适合小尺寸的菌落,用python utils/autoanchor.py脚本重新计算适配你数据集的锚框,或者在训练时加--anchors参数启用自动锚框计算。
  • 检查数据集标注:确保超过100个目标的样本标注完整,没有遗漏,避免训练时模型没学到这类密集场景的特征。
  • 调整超参数:在训练用的hyp文件(比如hyp.scratch.yaml)里,适当调高obj(目标损失权重),帮助模型更好地学习小目标的特征。

补充说明

你的模型在15-30个目标的图片上检测正常,且准确率约80%,说明模型本身对目标的识别能力没问题,主要就是检测框数量的限制导致的。修改max_det后,推理时间会有所增加,你可以根据实际需求平衡检测数量和速度。

内容的提问来源于stack exchange,提问作者juan carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:01:01