## YOLO 训练 原

KyJason

github yolo：https://github.com/pjreddie/darknet

yolo训练要有自己的一套方式，先说说label要怎么弄。

## 1 标签和数据的格式

``````类别    框的中心点X方向/图像宽    框的中心点Y方向/图像高    框宽/图像宽    框高/图像高
class_number    box2_x1_ratio    box2_y1_ratio    box2_width_ratio    box2_height_ratio
``````

``````# size :width height     box: xmin xmax ymin ymax
def convert(size, box):
dw = 1./size[0]
dh = 1./size[1]
x = (box[0] + box[1])/2.0
y = (box[2] + box[3])/2.0
w = box[1] - box[0]
h = box[3] - box[2]
x = x*dw
w = w*dw
y = y*dh
h = h*dh
return (x,y,w,h)

``````

## 2 修改yolo.c

``````char *train_images = "/data/voc/train.txt";
char *backup_directory = "/home/pjreddie/backup/";
``````

``````    draw_detections(im, l.side*l.side*l.n, thresh, boxes, probs, voc_names, alphabet, CLASSNUM);
``````

## 3　修改yolo_kernels.cu

yolo_kernels.cu文件中　找到这个函数

``````    draw_detections(det, l.side*l.side*l.n, demo_thresh, boxes, probs, voc_names, voc_labels, CLS_NUM);
``````

## 4　修改cfg

``````[connected]
output= 931
activation=linear

[detection]
classes=4
coords=4
rescore=1
side=7
num=3
softmax=0
sqrt=1
jitter=.2

``````

output 是需要重新计算的，如果不重新计算会报一个问题

``````Assertion `side*side*((1 + l.coords)*l.n + l.classes) == inputs' failed.
``````

• side=7
• l.coords = coords
• l.n = num
• l.classes = classes

`output = 7*7*((1+coords)*num+classes)`

``````[convolutional]
size=1
stride=1
filters=425
activation=linear

[region]
anchors = 0.738768,0.874946,  2.42204,2.65704,  4.30971,7.04493,  10.246,4.59428,  12.6868,11.8741
bias_match=1
classes=80
coords=4
num=5
softmax=1
jitter=.2
rescore=1

object_scale=5
noobject_scale=1
class_scale=1
coord_scale=1
``````

filter的计算公式为

``````    filters = num*(classes+coords+1)
``````

## 5 训练

``````./darknet yolo train cfg/yolov1/yolo2.cfg extraction.conv.weights
``````

### KyJason

1.官网教程的翻译，重点是微调和继续训练部分 http://www.jianshu.com/p/ebce76db119b 2.使用YOLO训练自己的数据样本经验总结，重点是训练输出参数的介绍以及如何跟踪查看代码 http://blog....

lilai619
2017/04/21
0
0
Yolo系列其二：Yolo_v2

manofmountain
2018/07/28
0
0
YOLO升级版：YOLOv2和YOLO9000解析

2017/01/31
0
0
YOLO论文翻译——中文版

Quincuntial
2017/11/29
0
0
【目标检测】yolo论文详解（You Only Look Once: Unified, Real-Time Object Detection）

2018/11/30
0
0

Commands: --install <link> <name> <path> <priority> [--slave <link> <name> <path>] ... 在系统中加入一组替换项. --remove <name> <path> 从 <名......

Pulsar-V
26分钟前
0
0
【转】go get命令使用socket代理

yiduwangkai
27分钟前
0
0
Windows同步对象Event和Linux的条件变量

shzwork
35分钟前
1
0

//第一种做法 public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList <Integer> li=new ArrayList<Integer>(); ArrayList <TreeN......

45分钟前
1
0
linux 服务管理 Crontba、Ntpdate、Logrotate、Supervisor

crond linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作，因此这个系统服务是默认启动的。 另外, 由于使用者自己也可以设置计划任务，所以，...

3
0