使用Darknet网络框架

【训练分类weight文件】
》命令:
./darknet classifier train cfg/mydata.data cfg/mydata.cfg
》若中途终端,基于已有的训练模型接着训练执行如下命令:
./darknet classifier train cfg/mydata.data cfg/mydata.cfg /home/page/Pictures/ImageSet/backup/mydata_44.weights
》评估训练weight文件的正确率:
./darknet classifier valid cfg/mydata.data cfg/mydata.cfg /home/page/Pictures/ImageSet/backup/mydata_44.weights

》制作train.list,val.list,lables.list
train文件夹中的每张图片的名字,需要包含label中的标签,比如有张图片属于类别”dog”,则这张图片名字可以命名为“dog_XXXXX”,其中XXXXX 为任意字符,但不能包含标签中其他类别的字符,否则程序就会当作该图片属于多个类。
train.list文件,这个文件里列出了train文件夹里所有的图片,每一行为一张图片的绝对路径。
val.list文件,这个文件里列出了val文件夹里所有的图片,每一行为一张图片的绝对路径。
注意:绝对路径里不能包含类别名字。
运行命令:python creat_list.py

import os
from os import listdir, getcwd
from os.path import join
if __name__ == '__main__':
    source_folder='/home/page/Pictures/ImageSet/set/'#地址是所有图片的保存地点!!!!
    dest='/home/page/Pictures/ImageSet/train.list' #保存train.txt的地址!!!!
    dest2='/home/page/Pictures/ImageSet/val.list'  #保存val.txt的地址!!!!
    file_list=os.listdir(source_folder)       #赋值图片所在文件夹的文件列表
    train_file=open(dest,'a')                 #打开文件
    val_file=open(dest2,'a')                  #打开文件
    file_num = 0
    for file_obj in file_list:                #访问文件列表中的每一个文件
        file_path=os.path.join(source_folder,file_obj) 
        #file_path保存每一个文件的完整路径
        file_name,file_extend=os.path.splitext(file_obj)
        #file_name 保存文件的名字,file_extend保存文件扩展名
        #file_num=int(file_name) 
        #把每一个文件命str转换为 数字 int型 每一文件名字都是由四位数字组成的  如 0201 代表 201     高位补零  
        file_num = file_num + 1
        if(file_num<9001):                     #前9000个文件用于训练!!!!!!!!
            #print file_num
            train_file.write('/home/page/Pictures/ImageSet/set/'+file_name+'.jpg'+'\n')  #用于训练前9000个的图片路径保存在train.list里面,结尾加回车换行
        elif(file_num<10001) :
            val_file.write('/home/page/Pictures/ImageSet/set/'+file_name+'.jpg'+'\n')    #其余的文件保存在val.txt里面
        elif(file_num<19001) :
            train_file.write('/home/page/Pictures/ImageSet/set/'+file_name+'.jpg'+'\n')
        else :
            val_file.write('/home/page/Pictures/ImageSet/set/'+file_name+'.jpg'+'\n')
    train_file.close()#关闭文件
    val_file.close()

》进入darknet/cfg文件夹,修改imagenet1k.data文件,并保存为mydata.data:

classes=2                              //类别数
train  = data/train.list                //训练集列表路径
valid  = data/valid
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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等,可以方便地与其他框架进行交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值