如何用COCO数据集单类别(行人)训练YOLOv7及TensorBoard问题解决
YOLOv7单类别(行人)训练与TensorBoard问题解决
一、基于COCO数据集仅训练行人类别
完全可以通过train.py实现,结合--single-cls参数和数据集配置调整即可,步骤如下:
预处理COCO数据集标注
COCO中行人对应类别ID为0,你需要过滤训练/验证集的标注文件,只保留category_id: 0的目标条目。如果使用YOLO格式标注,直接将所有保留的标注类别号改为0即可。修改数据集配置文件
找到data/coco.yaml,修改以下参数:- 将
nc: 80改为nc: 1 - 将
names列表改为names: ['person']
- 将
使用
--single-cls参数启动训练
在终端运行训练命令时添加该参数,示例命令:python train.py --weights yolov7.pt --data coco.yaml --single-cls --batch-size 16--single-cls的作用是强制模型按单类别模式训练,忽略原标注中的多类别信息,所有目标都归为你指定的唯一类别。
二、TensorBoard访问无内容的排查方案
针对日志提示但页面无内容的问题,按以下顺序排查:
- 等待训练生成事件文件:训练刚启动时,TensorBoard的事件文件(
events.out.tfevents.*)还未生成,需等待训练完成1-2个epoch后,再刷新页面查看。 - 检查日志路径正确性:确认
runs/train目录下存在上述事件文件,若训练日志中显示的路径不同,需对应修改tensorboard命令的--logdir参数。 - 更换端口访问:若默认端口6006被占用,可指定其他端口启动:
tensorboard --logdir runs/train --port 6007 - 清理浏览器缓存:浏览器缓存可能导致页面无法加载新内容,尝试用无痕模式访问或清空缓存后刷新。
- 验证训练状态:检查训练日志是否有报错,若训练中途终止,不会生成完整的TensorBoard数据。
内容的提问来源于stack exchange,提问作者Cansel Oğuz
相关产品推荐
相关产品推荐

