darknet yolov3 训练自定义数据集

版权声明:https://blog.csdn.net/z0n1l2 https://blog.csdn.net/z0n1l2/article/details/83933765

VOC数据集上的训练步骤

修改类别

  1. yolo层的classes修改成新的类别书
  2. yolo层前一个convolution层的filters修改成(classes+4+1)*3
  3. 修改data文件中的类别数目

训练

  ./darknet detector train cfg/custom.data cfg/yolov3.cfg pretrained/darknet53.conv.74 2>&1 train.log

burn_in的效果比较好

测试

单幅图测试

   ./darknet detector test examples/traffic/image.data examples/traffic/yolov3.cfg examples/traffic/yolov3_900.weights data/person_walk.jpg             
   参数说明
   image.data:  训练时指定类别数目,训练/测试图像路径
   yolov3.cfg: 网络定义文件
   yolov3_900.weights: 训练出的网络权重
   person_walk.jpg: 测试图片                                                                        

批量统计recalling

默认darknet的recall模式只能测试coco_val_5k,要测试其他数据集,只需要修改darknet/examples/detector.c中的validate_detector_recall()函数,传入一个文件名(格式如下文test.txt所述), 具体修改如
修改前

list plist = get_paths("data/coco_val_5k.list");

修改后

    list *plist = NULL;
    if (pathfile == NULL)
	plist = get_paths("data/coco_val_5k.list");
   else
	plist = get_paths(pathfile);

命令行(recall2会传入test.txt,否则默认调用coco_val_5k)

./darknet detector recall2 examples/traffic/image.data examples/traffic/yolov3.cfg examples/traffic/yolov3_900.weights examples/traffic/test.txt

   参数说明
   image.data:  训练时指定类别数目,训练/测试图像路径
   yolov3.cfg: 网络定义文件
   yolov3_900.weights: 训练出的网络权重
  test.txt: 一行表示一个测试图片的绝对路径(VOC格式的图片集,按照darknet训练数据格式,新建一个labels目录,存储标签)

猜你喜欢

转载自blog.csdn.net/z0n1l2/article/details/83933765