Darknet训练自定义数据集----个人记录

1.标记数据集

    通过labelimg标记数据

2.在script下创建目录结构

mkdir -p scripts/VOCdevkit/VOC2007
cd scripts/VOCdevkit/VOC2007
mkdir ImageSets
cd ImageSets
mkdir Layout Main Segmentation

----------------------------
scripts
-----------------------------
    VOCdevkit
        VOC20007
            ImageSets
                Layout
                Main
                Segmentation
    ---------------------------

 

3.

  在VOC2007内创建Image和xml保存图片和标记
  在VOC2007内创建Annotations和JPEGImages保存标记和图片
  在VPC2007内创建traindata.py和trans.py

  修改traindata.py中验证集数量val_num,推荐为总数据集的30%,修改trans.py中的sets和classes

 

4.先后运行traindata.py和trans.py

 

5.

  将生成的trainImageID.txt和validateImageID.txt拷贝到ImageSets的Main目录下,
  并分别重命名为train.txt和val.txt,
  删除执行traindata.py和trans.py生成的所有文件和文件夹以及xml和Image文件夹

 

6.回到scripts文件夹

  修改voc_label.py,修改sets和classes的值,并将最后的两行
 

os.system("cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt > train.txt")
os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt > train.all.txt")


  改成
 

os.system("cat 2007_train.txt 2007_val.txt > train.txt")
# os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt > train.all.txt")


  执行
  python3 voc_label.py

 

7.修改三处配置文件


  A. 修改data/voc.names

 

  B.修改cfg/yolov3-tiny.cfg

  [net]  
  # Testing
  # batch=1
  # subdivisions=1
  # Training
  batch=64
  subdivisions=2
  ######################
  batch=64
  subdivisions=2
  width=52
  height=52
  #根据显存调节这几个
#################
  #每一个yolo层和其前面的卷积曾都要修改
  [convolutional]
  filters=18    # 改成3*(classes + 5),我这是分类一类只
  [yolo]
  classes=1
  random=0 # 显存不够改成0

 

  C.修改cfg/voc.data


 

  classes= 1          # 实际需要识别的类
  train  = /home/ubuntu/darknet/scripts/2007_train.txt      # 指向刚刚生成的文件2007_train.txt
  valid  = /home/ubuntu/darknet/scripts/2007_val.txt        # 指向刚刚生成的文件2007_val.txt
  names = data/voc.names
  backup = backup

 

  D.修改examples/!!!!!这一部分修改完要再进行编译

  否则显示的是coco.name的标签
  detector.c部分覆盖
 

void validate_detector_flip(char *datacfg, char *cfgfile, char *weightfile, char *outfile)
{
    int j;
    list *options = read_data_cfg(datacfg);
    char *valid_images = option_find_str(options, "valid", "data/train.list");
//    char *name_list = option_find_str(options, "names", "data/names.list");
    char *name_list = option_find_str(options, "names", "data/voc.names");
    char *prefix = option_find_str(options, "results", "results");
    char **names = get_labels(name_list);
    char *mapf = option_find_str(options, "map", 0);
    int *map = 0;
    if (mapf) map = read_map(mapf);

  darknet.c部分覆盖
 

        float thresh = find_float_arg(argc, argv, "-thresh", .5);
        char *filename = (argc > 4) ? argv[4]: 0;
        char *outfile = find_char_arg(argc, argv, "-out", 0);
        int fullscreen = find_arg(argc, argv, "-fullscreen");
//        test_detector("cfg/coco.data", argv[2], argv[3], filename, thresh, .5, outfile, fullscreen);
        test_detector("cfg/voc.data", argv[2], argv[3], filename, thresh, .5, outfile, fullscreen);
    } else if (0 == strcmp(argv[1], "cifar")){
        run_cifar(argc, argv);

 

  8.训练

  ./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值