单GPU训练
darknet detector train *.data *.cfg *.weights -i 0
多GPU训练
darknet detector train *.data *.cfg *weights -gpus 0,1,2,3
对象位置转化代码
void translate(int width,int height,int x_min,int y_min,int x_max,int y_max)
{
float w_scale = 1.0f / width;
float h_scale = 1.0f / height;
float x_center = (x_min + x_max) / 2.0f - 1.0f;
float y_center = (y_min + y_max) / 2.0f - 1.0f;
float width_scale = x_max - x_min;
float height_scale = y_max - y_min;
x_center *= w_scale;
y_center *= h_scale;
width_scale *= w_scale;
height_scale *= h_scale;
}
*.data文件
- classes = 类别数量
- train = 训练集txt文件路径
- valid = 验证集txt文件路径
- names = 保存类别名称的txt文件路径
- backup = 权重文件保存路径
*.names文件
- 每行一个类别名称
图片名称.txt
- 要和图片放在同一目录下
- 格式为 -> 类别索引 归一化中心点x 归一化中心点y 归一化宽度 归一化高度
- 多少个对象就有多少行
*.cfg文件
- 测试的时候设置 batch = 1 subdivisions = 1
- 训练的时候设置 batch = 64 subdivisions = 32,subdivisions越小需要显存越大
- momentum动量和decay权重衰减是学习率相关
- saturation饱和度 exposure曝光度 hue色调是训练图片相关
- max_batches次迭代前学习率不使用策略
- random 多尺度训练
- policy 学习率策略
- steps 学习率变动步长
- 注意修改每一个yolo层的类别数量为自己模型的类别数量
- 注意修改每一个yolo层的上一个conv层的 filters = 3 * (classes + 5)