当前位置:   article > 正文

YOLOv3训练自定义数据集之行人检测_行人检测数据集

行人检测数据集

目录

一、自定义数据集制作

        1. 安装数据打标签软件labelme

        2.将打好标签的json数据转换为yolo能识别的格式 

 二、基于yolov3训练自定义数据集

        1.数据放到代码中相应位置 

        2. 模型配置文件生产

         3.编译环境配置

        3. 利用训练好的模型预测 


 

一、自定义数据集制作

        1. 安装数据打标签软件labelme

           在window 命令行执行  pip install labelme

          安装成功后启动,执行labelme

使用矩形框对数据集图像进行打标注 

 

   打完标注保存后得到json文件 

 

        2.将打好标签的json数据转换为yolo能识别的格式 

           在代码中写好相应的路径,执行下面的代码即可。 

  1. import json
  2. import os
  3. #自己打标签有多少类别就写在这里
  4. name2id = {'person':0,'head':1}
  5. def convert(img_size, box):
  6. dw = 1./(img_size[0])
  7. dh = 1./(img_size[1])
  8. x = (box[0] + box[2])/2.0 - 1
  9. y = (box[1] + box[3])/2.0 - 1
  10. w = box[2] - box[0]
  11. h = box[3] - box[1]
  12. x = x*dw
  13. w = w*dw
  14. y = y*dh
  15. h = h*dh
  16. return (x,y,w,h)
  17. #D:\\BaiduNetdiskDownload\\PyTorch-YOLOv3\\data\\custom
  18. def decode_json(json_floder_path,json_name):
  19. #转换好的标签放哪里
  20. txt_name = 'D:/BaiduNetdiskDownload/PyTorch-YOLOv3/data/custom/labels/' + json_name[0:-5] + '.txt'
  21. txt_file = open(txt_name, 'w')
  22. json_path = os.path.join(json_floder_path, json_name)
  23. data = json.load(open(json_path, 'r', encoding='gb2312'))
  24. img_w = data['imageWidth']
  25. img_h = data['imageHeight']
  26. for i in data['shapes']:
  27. label_name = i['label']
  28. if (i['shape_type'] == 'rectangle'):
  29. x1 = int(i['points'][0][0])
  30. y1 = int(i['points'][0][1])
  31. x2 = int(i['points'][1][0])
  32. y2 = int(i['points'][1][1])
  33. bb = (x1,y1,x2,y2)
  34. bbox = convert((img_w,img_h),bb)
  35. txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n')
  36. #D:\BaiduNetdiskDownload\PyTorch-YOLOv3\data\custom\label-test
  37. if __name__ == "__main__":
  38. #labelme生成标签后的数据路径,json文件路径
  39. json_floder_path = 'D:/BaiduNetdiskDownload/PyTorch-YOLOv3/data/custom/label-test'
  40. json_names = os.listdir(json_floder_path)
  41. for json_name in json_names:
  42. decode_json(json_floder_path,json_name)

    使用上面的代码转换格式后得到数据图像的label 

 

 二、基于yolov3训练自定义数据集

      yolov3代码在上一篇 yolov3的安装编译中有。

        1.数据放到代码中相应位置 

          自定义数据在custom目录下 ,需要到的文件如下图标注

             用于训练的图像路径

         图像对应的label, label名字要和图像名字一样

 

       自定义打标签的所有类别名字写在这个文件,留一个空行,不能留多 

     train.txt 写的是训练数据的路径,valid.txt写的是验证数据的路径,两个文件也是只留一个空行,留多了会发导致编译出错 

          

        2. 模型配置文件生产

             原来的代码训练coco数据是80分类,自定义数据集是2分类,linux下执行

        ./create_custom_model.sh  2    即可生成yolov3-custom.cfg,用于自定义数据集训练的模型配置文件

      custom.data文件修改

         3.编译环境配置

           

 参数配置如下:分别表示

     训练的epoch次数

     模型配置文件

     数据集配置

     预训练权重模型

  1. --epochs
  2. 500
  3. --model_def
  4. config/yolov3-custom.cfg
  5. --data_config
  6. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/config/custom.data
  7. --pretrained_weights
  8. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/weights/darknet53.conv.74

    训练过程 

 训练结束后保存的模型,用来预测。

        3. 利用训练好的模型预测 

           预测环境配置也在上一篇yolov3的安装编译中说明

 参数配置

  1. --image_folder
  2. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/data/samples
  3. --weights_path
  4. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/checkpoints/yolov3_ckpt_400.pth
  5. --model_def
  6. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/config/yolov3-custom.cfg
  7. --class_path
  8. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/data/custom/classes.names
  9. --checkpoint_model
  10. D:/BaiduNetdiskDownload/PyTorch-YOLOv3/checkpoints/yolov3_ckpt_400.pth

   待预测的图像存放路径 

 预测后保存路径

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/73167
推荐阅读
相关标签
  

闽ICP备14008679号