码农-小林 2025-09-10 21:02 采纳率: 54.8%
浏览 7

Win10 下训练自己的数据(GPU 版) YOLOv3

1,零基础请教在darknet包中存放训练集以及生成训练文件和权重文件,已经训练流程。

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-09-10 21:03
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    在 Windows 10 系统下使用 YOLOv3 进行目标检测训练(GPU 版),需要以下几个步骤:

    • 准备数据集
    • 配置 Darknet 框架
    • 生成训练文件(如 .data, .names, .cfg
    • 训练模型并保存权重

    下面我将详细说明整个流程,并提供关键配置文件和命令,帮助你从零开始完成 YOLOv3 的训练。


    一、准备工作

    1. 安装 CUDA 和 cuDNN

    YOLOv3 使用 GPU 训练需要安装 CUDAcuDNN

    注意: 确保 CUDA 和 cuDNN 的版本与 Darknet 支持的版本兼容。

    2. 安装 Visual Studio

    Darknet 编译需要用到 Visual Studio,推荐使用 VS 2019 或更高版本

    3. 下载 Darknet 源码

    从 GitHub 克隆或下载 Darknet

    git clone https://github.com/pjreddie/darknet.git
    

    二、准备自己的数据集

    1. 数据集结构建议

    你的数据集应包含以下内容:

    your_dataset/
    ├── images/              # 图片文件夹
    │   ├── img1.jpg
    │   ├── img2.jpg
    │   └── ...
    ├── labels/              # 对应的标签文件(每个图片一个 .txt 文件)
    │   ├── img1.txt
    │   ├── img2.txt
    │   └── ...
    └── data/                # 存放配置文件
        ├── train.txt        # 训练集图片路径列表
        ├── valid.txt        # 验证集图片路径列表
        └── classes.names    # 类别名称文件
    

    2. 生成 train.txtvalid.txt

    编写脚本或手动创建这两个文件,格式如下:

    C:/path/to/your_dataset/images/img1.jpg
    C:/path/to/your_dataset/images/img2.jpg
    ...
    

    注意: 路径要使用 Windows 风格(即反斜杠 \ 或正斜杠 /)。

    3. 创建 classes.names

    创建 classes.names 文件,每行一个类别名,例如:

    car
    person
    bike
    

    三、配置 Darknet 的训练文件

    1. 修改 darknet/data/your_dataset.data

    创建 your_dataset.data 文件,内容如下:

    classes = 3            # 类别数量
    train = C:/path/to/your_dataset/data/train.txt
    valid = C:/path/to/your_dataset/data/valid.txt
    names = C:/path/to/your_dataset/data/classes.names
    backup = C:/path/to/save_weights/
    

    2. 修改 darknet/cfg/yolov3.cfg

    你可以使用默认的 yolov3.cfg,但需要根据你的类别数进行修改:

    • 找到 yolo 层(通常在文件末尾),将 classes=80 改为你的类别数(如 classes=3)。
    • 如果你需要自定义网络结构,可以调整 filters 参数等。

    注意: 如果你是首次训练,建议使用默认的 yolov3.cfg,并只修改 classes 参数。


    四、编译 Darknet(Windows)

    1. 打开 VS 2019(或其他版本)打开 darknet.sln

    • 在 Visual Studio 中打开 darknet.sln 文件。
    • 设置项目属性:
      • Configuration Manager 中选择 Release 模式。
      • Platform 设置为 x64
    • 编译项目(Build → Build Solution)。

    注意: 如果遇到错误,请确保 CUDA 和 cuDNN 已正确安装。

    2. 运行训练命令

    编译成功后,在命令行中运行:

    darknet.exe detector train C:/path/to/your_dataset/data/your_dataset.data C:/path/to/your_dataset/cfg/yolov3.cfg C:/path/to/pretrained_weights/yolov3.weights
    

    说明:

    • your_dataset.data 是你之前创建的配置文件。
    • yolov3.cfg 是你修改后的配置文件。
    • yolov3.weights 是预训练的权重文件(可从 YOLOv3 weights 下载)。

    五、训练过程中的注意事项

    1. 权重保存位置

    • 默认保存在 backup/ 目录下,可以在 your_dataset.data 中设置 backup = ...

    2. 日志输出

    • 训练过程中会输出损失值、FPS 等信息,可用于监控训练效果。

    3. 停止训练

    • 可以按 Ctrl + C 停止训练,或者等待自动完成。

    六、测试训练好的模型

    训练完成后,可以使用以下命令进行测试:

    darknet.exe detector test C:/path/to/your_dataset/data/your_dataset.data C:/path/to/your_dataset/cfg/yolov3.cfg C:/path/to/your_dataset/backup/yolov3_final.weights C:/path/to/test_image.jpg
    

    七、总结:完整训练流程

    1. 准备数据集:包括图像、标签、train.txtvalid.txtclasses.names
    2. 配置文件:创建 your_dataset.data 和修改 yolov3.cfg
    3. 编译 Darknet:使用 Visual Studio 编译源码。
    4. 启动训练:使用 darknet.exe 启动训练。
    5. 测试模型:验证训练结果。

    八、示例代码(修改后的 your_dataset.data

    classes = 3
    train = C:/dataset/data/train.txt
    valid = C:/dataset/data/valid.txt
    names = C:/dataset/data/classes.names
    backup = C:/dataset/weights/
    

    九、常见问题解决

    | 问题 | 解决方法 | |------|----------| | CUDA not found | 确认 CUDA 和 cuDNN 安装正确 | | darknet.exe not found | 确认编译成功并添加环境变量 | | No such file or directory | 检查路径是否正确(使用绝对路径) |


    如果你是零基础用户,建议先参考官方文档和社区教程逐步操作,也可以使用 PyTorch 实现 YOLOv3(更简单易用)。但如果你坚持使用 Darknet,以上步骤应该能帮助你顺利入门。

    如有更多具体问题,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月10日