detect.py: error: unrecognized arguments: --runs/train/exp/weights/best.pt
时间: 2025-07-06 09:56:40 浏览: 14
### 解决 `detect.py` 脚本报错 'unrecognized arguments'
在遇到 `'unrecognized arguments: --runs/train/exp/weights/best.pt'` 错误时,通常是因为命令行参数解析器无法识别该路径作为有效的参数。为了修正这个问题,建议按照以下方式调整代码逻辑。
#### 修改 ArgumentParser 配置
确保 `ArgumentParser` 正确设置了所有预期的命令行选项,并且能够区分位置参数和关键字参数。如果 `best.pt` 是权重文件的位置,则应将其作为一个独立的关键字参数传入而不是作为额外的未知参数[^2]。
```python
import argparse
def get_args():
parser = argparse.ArgumentParser(description='YOLOv5 Detection')
# 添加必要的参数项
parser.add_argument('--source', type=str, default='data/images', help='source') # 输入源
parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model path(s)')
parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='inference size (pixels)')
parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold')
parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
args = parser.parse_args()
return args
```
#### 更新命令行调用格式
当指定权重文件时,应该显式地使用 `--weights` 关键字而非直接跟在其他参数后面:
```bash
python detect.py --source test.jpg --weights runs/train/exp/weights/best.pt --imgsz 640 --conf-thres 0.4 --iou-thres 0.5 --device 0
```
这样做的目的是让程序明确知道哪个字符串对应于哪个变量名,从而避免不必要的混淆并防止类似的错误发生。
#### 检查配置文件与数据集设置
确认所使用的 `.yaml` 文件和其他依赖资源都已正确定义并且位于正确的目录下。例如,在训练过程中提到的数据集配置应当存在于项目结构内的适当位置[^1]。
阅读全文
相关推荐
















