固定链接 在滴滴云上用 Darknet 训练 VOC

在滴滴云上用 Darknet 训练 VOC

在滴滴云上用 Darknet 训练 VOC

准备

资源准备

登录滴滴云主页创建 GPU 云主机。

环境准备

  1. 使用 SSH 客户端登录云主机。
  2. 编译 Darknet:

数据准备

  1. YOLOv3 pre-train 模型做预测
    • 首先我们用 YOLOv3 作者提供的 pre-train 模型进行测试,该模型由作者用 COCO 数据集提前训练好了,可以识别 80 个类,可用如下命令下载:

      yolov3.weights 文件将会被默认下载到 Darknet 文件夹下。

    • 使用 pre-train 模型测试下 inference 效果:

      执行这个命令后,会看到有如下输出:

      输出 log 显示检测到三个目标,这三个目标分别为:100% 概率是 dog,92% 概率是 truck, 99% 概率是 bicycle;最终结果图片保存为 predictions.png 。

  2. dartnet53.conv.74 模型做训练

    通常训练我们都会使用从其他一些网络上训练好的模型来初始化,这里用 ImageNet 上预训练好的 dartnet53.conv.74 进行上传,下载该模型到 Darknet 工程下:

    通常想要在别的训练数据集上训练 YOLOv3 ( 如 VOC 数据集 ),而不是使用作者在 COCO 数据集预先训练好的模型 ( .weights 文件 ),需要使用该模型进行模型初始化。

    darknet53.conv.74 文件将会被默认下载到 Darknet 文件夹下。

  3. 数据准备

    • 数据下载

      数据可以从 VOC 官网下载,但是官网下载耗时较长;为了减少下载时间,我们在滴滴云内部创建了一个公开的对象存储 S3,将常用的数据集都存储在这里,方便用户快速下载。

      为了保持文件的整洁,推荐在 Darknet 文件夹下新建一个名为 dataset 的文件夹,将数据集下载到 dataset 文件夹中:

    • 官网下载

    • 解压上述三个压缩包到 VOCdevkit:

    • 解压后的文件夹结构如下:

      使用 tree 命令查看文件夹结构:

      得到如下结果:

    • 退出 dataset 文件夹,返回 Darknet 目录

      如果你在 Darknet 下新建了一个dataset,像我推荐的那样,需要返回 dataset 文件夹的上级目录,也就是 Darknet 目录下:

      如果你将数据集下载到了你自己指定的文件夹,请确保返回到 Darknet 目录下再进行下一步。

    • 生成 label 文件

      Darknet 使用 .txt 文件保存 label 信息,而 VOC 是 xml,这里需要做一个转换,第一步编译 Darknet 时 Git 的工程里有一个 scripts/voc_label.py 脚本就是用来做转换的。因为我们这里只用 VOC2007 数据做 Demo,印象需要做对脚本做一些修改:

      1. 把 scripts 下 voc_label.py 脚本复制到和上一步解压的 VOCdevkit 文件夹同一个目录下:

        如果你没有将 VOC2007 数据集保存在 dataset 目录下,则将第二个参数改成你自己数据集的路径:

      2. 修改 voc_label.py 脚本,删除处理 VOC2012 的代码。

        进入 voc_label.py 所在的文件夹:

        修改 voc_label.py 文件:

      3. 执行该脚本:

        执行完会发现在此文件夹下多了几个文件,其中包括:

        这两个文件是训练时候需要的。

    • 返回 Darknet 目录

      如果你将数据集保存在了 dataset 目录,则你现在在 dataset 目录,需要返回 Darknet 目录下:

      如果你将数据集下载到了你自己指定的文件夹,请确保返回到 Darknet 目录下再进行下一步。

训练 VOC2007 数据集

  1. 配置工程

    在开始训练前,需要做一些配置工作,指定数据位置。

    • 进入 Darknet 工程,cfg/voc.data 配置文件如下:

      需要被修改的是 train 和 valid 两项。

  2. 开始训练

本文作者:陈凯

您的留言将激励我们越做越好