YOLO(Darknet官方)训练分类器

目录

  • 1. 分类数据准备
  • 2. Darknet配置
  • 3. Darknet命令使用
  • 4. cifar-10 使用示例

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

原文地址:https://www.cnblogs.com/pprp/p/10342335.html

时间: 2024-10-14 01:44:30

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

OpecnCV训练分类器详细整理

本文主要是对下面网址博客中内容的实例操作: http://blog.csdn.net/byxdaz/article/details/4907211 在上述博客中,详细的讲述了OpenCV训练分类器的做法.虽然他的步骤很详细,但是不能被人很快的利用到实践中来.所以我归纳这些内容,能够让人很快的动手操作起来,这样对于一个新手来说一个多小时就可以很快的掌握做分类器的方法了. 一:分别准备好正负样本 将正样本剪裁统一大小,放到一个的文件夹里面. 将一些和待检测图像无关的照片放入一个文件夹里面.--负样本

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

如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1) 准备正负样本集,分别放到两个目录里. 我使用的是麻省理工的那个人脸库.大家能够网上搜一下. (2)把正样本集生成正样本描写叙述文件(*.vec),把负样本集生成负样本集合文件.详细怎么操作请參考我博客中的另外两篇文章,各自是http://blog.csdn.net/ding977921830/a

opencv训练分类器样本处理

分类器的训练以分为以下三部进行: 1. 样本的创建 2. 训练分类器 3. 利用训练好的分类器进行目标检测. 对检测物体要确定其属性:是否为绝对刚性的物体,也就是检测的目标是一个固定物体,没有变化(如特定公司的商标),这样的物体只要提供一份样本就可以进行训练. 但绝大数时候我们想进行训练的目标是非绝对刚性的物体,如对人的检测,包括人脸识别.手势识别. 样本:分为正样本---------负样本 正样本处理步骤: 所谓所谓正样本就是只包含检测目标的图片(最好背景一致),对于这我个人认为最好是检测目标

openCV训练分类器是一些错误及解决办法

昨天看了一天的opencv训练分类器的资料,想自己试试.经过昨天一天的折腾终于成功的训练出了自己的分类器,虽然效果不好,但是是个好的开端.在整个过程中我遇到了很多问题,在这里和大家分享一下,希望对你有帮助. 1.正样本的创建过程基本上按照以下步骤: 1) 制作一个正样本描述文件,用于描述正样本文件名(包括绝对路径或相对路径),正样本数目以及各正样本在图片中的位置和大小.典型的正样本描述文件如下: face_100/face00001.bmp 1 0 0 20 20 face_100/face00

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

训练分类器 目前为止,你已经知道如何定义神经网络.计算损失和更新网络的权重.现在你可能在想,那数据呢? What about data? 通常,当你需要处理图像.文本.音频或者视频数据时,你可以使用标准Python包来将数据导入到numpy 数组中.然后再将数组转换成torch.Tensor. 对于图像,可用的包有:Pillow.OpenCV 对于音频,可用的包有:scipy和librosa 对于文本,无论是基于原始的Python或Cython的加载,或是NLTK和SpaCy都是可以的. 对于视

Yolo系列学习1-Yolov3训练福彩快三平台出租自己的数据

目的:福彩快三平台出租haozbbs.comQ1446595067 实现利用yolov3训练自己的数据集(voc格式) 方法: 1)构建VOC数据集 将你手中的数据集的标注txt修改成voc格式的txt,voc格式如下: 000002.jpg car 44 28 132 121 000003.jpg car 54 19 243 178 000004.jpg car 168 6 298 164 其中第一列为图片名,第二列为目标类别,最后是目标的包围框坐标(左上角和右下角坐标). 批量修改文件名py

SVM+HOG特征训练分类器

#1,概念 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类.以及回归分析. SVM的主要思想可以概括为两点:⑴它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而 使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是

使用opencv训练分类器时,traincascade训练报错:Train dataset for temp stage can not be filled.解决方法

opencv分类器训练中,出错一般都是路径出错,例如, 1.opencv_traincascade.exe路径 2.负样本路径文件,neg.dat中的样本前路径是否正确 3.移植到别的电脑并修改完路径后,最好重新生成正样本描述文件,pos.vec 4.同时修改cmd命令中的相关路径 知识付费时代,觉得对您有帮助的,别忘了打赏,附微信收款码 原文地址:https://www.cnblogs.com/runningsoybean/p/10420224.html

[深度学习] Pytorch学习(二)—— torch.nn 实践:训练分类器(含多GPU训练CPU加载预测的使用方法)

Learn From: Pytroch 官方Tutorials Pytorch 官方文档 环境:python3.6 CUDA10 pytorch1.3 vscode+jupyter扩展 #%% #%% # 1.Loading and normalizing CIFAR10 import torch import torchvision import torchvision.transforms as transforms batch_size = 16 transform = transform