当前位置: 首页 > news >正文

用Yolov2模型训练VOC数据集的各文件理解

0.准备工作:

     1. VOC格式的数据集

     2. 使用darknet代码里的voc_label.py制作labels数据

     3. 修改网络定义文件.cfg

        这里要注意的是,数据的类别,更改类别时,在1,2,3里都需要做相应的改变

1. 修改./cfg/voc.data文件

//修改成自己的类别数目
classes= 20
//修改为你训练数据的.txt目录, 训练数据的路径
train  = /home/pjreddie/data/voc/train.txt
//修改为你验证数据的.txt目录,验证数据的路径
valid  = /home/pjreddie/data/voc/2007_test.txt
names = data/voc.names  // voc.names修给为自己类别名称
//修改为你的模型备份目录
backup = /home/pjreddie/backup/

2. 理解./cfg/yolo-voc.cfg网络定义文件

// cfg/yolo-voc.cfg  
[net] # yolo的网络架构要求第一个section必须为[net]或[netowrk],参见src/parse.c:586  
# sections->size为cfg中配置的[*]数量,该cfg的size为32  
batch=64  
subdivisions=8  
height=416            // 输入图片高
width=416             // 输入图片宽
channels=3            // 通道数
momentum=0.9          // 动量
decay=0.0005  
angle=0               // 旋转角度
saturation = 1.5      // 曝光度
exposure = 1.5        // 饱和度
hue=.1                // 色调
  
learning_rate=0.0001  // 学习率
max_batches = 45000  
policy=steps  
steps=100,25000,35000  
scales=10,.1,.1  
  
[convolutional]  
batch_normalize=1  
filters=32  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[maxpool]  
size=2  
stride=2  
  
[convolutional]  
batch_normalize=1  
filters=64  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[maxpool]  
size=2  
stride=2  
  
[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]  
batch_normalize=1  
filters=128  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[maxpool]  
size=2  
stride=2  
  
[convolutional]  
batch_normalize=1  
filters=256  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=128  
size=1  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=256  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[maxpool]  
size=2  
stride=2  
  
[convolutional]  
batch_normalize=1  
filters=512  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=256  
size=1  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=512  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=256  
size=1  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=512  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[maxpool]  
size=2  
stride=2  
  
[convolutional]  
batch_normalize=1  
filters=1024  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=512  
size=1  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=1024  
size=3  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=512  
size=1  
stride=1  
pad=1  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
filters=1024  
size=3  
stride=1  
pad=1  
activation=leaky  
  
  
#######  
  
[convolutional]  
batch_normalize=1  
size=3  
stride=1  
pad=1  
filters=1024  
activation=leaky  
  
[convolutional]  
batch_normalize=1  
size=3  
stride=1  
pad=1  
filters=1024  
activation=leaky  
  
[route]  
layers=-9  
  
[reorg]  
stride=2  
  
[route]  
layers=-1,-3  
  
[convolutional]  
batch_normalize=1  
size=3  
stride=1  
pad=1  
filters=1024  
activation=leaky  
  
[convolutional]  
size=1  
stride=1  
pad=1  
filters=125  // 注意改为自己的数目(计算方式:(classes+5)*5)
activation=linear  
  
[region]  
anchors = 1.08,1.19,  3.42,4.41,  6.63,11.38,  9.42,5.11,  16.62,10.52  
bias_match=1  
classes=20   // 注意修给为自己的类别数目
coords=4  
num=5  
softmax=1  
jitter=.2  
rescore=1  
  
object_scale=5  
noobject_scale=1  
class_scale=1  
coord_scale=1  
  
absolute=1  
thresh = .6  
random=0  

3.训练
        这里我选择的是22层的网络,batch_size=64,subdivisions=8,如果你的内存太小,运行出错的话,可以把batch_size改小一点或者subdivisions改大一点,然后运行以下指令即可开始训练:

./darknet detector train ./cfg/voc.data ./cfg/yolo-voc.cfg

log如下:

nohup: ignoring input
   2 layer     filters    size              input                output
   3     0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32
   4     1 max          2 x 2 / 2   416 x 416 x  32   ->   208 x 208 x  32
   5     2 conv     64  3 x 3 / 1   208 x 208 x  32   ->   208 x 208 x  64
   6     3 max          2 x 2 / 2   208 x 208 x  64   ->   104 x 104 x  64
   7     4 conv    128  3 x 3 / 1   104 x 104 x  64   ->   104 x 104 x 128
   8     5 conv     64  1 x 1 / 1   104 x 104 x 128   ->   104 x 104 x  64
   9     6 conv    128  3 x 3 / 1   104 x 104 x  64   ->   104 x 104 x 128
  10     7 max          2 x 2 / 2   104 x 104 x 128   ->    52 x  52 x 128
  11     8 conv    256  3 x 3 / 1    52 x  52 x 128   ->    52 x  52 x 256
  12     9 conv    128  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 128
  13    10 conv    256  3 x 3 / 1    52 x  52 x 128   ->    52 x  52 x 256
  14    11 max          2 x 2 / 2    52 x  52 x 256   ->    26 x  26 x 256
  15    12 conv    512  3 x 3 / 1    26 x  26 x 256   ->    26 x  26 x 512
  16    13 conv    256  1 x 1 / 1    26 x  26 x 512   ->    26 x  26 x 256
  17    14 conv    512  3 x 3 / 1    26 x  26 x 256   ->    26 x  26 x 512
  18    15 conv    256  1 x 1 / 1    26 x  26 x 512   ->    26 x  26 x 256
  19    16 conv    512  3 x 3 / 1    26 x  26 x 256   ->    26 x  26 x 512
  20    17 max          2 x 2 / 2    26 x  26 x 512   ->    13 x  13 x 512
  21    18 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024
  22    19 conv    512  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 512
  23    20 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024
  24    21 conv    512  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 512
  25    22 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024
  26    23 conv   1024  3 x 3 / 1    13 x  13 x1024   ->    13 x  13 x1024
  27    24 conv   1024  3 x 3 / 1    13 x  13 x1024   ->    13 x  13 x1024
  28    25 route  16
  29    26 reorg              / 2    26 x  26 x 512   ->    13 x  13 x2048
  30    27 route  26 24
  31    28 conv   1024  3 x 3 / 1    13 x  13 x3072   ->    13 x  13 x1024
  32    29 conv    125  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 125
  33    30 detection
  34 yolo-voc
  35 Learning Rate: 0.0001, Momentum: 0.9, Decay: 0.0005
  36 Loaded: 1.850000 seconds
  37 Region Avg IOU: 0.358097, Class: 0.065954, Obj: 0.474037, No Obj: 0.508373, Avg Recall: 0.200000,  count: 15
  38 Region Avg IOU: 0.360629, Class: 0.065775, Obj: 0.466963, No Obj: 0.508891, Avg Recall: 0.178571,  count: 28
  39 Region Avg IOU: 0.328480, Class: 0.048047, Obj: 0.471501, No Obj: 0.509045, Avg Recall: 0.217391,  count: 23
  40 Region Avg IOU: 0.387740, Class: 0.060535, Obj: 0.495033, No Obj: 0.509017, Avg Recall: 0.333333,  count: 12
  41 Region Avg IOU: 0.284584, Class: 0.046532, Obj: 0.471151, No Obj: 0.508602, Avg Recall: 0.090909,  count: 22
  42 Region Avg IOU: 0.335542, Class: 0.049446, Obj: 0.520727, No Obj: 0.508899, Avg Recall: 0.150000,  count: 20
  43 Region Avg IOU: 0.366046, Class: 0.055863, Obj: 0.502995, No Obj: 0.509692, Avg Recall: 0.250000,  count: 32
  44 Region Avg IOU: 0.411998, Class: 0.050235, Obj: 0.497955, No Obj: 0.506873, Avg Recall: 0.375000,  count: 16
  45 1: 18.557627, 18.557627 avg, 0.000100 rate, 15.430000 seconds, 64 images
  46 Loaded: 0.000000 seconds
  47 Region Avg IOU: 0.394109, Class: 0.048967, Obj: 0.449230, No Obj: 0.454679, Avg Recall: 0.333333,  count: 15
  48 Region Avg IOU: 0.430337, Class: 0.044501, Obj: 0.475584, No Obj: 0.454697, Avg Recall: 0.250000,  count: 16
  49 Region Avg IOU: 0.318591, Class: 0.069988, Obj: 0.490419, No Obj: 0.454365, Avg Recall: 0.133333,  count: 15
  50 Region Avg IOU: 0.335521, Class: 0.060138, Obj: 0.408140, No Obj: 0.454221, Avg Recall: 0.277778,  count: 18
  51 Region Avg IOU: 0.360168, Class: 0.055241, Obj: 0.456031, No Obj: 0.455356, Avg Recall: 0.307692,  count: 13
  52 Region Avg IOU: 0.343406, Class: 0.056148, Obj: 0.439433, No Obj: 0.454594, Avg Recall: 0.187500,  count: 16
  53 Region Avg IOU: 0.349903, Class: 0.047826, Obj: 0.392414, No Obj: 0.454783, Avg Recall: 0.235294,  count: 17
  54 Region Avg IOU: 0.319748, Class: 0.059287, Obj: 0.456736, No Obj: 0.453497, Avg Recall: 0.217391,  count: 23
  55 2: 15.246732, 18.226538 avg, 0.000100 rate, 9.710000 seconds, 128 images
  56 Loaded: 0.000000 seconds

4.测试

/darknet detector test cfg/voc.data cfg/yolo-voc.cfg backup/yolo-voc_1000.weights data/images.jpg
yolo-voc_10000.weights为权重文件


相关文章:

  • python 中easydict的简单使用
  • Numpy np.array 相关常用操作学习笔记
  • Matconvnet关于simplenn 转dagnn的一些小的总结
  • 海思AI芯片(Hi3519A/3559A)方案学习(一)资料以及术语介绍
  • 海思AI芯片(Hi3519A/3559A)方案学习(二)RuyiStudio安装
  • 海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
  • 海思AI芯片(Hi3519A/3559A)方案学习(四)如何在3519A板子上运行sample code
  • 海思AI芯片(Hi3519A/3559A)方案学习(五)SDK平台文档梳理
  • Atlas 200 DK 系列 -- 快速搭建开发环境
  • Atlas 200 DK 系列--初级篇--MindStudio常见操作
  • Linux/Ubuntu下解压命令
  • ubuntu终端命令的几个常用重要命令
  • 海思AI芯片(35xx):window仿真代码需修改部分
  • 在Ubuntu 16.04 安装python3.5 环境并设置为默认
  • Yolov1--v3目标检测解读
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 30天自制操作系统-2
  • Angular Elements 及其运作原理
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java|序列化异常StreamCorruptedException的解决方法
  • Spark学习笔记之相关记录
  • Vim 折腾记
  • Xmanager 远程桌面 CentOS 7
  • 技术胖1-4季视频复习— (看视频笔记)
  • 那些被忽略的 JavaScript 数组方法细节
  • 设计模式走一遍---观察者模式
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 温故知新之javascript面向对象
  • 学习JavaScript数据结构与算法 — 树
  • 学习Vue.js的五个小例子
  • 《天龙八部3D》Unity技术方案揭秘
  • #Linux(权限管理)
  • (10)ATF MMU转换表
  • (2.2w字)前端单元测试之Jest详解篇
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (LeetCode C++)盛最多水的容器
  • (四)Controller接口控制器详解(三)
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET中使用Redis (二)
  • @Autowired多个相同类型bean装配问题
  • @Autowired和@Resource的区别
  • @Transactional 详解
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [Angular] 笔记 20:NgContent
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率
  • [hdu 4552] 怪盗基德的挑战书
  • [IE编程] 如何在IE8 下调试BHO控件/工具栏(调试Tab进程)
  • [LaTex]arXiv投稿攻略——jpg/png转pdf
  • [LeetCode][LCR178]训练计划 VI——使用位运算寻找数组中不同的数字
  • [Linux打怪升级之路]-vim编辑器(看就能马上操作噢)
  • [MZ test.16]P1 评测
  • [NOI 2016]优秀的拆分