darknet框架中YOLO3的参数理解

3.0 前言
        本文是YOLOv3系列第3篇,记录YOLOv3如何训练自己的模型。

        YOLOv3系列第1篇:win10下YOLOv3下载与编译

        YOLOv3系列第2篇:YOLOv3的应用

        YOLOv3系列第3篇:YOLOv3训练自己的模型
        建议参考github上作者的说明,写的十分清楚。

        参考的网页:

        https://github.com/AlexeyAB/darknet/blob/master/README.md

        https://blog.csdn.net/lilai619/article/details/79695109#commentBox

        https://blog.csdn.net/hrsstudy/article/details/65447947

        

3.1 配置cfg文件
        3.1.1 复制yolov3.cfg(...\darknet-master\cfg目录下)文件并重命名为yolo-obj.cfg(或者其他名字,只要各处对应即可),复制到darknet.exe相同目录下(或者其他目录,输入命令时对应即可)。

        3.1.2 修改batch=64,subdivisions=8。

        3.1.3 修改classes和filters,共三处。如果检测两类物体,则classes=2,

                    filters=(classess+5)*3=(2+5)*3=21。

        3.1.4 上述修改具体行数参考github即可。

3.2 配置obj.name文件和obj.data文件(命名也可以为其他,只要对应即可)
        新建obj.names文件和obj.data文件,放在目录...\darknet-master\build\darknet\x64\data下。

        obj.names内容(每行一个类的名字,名字随便写,随时可以改)

        

        obj.data内容(valid是为了训练完成后测试模型效果)

        

 

3.3 准备图片和对应的标签文件
        每张图片对应一个同名txt文件,txt文件存储的是类的坐标信息(详见github),可以在官网上下载专用的软件yolo_mark标记,放在目录...\darknet-master\build\darknet\x64\data\obj下。
        
       

         txt文件内容

        标记标签的软件界面:

        

        

3.4 准备存储图片路径的文件
      新建train.txt文件(名字要和obj.data中对应)放在目录...\darknet-master\build\darknet\x64\data下(命名和路径与obj.data中对应)存储的数据为训练的图片相对于darknet.exe的位置,每行一条数据。
                

3.5 准备预训练的模型
        在github下载darknet53.conv.74后放在目录...\darknet-master\build\darknet\x64下即可。

3.6 训练过程
       3.6.1  训练命令(需要首先进入darknet.exe同一目录):

   darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74

    默认显示avg loss的图像,添加-dont_show则不显示
   

 darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 -dont_show

       命令解释:

        darknet.exe detector train:表示训练(train改为test为测试)
        data/obj.data:data文件的路径
        yolo-obj.cfg:cfg文件的路径
        darknet53.conv.74:使用的预模型路径

        3.6.2 可能出现的错误情况:

        可能出现内存不足的情况,解决:
        修改cfg文件:
        修改subdivisions为16或32或64;
        如果依旧不足,修改三个[yolo](修改classes的那个地方)下的random,修改为0(含义 :关闭多尺度训练)

        3.6.3 训练界面

        

        3.6.4 训练历程与部分参数解释

        每迭代100次会存储一个模型,avg loss是一个错误率的指标,越低越好,刚开始会很大,下降也很快,最终降到0.***,每个类一般迭代2000次,所以实训项目需要4000次。使用GTX 950m,大约每100次迭代耗时70分钟。

        Region xx: cfg文件中yolo-layer的索引;
        Avg IOU:当前迭代中,预测的box与标注的box的平均交并比,越大越好,期望数值为1;
        Class: 标注物体的分类准确率,越大越好,期望数值为1;
        obj: 越大越好,期望数值为1;
        No obj: 越小越好;
        .5R: 以IOU=0.5为阈值时候的recall; recall = 检出的正样本/实际的正样本
        0.75R: 以IOU=0.75为阈值时候的recall;

        count:正样本数目。

        3.6.5 直观地查看训练结果(输出图片)

  darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights


        yolo-obj_8000.weights:查看的模型的路径。
        输入后会提示输入图片路径,输入即可。

        3.6.6 中断后在之前的基础上继续训练:

darknet.exe detector train data/obj.data yolo-obj.cfg yolo-obj_2000.weights

       yolo-obj_2000.weights:之前的模型路径。

        3.6.7 查看模型精确效果(输出数据)

        按照准备训练数据的方法准备测试数据(图片与对应标签,存储图片路径的文件);
        修改data文件的valid;
        使用如下命令测试:

darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_7000.weights

        backup\yolo-obj_7000.weights:测试的模型的路径(相对于darknet.exe)。
        界面:

        

        由于可能出现过拟合的情况,所以最好的模型不一定在后边,

        可以多测试几组,选择一个性能较好的模型。

        3.6.8 训练结果展示

        迭代100次、400次、800次效果

        迭代1200次、1600次、2300次效果

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Darknet是一个开源的深度学习框架,用于实现对象检测、图像分类、语义分割等计算机视觉任务。它使用C语言和CUDA技术编写,支持CPU和GPU加速,速度较快。下面是Darknet框架的详细介绍: 1. 架构 Darknet的架构包括三个部分:前端、间件和后端。前端负责输入数据的读取和预处理;间件实现了神经网络的各种层和相关的算法;后端负责输出结果的解码和后处理。 2. 特点 Darknet的特点有以下几个方面: (1)轻量级:Darknet的代码非常简洁,只有几千行,易于理解和修改。 (2)高效性:Darknet使用C语言编写,可以直接调用CPU和GPU的底层指令,运行速度非常快。 (3)易用性:Darknet提供了简单易用的命令行界面,用户可以通过命令行来控制模型的训练和预测。 (4)可扩展性:Darknet支持自定义层和算法,用户可以自由扩展框架的功能。 3. 模块 Darknet框架主要由以下几个模块组成: (1)Activation:激活函数模块,包括ReLU、LeakyReLU、Sigmoid等。 (2)Convolutional:卷积层模块,支持1D、2D、3D卷积,可以设置卷积核的大小、步长、填充等参数。 (3)Pooling:池化层模块,包括最大池化和平均池化。 (4)Connected:全连接层模块,将上一层的所有神经元连接到下一层的所有神经元。 (5)Detection:目标检测模块,使用YOLO算法实现了快速的对象检测。 (6)Activation:激活函数模块,包括ReLU、LeakyReLU、Sigmoid等。 (7)Loss:损失函数模块,包括交叉熵、均方误差等。 4. 应用 Darknet主要应用于计算机视觉领域,包括对象检测、图像分类、语义分割等任务。它可以使用CPU和GPU加速,速度较快,适合处理大规模的图像数据。此外,Darknet还支持多种深度学习框架的模型转换,包括Caffe、TensorFlow、PyTorch等,可以方便地与其他框架进行交互。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值