1. 分类数据准备

需要的文件列表:

1. train.list : 训练的图片的绝对路径
2. test.list : 用于测试的图片的绝对路径
3. labels.txt : 所有的类别,一行一个类
4. voc.data : darknet配置文件,记录相关位置信息
5. cifar.cfg : 网络配置文件

按照以下目录结构进行构造:

VOCdevkit
VOC2017
JPEGImages
train
test

其中训练和测试的比例设置:

  1. 如果数据集比较小(10,000左右),那么设置的比例为:训练:测试 = 80% : 20%
  2. 如果数据集比较大(100,000左右),那么设置的比例为:训练:测试 = 99% :1%

然后转到JPEGImages目录下进行以下操作:

find `pwd`/train -name \*.jpg > train.list
find `pwd`/test -name \*.jpg > test.list

构造labels.txt文件内容

airplane
automobile
bird
cat
deer
dog
frog
horse
ship
truck

构造voc.data文件中内容:

classes=10 #设置的类别个数
train = data/cifar/train.list #上边构造的训练列表
valid = data/cifar/test.list # 上边构造的测试列表
labels = data/cifar/labels.txt # 记录类别
backup = backup/ #训练的网络文件的位置
top=2 # 计算top-n的准确率

网络配置文件的选择:

网络配置文件以及预训练模型

以AlexNet为例:

[net]
# Training
# batch=128
# subdivisions=1
# Testing
batch=1
subdivisions=1
height=227
width=227
channels=3
momentum=0.9
decay=0.0005
max_crop=256 learning_rate=0.01
policy=poly
power=4
max_batches=800000 angle=7
hue = .1
saturation=.75
exposure=.75
aspect=.75 [convolutional]
filters=96
size=11
stride=4
pad=0
activation=relu [maxpool]
size=3
stride=2
padding=0 [convolutional]
filters=256
size=5
stride=1
pad=1
activation=relu [maxpool]
size=3
stride=2
padding=0 [convolutional]
filters=384
size=3
stride=1
pad=1
activation=relu [convolutional]
filters=384
size=3
stride=1
pad=1
activation=relu [convolutional]
filters=256
size=3
stride=1
pad=1
activation=relu [maxpool]
size=3
stride=2
padding=0 [connected]
output=4096
activation=relu [dropout]
probability=.5 [connected]
output=4096
activation=relu [dropout]
probability=.5 [connected]
output=1000
activation=linear [softmax]
groups=1

2. Darknet配置

  1. 下载darknet
git clone https://github.com/pjreddie/darknet.git
cd darknet
make -j4

如果有GPU并且安装了cuda8.0和cudnn6.0,请在Makefile中进行修改,将对应的CUDA=0改为CUDA=1.

  1. 将在第一步构造的文件放到对应位置
darknet
cfg -- AlexNet.cfg
data -- voc.data, labels.txt, train.list, test.list

其中voc.data中的内容直接指到对应的文件上。

3. Darknet命令使用

  1. train命令

    ./darknet classifier train data/voc.data cfg/AlexNet.cfg

  2. valid命令

    ./darknet classifier valid data/voc.data cfg/AlexNet.cfg backup AlexNet.backup

  3. predict命令

    ./darknet classifier predict data/voc.data cfg/AlexNet.cfg backup AlexNet.backup ./cat.png

  4. 终端训练后重新训练

    ./darknet classifier train data/voc.data cfg/AlexNet.cfg backup/AlexNet.backup

  5. 设置训练使用的GPU

    -gpus 0,1

4. cifar-10 使用示例

  1. 数据获取

    cd data
    wget https://pjreddie.com/media/files/cifar.tgz
    tar xzf cifar.tgz cd cifar
    find `pwd`/train -name \*.png > train.list
    find `pwd`/test -name \*.png > test.list
    cd ../..
  2. 选择config文件

    classes=10
    train = data/cifar/train.list
    valid = data/cifar/test.list
    labels = data/cifar/labels.txt
    backup = backup/
    top=2
  3. 创建网络配置文件

    cifar_small.cfg(官方提供)

    [net]
    batch=128
    subdivisions=1
    height=28
    width=28
    channels=3
    max_crop=32
    min_crop=32 hue=.1
    saturation=.75
    exposure=.75 learning_rate=0.1
    policy=poly
    power=4
    max_batches = 5000
    momentum=0.9
    decay=0.0005 [convolutional]
    batch_normalize=1
    filters=32
    size=3
    stride=1
    pad=1
    activation=leaky [maxpool]
    size=2
    stride=2 [convolutional]
    batch_normalize=1
    filters=16
    size=1
    stride=1
    pad=1
    activation=leaky [convolutional]
    batch_normalize=1
    filters=64
    size=3
    stride=1
    pad=1
    activation=leaky [maxpool]
    size=2
    stride=2 [convolutional]
    batch_normalize=1
    filters=32
    size=1
    stride=1
    pad=1
    activation=leaky [convolutional]
    batch_normalize=1
    filters=128
    size=3
    stride=1
    pad=1
    activation=leaky [convolutional]
    batch_normalize=1
    filters=64
    size=1
    stride=1
    pad=1
    activation=leaky [convolutional]
    filters=10
    size=1
    stride=1
    pad=1
    activation=leaky [avgpool] [softmax]
  4. 训练

    训练:./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg

    valid: ./darknet classifier valid cfg/cifar.data cfg/cifar_small.cfg backup/cifar_small.backup

YOLO(Darknet官方)训练分类器的更多相关文章

  1. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

  2. opencv 手写选择题阅卷 (三)训练分类器

    opencv 手写选择题阅卷 (三)训练分类器 1,分类器选择:SVM 本来一开始用的KNN分类器,但这个分类器目前没有实现保存训练数据的功能,所以选择了SVN分类器; 2,样本图像的预处理和特征提取 ...

  3. OpenCV训练分类器制作xml文档

    OpenCV训练分类器制作xml文档 (2011-08-25 15:50:06) 转载▼ 标签: 杂谈 分类: 学习 我的问题:有了opencv自带的那些xml人脸检测文档,我们就可以用cvLoad( ...

  4. OpecnCV训练分类器详细整理

    本文主要是对下面网址博客中内容的实例操作: http://blog.csdn.net/byxdaz/article/details/4907211 在上述博客中,详细的讲述了OpenCV训练分类器的做 ...

  5. 利用opencv源代码和vs编程序训练分类器haartraining.cpp

    如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1 ...

  6. [PyTorch入门之60分钟入门闪击战]之训练分类器

    训练分类器 目前为止,你已经知道如何定义神经网络.计算损失和更新网络的权重.现在你可能在想,那数据呢? What about data? 通常,当你需要处理图像.文本.音频或者视频数据时,你可以使用标 ...

  7. 训练分类器 - 基于 PyTorch

    训练分类器 目前为止,我们已经掌握了如何去定义神经网络.计算损失和更新网络中的权重. 关于数据 通常来讲,当你开始处理图像.文字.音频和视频数据,你可以使用 Python 的标准库加载数据进入 Num ...

  8. 【计算机视觉】【神经网络与深度学习】YOLO v2 detection训练自己的数据2

    1. 前言 关于用yolo训练自己VOC格式数据的博文真的不少,但是当我按照他们的方法一步一步走下去的时候发现出了其他作者没有提及的问题.这里就我自己的经验讲讲如何训练自己的数据集. 2.数据集 这里 ...

  9. SVM+HOG特征训练分类器

    #1,概念 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类.以及回归分析. SVM的主要思想可以概括为两点:⑴它是针 ...

随机推荐

  1. 如何设置dedecms自定义表单必填项?

    用dedecms自定义表单可以制作一个简单的预约系统,有些相关信息需要设置为必填项,比如联系方式,没有留下真实的电话或其他信息,以后要怎么联系到你的客户.那我们要如何设置织梦cms自定义表单必填项呢? ...

  2. linux基础(2)-基础命令和基础特性

    基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...

  3. PHP生成zip压缩包

    /* * $res = new MakeZip($dir,$zipName); *@ $dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ $ ...

  4. 【笔记】DataTable或IList使用GroupBy方法的lamda表达式

    DataTable GroupBy的用法 var result = dt.AsEnumerable(). GroupBy(g => new { StaffID = g.Field<stri ...

  5. Codeforces Round #246 (Div. 2) D E

    这题说的是给了一个字符串当前缀和后缀相同的时候就计算此时的 整个串种拥有这样的子串友多少个,没想到用KMP解 用0开头的那种类型的 KMP 今天刚好也学了一下,因为KMP的作用是找出最长前缀 KMP ...

  6. Python: re.IGNORECASE 标志参数字符串忽略大小写的搜索替换

    为了在文本操作时忽略大小写,需要在使用re 模块的时候给这些操作提供re.IGNORECASE 标志参数.比如 >>> text = 'UPPER PYTHON, lower pyt ...

  7. 多线程---ReentrantLock

    package com.test; import java.util.Collection; import java.util.concurrent.locks.Lock; import java.u ...

  8. mysql中join后on、where的区别

    SELECT * FROM A; SELECT * FROM B; 以上是两张表的机构 SELECT * FROM A LEFT JOIN B ON A.id=b.a_id ; ; ; 两个语句查询出 ...

  9. 我是怎么样和Linux结缘并通过红帽RHCE认证的

    我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#.C++之类的?大约在大 ...

  10. CentOS 7 安装OpenCV

    CentOS 7 安装OpenCV步骤如下: 1.在CentOS 7命令行中直接在线安装: yum  install  numpy  opencv* 2.安装完成后进行全盘搜索:find  /  -n ...