YOLOv8 室内行人跌倒数据集信息表
YOLOv8 室内行人跌倒数据集信息表数据集概述项目内容数据集名称YOLOv8 室内行人跌倒数据集总图像数量9,262 张应用场景跌倒检测、公共安全监控、老年人护理、智能安防目标类别2 类stand站立、fall跌倒标注格式.txtYOLO 格式归一化坐标适用模型YOLO 系列直接用于训练数据集划分及标注统计数据集类型图像数量占比备注训练集7,148 张77.2%包含stand和fall类别验证集2,114 张22.8%用于评估模型性能调参总计9,262 张100%——类别标签对照表及样本数统计训练集样本分布类别编号英文名称中文名称样本数量训练集0stand站立2,500 左右1fall跌倒4,600 左右验证集样本分布类别编号英文名称中文名称样本数量验证集0stand站立1,6731fall跌倒692典型应用方向公共安全监控实时监测公共场所中的人员状态及时发现跌倒事件。老年人护理在养老院或家庭环境中使用帮助及时响应老人跌倒情况。智能安防结合摄像头监控网络实现自动化的跌倒检测与报警功能。科研与教学适合用于目标检测算法的研究与开发特别是在跌倒检测领域。data.yaml示例内容train:./fall-detection-dataset/images/trainval:./fall-detection-dataset/images/valnc:2# 类别数量names:[stand,fall]# 类别名称1数据集文字描述室内行人跌倒数据集yolo格式两类站立‘stand’跌倒‘fall’。数据集训练集7148张验证集2114张两个种类在训练集出现的样例数2500左右 4600左右三个种类在验证集出现的样例数1673 6921室内行人跌倒检测的 YOLOv8 可训练数据集包含两个类别stand站立约 2500 张训练集fall跌倒约 4600 张训练集总训练集 7148 张验证集 2114 张已按 YOLO 格式标注可直接用于目标检测模型训练。是从环境搭建 → 数据准备 → 模型训练 → 推理 → 评估 → 模型导出的完整技术流程适用于使用YOLOv8实现高精度跌倒行为识别。✅ 一、系统环境搭建1. 确认 CUDA 驱动GPU 加速确保 NVIDIA 显卡驱动已安装并支持 CUDAnvidia-smi输出应显示 GPU 型号和 CUDA 版本推荐 ≥ 11.8。2. 安装 AnacondaPython 包管理器前往 https://www.anaconda.com/products/distribution 下载并安装 Anaconda支持 Windows/Linux/macOS。3. 创建 Python 虚拟环境# 创建名为 fall_detection 的环境使用 Python 3.9conda create-nfall_detectionpython3.9# 激活环境conda activate fall_detection4. 安装必要依赖# 安装 PyTorch以 CUDA 11.8 为例根据你的驱动选择pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 YOLOv8 官方库pipinstallultralytics opencv-python numpy matplotlib tqdm scikit-learn pandas pillow# 可选TensorBoard 可视化pipinstalltensorboard# 验证安装python-cimport torch; print(torch.__version__); print(torch.cuda.is_available())# 应输出 True 表示 GPU 可用✅ 二、数据集结构与data.yaml配置数据目录结构fall_dataset/ ├── images/ │ ├── train/ # 7148 张训练图像 │ └── val/ # 2114 张验证图像 ├── labels/ │ ├── train/ # 对应的 .txt 标注文件 (YOLO 格式) │ └── val/ └── data.yaml # 数据配置文件创建data.yaml在项目根目录创建data.yaml文件# data.yamltrain:./fall_dataset/images/trainval:./fall_dataset/images/val# 类别数量nc:2# 类别名称顺序必须与 label 文件中的 class ID 一致names:-stand-fall# 中文名称用于可视化names_zh:-站立-跌倒✅ 三、调用 YOLOv8 官方预训练模型进行训练由于跌倒行为中“跌倒”姿态多变、目标较小建议使用YOLOv8m 或 YOLOv8l提升小目标检测能力。fromultralyticsimportYOLO# 加载官方预训练模型推荐使用 yolov8m.ptmodelYOLO(yolov8m.pt)# 自动下载 ImageNet 预训练权重# 开始训练resultsmodel.train(datadata.yaml,# 数据配置文件路径epochs120,# 训练轮数数据量大无需过多 epochbatch32,# 根据显存调整RTX 3090 可用 64imgsz640,# 输入尺寸可尝试 800 提升小目标检测optimizerAdamW,# 更稳定优化器lr00.001,# 初始学习率weight_decay0.0005,momentum0.937,# 数据增强关键提升泛化augmentTrue,hsv_h0.015,# 色调扰动hsv_s0.7,# 饱和度增强hsv_v0.4,degrees10.0,# 随机旋转translate0.1,scale0.5,shear0.0,flipud0.0,fliplr0.5,# 左右翻转mosaic1.0,# Mosaic 增强强烈推荐mixup0.1,# MixUpcopy_paste0.1,# Copy-Paste Augmentation对“跌倒”姿态有效# 正则化dropout0.2,label_smoothing0.05,# 标签平滑防止过拟合# 学习率调度cos_lrTrue,# 余弦退火学习率# 保存与日志projectruns/train,namefall_detection_yolov8m,saveTrue,save_period10,exist_okFalse,# 缓存内存充足时开启cacheTrue)建议若显存不足改用yolov8s.pt或降低batch16使用imgsz800可提升对躺倒姿态的识别能力copy_paste增强可缓解stand类别样本较少的问题✅ 四、推理代码单图 / 批量 / 视频1. 单张图像推理fromultralyticsimportYOLOfromPILimportImage# 加载最佳模型modelYOLO(runs/train/fall_detection_yolov8m/weights/best.pt)# 推理resultsmodel(test_person.jpg,conf0.3)# 设置置信度阈值# 显示结果forrinresults:im_arrayr.plot()# 绘制边界框和标签imImage.fromarray(im_array[...,::-1])# BGR to RGBim.show()2. 批量图像推理resultsmodel.predict(sourcefall_dataset/images/val,saveTrue,projectruns/detect,namefall_val_results,conf0.3,imgsz640)print(批量推理完成)3. 视频检测如监控视频resultsmodel.predict(sourceindoor_surveillance.mp4,saveTrue,projectruns/detect/video,namefall_video_result,showFalse,conf0.3)print(视频检测完成)4. 实时摄像头检测OpenCVimportcv2 capcv2.VideoCapture(0)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame,conf0.3)annotated_frameresults[0].plot()cv2.imshow(Fall Detection,annotated_frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()✅ 五、模型评估验证集 可选测试集1. 在验证集上评估metricsmodel.val(datadata.yaml,splitval,batch32,imgsz640,save_jsonFalse,projectruns/val,namefall_eval)print(fmAP0.5:{metrics.box.map50:.4f})print(fmAP0.5:0.95:{metrics.box.map:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})# 每类 APfori,nameinenumerate(model.names):print(f{name}(AP0.5):{metrics.box.ap[i]:.4f})2. 建议创建独立测试集并评估建议从训练集中划分出 10% 作为测试集# 示例使用脚本划分 train → train test# 或手动创建 test/ 文件夹并更新 data.yaml更新data.yaml添加test:字段test:./fall_dataset/images/test然后进行最终测试评估test_metricsmodel.val(datadata.yaml,splittest,save_jsonTrue,nametest_final)print(fTest mAP0.5:{test_metrics.box.map50:.4f})print(fTest Recall:{test_metrics.box.r:.4f})
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2612205.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!