当前位置:   article > 正文

从零开始使用YOLO和Paddle——Paddle模型训练_paddlepaddle训练yolo模型

paddlepaddle训练yolo模型

目录

一、PaddleDetection库克隆安装与修改

二、Paddle模型训练数据构建

三、Paddle模型训练

        1.参数配置

        2.命令行指令训练

        3.模型参数保存

        4.模型的使用——预测


一、PaddleDetection库克隆安装与修改

        克隆使用 paddledetection 源码库前需安装好相应包环境,具体可以参考之前博文中关于“Paddle模型所需包安装”部分https://blog.csdn.net/qq_58718853/article/details/137856367

        访问以下地址将源码包下载并解压。

        Github地址:https://github.com/PaddlePaddle/PaddleDetection.git

        Gitee地址:https://gitee.com/paddlepaddle/PaddleDetection        

        下载好的源码库有几处源码需要修改添加,具体参考之前博文“paddle模型部署”部分的代码。https://blog.csdn.net/qq_58718853/article/details/137856367

二、Paddle模型训练数据构建

        Paddle支持VOC和COCO数据集格式的训练数据集,具体转换方式及代码参考博文:《从零开始使用YOLO和Paddle——目标检测模型数据预处理:从json到txt、voc和coco数据格式》https://blog.csdn.net/qq_58718853/article/details/137225306

        下面给出生成COCO数据集的代码,运行结果是生成 annotations.json 文件到指定的文件夹——包含框信息、文件名信息、类别信息。

  1. import json
  2. import os
  3. import cv2
  4. # coco保存地址
  5. savefiles = 'cocofile'
  6. # jpg文件保存地址
  7. jpgfiles = 'jpgfile'
  8. # json文件保存地址
  9. jsonfiles = 'jsonfile'
  10. ## coco数据集构建(.json)
  11. # 根据数据集生产相应annotation文件.json格式
  12. def create_anno(jpgfiles, jsonfiles, savefiles):
  13. jpgfile = os.path.join(jpgfiles)
  14. images = []
  15. annotation = []
  16. j = 0 # 框id计数
  17. for i, jpg in enumerate(os.listdir(jpgfile)):
  18. basename = jpg.split('.')[0]
  19. # 获取图片信息:图片名;高宽;id
  20. jpgdir = os.path.join(jpgfile, jpg)
  21. image = cv2.imread(jpgdir)
  22. h, w, _ = image.shape # 图片大小
  23. jpg_dict = {"file_name": str(jpg),
  24. "height": h,
  25. "width": w,
  26. "id": i}
  27. images.append(jpg_dict)
  28. # 获取边缘框信息:area; bbox;类别;图片id;框id
  29. jsondir = os.path.join(jsonfiles, basename+'.json')
  30. with open(jsondir, 'r') as f:
  31. box_list = json.load(f)
  32. for box in box_list:
  33. # 框定义为左上坐标(x,y)和框的宽高
  34. x,y,w,h = box["box"][0], box["box"][1], box["box"][2]-box["box"][0], box["box"][3]-box["box"][1]
  35. area = w*h
  36. box_dict ={"area": area, "iscrowd": 0,
  37. "bbox": list((x,y,w,h)),
  38. "category_id": 1,
  39. "ignore": 0,
  40. "image_id": i,
  41. "id": j }
  42. j += 1 # 框id计数
  43. annotation.append(box_dict)
  44. print(basename+' success')
  45. # 类别信息字典
  46. categories = [{"supercategory": "none", "id": 1, "name": "ZW"}]
  47. result = {"images":images, "annotations":annotation, "categories":categories}
  48. save = os.path.join(savefiles,'annotations.json')
  49. with open(save, 'w') as f:
  50. json.dump(result, f)
  51. print('save success')
  52. if __name__ == '__main__':
  53. # 保存coco格式的annotations
  54. create_anno(jpgfiles, jsonfiles, savefiles)

三、Paddle模型训练

        1.参数配置

        开始训练模型前需要对训练配置文件 .yml 的内容进行修改。具体来说,本人使用的模型配置文件具体地址如下:

  1. # 配置文件.yml 地址
  2. \PaddleDetection\configs\picodet\legacy_model\application\layout_analysis\picodet_lcnet_x1_0_layout.yml

        打开配置文件后,需要修改的地方如下所示,根据实际环境和需求进行修改。

        修改预训练模型的地址和训练轮次:       

        可以根据下面地址下载预训练模型,然后在项目文件夹下新建一个 /pretrain/ 文件夹,将下载好的预训练模型放在该文件下,并修改红框内地址为当前存放预训练模型地址。

http:// https://paddledet.bj.bcebos.com/models/pretrained/LCNet_x1_0_pretrained.pdparams

        修改模型训练数据地址(训练自己数据的模型):

        将红色框内地址改为你图片数据集保存的文件夹地址。

        一种可能的自己训练数据集的修改完成状况:

        修改模型训练超参数——学习率:

        访问以下文件地址,打开关于学习率的超参数配置文件

  1. # 学习率配置文件地址
  2. /PaddleDetection/configs/picodet/legacy_model/_base_/optimizer_100e.yml

        2.命令行指令训练

        修改完成后相应的配置文件后,即可使用指令进行模型的训练了,具体代码如下。

        (如果有报错,将指令中的地址改为本地实际的绝对完整地址)

  1. # 模型训练命令行指令
  2. python -u tools/train.py -c /PaddleDetection/configs/picodet/legacy_model/application/layout_analysis/picodet_lcnet_x1_0_layout.yml -o pretrain_weights=./pretrain/LCNet_x1_0_pretrained.pdparams finetune_exclude_pretrained_params=['cls_score','bbox_pred'] --eval

        3.模型参数保存

        训练完成后,会自动创建一个 output 文件夹保存训练过程的所有模型参数,以及最好的模型参数。(如果你想在此基础上继续训练,只需将此处的参数复制到 /pretrain/ 文件夹下,并修改之前的预训练模型地址)

        4.模型的使用——预测

        模型的预测使用,检测模型的部署效果,也是使用命令行指令,具体参见博文部署paddle模型内容:从零开始使用YOLO和Paddle——模型CPU部署_paddle serving 部署cpu yolov8-CSDN博客

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号