如何指定YOLOv8预训练模型仅检测单个类别(如行人)?
YOLOv8 指定仅检测单个类别(如行人)的方法
在YOLOv8中,不需要沿用YOLOv5修改model.classes属性的方式,而是通过推理时传入参数或者配置模型默认推理参数来实现仅检测特定类别,以下是具体方法:
方法一:推理时直接指定类别(推荐,灵活可控)
加载预训练模型后,在predict()方法中通过classes参数指定要检测的类别ID(行人在COCO数据集的类别ID为0),同时可通过conf设置置信度阈值:
from ultralytics import YOLO # 加载预训练YOLOv8m模型 model = YOLO('YOLOv8m.pt') # 仅检测行人(类别ID 0),置信度阈值设为0.6 results = model.predict( source='你的图片/视频路径', # 替换为你的输入源,也可以是摄像头ID如0 classes=[0], conf=0.6 )
方法二:设置模型默认推理参数(一劳永逸)
如果希望每次调用predict()时都默认检测指定类别,可以修改模型的predict_args属性,后续无需重复传参:
from ultralytics import YOLO model = YOLO('YOLOv8m.pt') # 设置默认仅检测行人,置信度0.6 model.predict_args['classes'] = [0] model.predict_args['conf'] = 0.6 # 后续直接调用predict即可自动应用设置 results = model.predict(source='你的输入源')
说明
- COCO数据集的类别ID可参考官方定义,行人对应的ID是
0,如果需要检测其他类别,替换为对应ID即可。 - YOLOv8的API设计更强调在推理/训练时通过方法参数传递配置,而非直接修改模型属性,这是和YOLOv5的主要区别。
内容的提问来源于stack exchange,提问作者TAN
相关产品推荐
相关产品推荐

