骑行者和行人检测数据集YOLO格式 |数据集详情检测类别cyclistperson图片总量5129张(另有版本13403张)训练集4397张验证集572张测试集190张标注状态全部已标注即拿即用数据格式支持YOLO格式及其他常用格式1这是一个专为智能交通系统ITS、自动驾驶和城市安全监控设计的高质量目标检测数据集。该数据集重点区分了骑行者Cyclist和行人Person这两类目标在交通场景中具有极高的动态性和不确定性是自动驾驶感知系统中最关键的检测对象。 1. 骑行者与行人检测数据集概况项目属性详细说明数据集名称Cyclist-Pedestrian-Detection-Dataset图像总量5,129张 (标准版) / 13,403 张 (扩展版)数据划分训练集: 4,397 张 (85.7%)验证集: 572 张 (11.1%)测试集: 190 张 (3.7%)标注格式YOLO 格式(.txt)兼容 YOLOv5 ~ v11 全系列检测类别2 类cyclist(骑行者包含自行车/电动车及骑手)person(行人步行人群)标注状态100% 已标注无需额外清洗即拿即用核心应用场景自动驾驶紧急制动 (AEB)、盲区监测 (BSD)、路口碰撞预警、智慧城市交通流分析 类别特征与检测难点类别 ID英文名称中文含义典型特征检测难点与挑战0cyclist骑行者人车结合体运动速度快轨迹多变1.形态多变骑行姿态各异车辆类型多样自行车/电摩。2.遮挡严重常被汽车、树木遮挡只露出头部或车轮。3.小目标远距离下像素占比极小。1person行人直立行走速度较慢行为不可预测1.密集聚集公交站、路口人群密集易发生漏检。2.部分遮挡多人重叠时边界模糊。3.误检风险易与路灯杆、广告牌人像混淆。 数据洞察高比例训练集85% 的数据用于训练有利于模型充分学习特征适合从头训练Training from scratch或微调。独立测试集虽然测试集较小190 张但足以评估模型在未见数据上的泛化能力防止过拟合。动态平衡实际场景中行人数量通常远多于骑行者需注意检查两类样本的分布平衡必要时在 Loss 函数中调整权重。 2. YOLOv8/v11 详细训练代码针对骑行者快速移动和行人密集遮挡的特点本代码采用了高分辨率输入、强数据增强以及针对小目标的优化策略。 第一步数据集配置文件 (cyclist_person.yaml)请在项目根目录下创建此文件。path:./Cyclist_Pedestrian_Dataset# 数据集根目录train:images/train# 对应 4397 张val:images/val# 对应 572 张test:images/test# 对应 190 张# 类别数量nc:2# 类别名称 (顺序必须严格对应 ID)names:0:cyclist1:person 第二步Python 训练脚本 (train_traffic.py)此脚本针对交通场景进行了深度优化输入尺寸提升设为imgsz960以捕捉远处的骑行者和行人。针对性增强禁用上下翻转符合物理规律增强运动模糊模拟。损失函数优化使用 Focal Loss 变体解决难易样本不平衡问题。fromultralyticsimportYOLOimporttorchimportosimportyamldeftrain_traffic_detector():print( 开始训练骑行者与行人检测模型...)# 1. 加载模型# 推荐使用 yolov8m.pt 或 yolov8l.pt# 交通场景对实时性和精度要求都高Medium 型号是较好的平衡点modelYOLO(yolov8m.pt)# 2. 定义训练参数resultsmodel.train(datacyclist_person.yaml,epochs200,# 充足轮次以确保收敛imgsz960,# 【关键】高分辨率检测远处小目标 (骑行者/行人)batch12,# 根据显存调整 (24G显存可设 24-32)device0iftorch.cuda.is_available()elsecpu,workers4,# --- 优化器设置 ---optimizerSGD,lr00.01,lrf0.05,momentum0.937,weight_decay0.0005,warmup_epochs3.0,warmup_momentum0.8,# --- 交通场景专用数据增强 ---augmentTrue,hsv_h0.015,# 色调微调 (适应不同天气/光照)hsv_s0.7,hsv_v0.4,# 亮度增强 (模拟隧道/夜间/逆光)degrees0.0,# 【重要】禁止旋转交通场景地平线必须水平translate0.1,scale0.6,# 大范围缩放 (模拟不同距离的车辆视角)shear0.0,perspective0.0,flipud0.0,# 【重要】禁止上下翻转 (人不会倒立)fliplr0.5,# 允许左右翻转mosaic1.0,# Mosaic 增强 (对密集行人和遮挡场景极其有效)mixup0.1,copy_paste0.1,# 增加稀疏类别 (如远处的骑行者) 的样本密度# --- 难例挖掘与损失优化 ---fl_gamma1.5,# Focal Loss Gamma提升难分类样本(遮挡/小目标)权重label_smoothing0.0,# 关闭标签平滑让类别置信度更尖锐box7.5,# 提高 Box Loss 权重优化定位精度cls0.5,# 分类 Loss 权重dfl1.5,# Distribution Focal Loss# --- 训练策略 ---patience30,saveTrue,save_period-1,verboseTrue,projectruns/traffic_detect,namecyclist_person_yolov8m_v1,exist_okFalse,seed42,deterministicTrue,# --- 推理预设 ---conf0.001,# 极低置信度阈值确保不漏检远处目标iou0.65# NMS IoU适当调高以保留密集人群中的多个目标)print(f✅ 训练完成最佳模型路径{results.save_dir}/weights/best.pt)# 3. 验证与详细评估print( 正在测试集上进行最终评估...)# 使用 test split 进行最终性能报告metricsmodel.val(splittest)print(-*60)print(f 整体指标 (Test Set):)print(f mAP50:{metrics.box.map50:.4f})print(f mAP50-95:{metrics.box.map:.4f})print(-*60)# 打印各类别表现class_names[cyclist,person]print( 各类别 mAP50-95 详细分析:)fori,nameinenumerate(class_names):map_scoremetrics.box.maps[i]precisionmetrics.box.mp[i]ifhasattr(metrics.box,mp)else0recallmetrics.box.mr[i]ifhasattr(metrics.box,mr)else0status✅ 优秀ifmap_score0.6else⚠️ 需优化print(f [{i}]{name:12s}: mAP{map_score:.4f}, Precision{precision:.4f}, Recall{recall:.4f}{status})# 4. 导出模型 (可选用于部署)# model.export(formatonnx, dynamicTrue, simplifyTrue)# model.export(formattensorrt, device0, halfTrue)if__name____main__:ifnotos.path.exists(cyclist_person.yaml):print(❌ 错误未找到 cyclist_person.yaml请检查路径)else:train_traffic_detector() 3. 高级应用碰撞预警逻辑示例训练好模型后在自动驾驶或辅助驾驶系统中通常需要结合距离估算和相对速度来判断碰撞风险。以下是一个简化的逻辑框架fromultralyticsimportYOLOimportcv2importnumpyasnp modelYOLO(runs/traffic_detect/cyclist_person_yolov8m_v1/weights/best.pt)defanalyze_traffic_risk(frame,focal_length800): 简单的交通风险分析 frame: 摄像头帧 focal_length: 相机焦距估计值 (用于粗略测距) resultsmodel(frame,conf0.4,iou0.6)resultresults[0]boxesresult.boxes risk_alerts[]img_height,img_widthframe.shape[:2]forboxinboxes:cls_idint(box.cls[0])conffloat(box.conf[0])xyxybox.xyxy[0].cpu().numpy()# [xmin, ymin, xmax, ymax]categorycyclistifcls_id0elseperson# 计算目标中心点cx(xyxy[0]xyxy[2])/2cy(xyxy[1]xyxy[3])/2# 计算边界框高度 (高度越大通常距离越近)obj_heightxyxy[3]-xyxy[1]# 粗略距离估算 (假设行人/骑行者平均高度为 1.7m / 1.8m)avg_real_height1.75ifcls_id0else1.7distance(avg_real_height*focal_length)/obj_height# 风险判定逻辑risk_levelSAFEifdistance10:# 10米以内risk_levelHIGH RISKrisk_alerts.append(f⚠️{category.upper()}DETECTED AT{distance:.1f}m! BRAKE!)elifdistance25:risk_levelWARNING# 可视化color(0,255,0)ifrisk_levelSAFEelse(0,0,255)cv2.rectangle(frame,(int(xyxy[0]),int(xyxy[1])),(int(xyxy[2]),int(xyxy[3])),color,2)labelf{category}{conf:.2f}({risk_level})cv2.putText(frame,label,(int(xyxy[0]),int(xyxy[1])-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,color,2)returnframe,risk_alerts# 示例调用# cap cv2.VideoCapture(traffic_video.mp4)# while cap.isOpened():# ret, frame cap.read()# if not ret: break# processed_frame, alerts analyze_traffic_risk(frame)# for alert in alerts: print(alert)# cv2.imshow(Traffic Monitor, processed_frame)# if cv2.waitKey(1) 0xFF ord(q): break 4. 针对该数据集的特别建议小目标与远距离检测骑行者在远距离下非常小。如果mAP50-95较低建议在推理时使用SAHI (Slicing Aided Hyper Inference)技术将大图切分成小块分别检测可显著提升远处目标的召回率。遮挡处理交通场景中遮挡非常普遍。训练时已开启mosaic1.0这非常关键。如果在实际应用中漏检严重可以尝试在训练配置中增加copy_paste的比例人为制造更多遮挡样本。实时性优化对于车载嵌入式设备如 Jetson Orin如果yolov8m推理速度不足可蒸馏到yolov8n或使用yolov8n.pt重新训练虽然精度略有下降但帧率可提升 2-3 倍。类别不平衡如果数据集中行人数量远多于骑行者可以在model.train()中添加class_weights参数给予cyclist更高的权重防止模型偏向于只检测行人。这套代码和策略能够充分利用 5000 张高质量标注数据训练出一个在复杂交通环境下依然稳健的感知模型。