1.环境配置

操作系统 Windows
python 3.8
paddlepaddle-gpu 2.3.0
CUDA 10.2
cuDNN 7.6.5
ppdet 2.2.4

2.项目结构

3.准备数据集

1、下载源码后,打开项目,在PaddleDetection/dataset目录下新建文件夹 mydata

2、在PaddleDetection/dataset/mydata目录下新建文件夹Annotations、JPEGImages

3、将所有所有标注的XML文件放到dataset/mydata/Annotations目录下 如下图

4、将所有标注的图片放到dataset/mydata/JPEGImages目录下,如下图

5.利用 create_data_list.py 来生成对应的文本文件

4.修改指定配置文件

本项目中,使用YOLOv3模型里的 configs/yolov3/yolov3_mobilenet_v1_270e_voc.yml 训练
从上图看到yolov3_mobilenet_v1_270e_voc.yml 配置需要依赖其他的配置文件。该例子依赖:

在修改文件之前,先给大家解释一下各依赖文件的作用:

①‘ …/datasets/voc.yml’主要说明了训练数据和验证数据的路径,包括数据格式(coco、voc等)
②‘…/runtime.yml’,主要说明了公共的运行状态,比如说是否使用GPU、迭代轮数等等
③‘_base/optimizer_270e.yml’,主要说明了学习率和优化器的配置,以及设置epochs。在其他的训练的配置中,学习率和优化器是放在了一个新的配置文件中。 ‘base/yolov3_mobilenet_v1.yml’,主要说明模型、和主干网络的情况说明.。。。
④‘_base/yolov3_reader.yml’, 主要说明了读取后的预处理操作,比如resize、数据增强等等。

请保证PaddleDetection环境配置好之后按照如下图示修改即可:

voc.yml

runtime.yml

optimizer_270e.yml 和 yolov3_mobilenet_v1.yml 无需进行修改,默认即可!

yolov3_reader.yml

4.开始训练

PaddleDetection提供了单卡/多卡训练模式,满足用户多种训练需求

(1)单卡训练

export CUDA_VISIBLE_DEVICES=0 #windows和Mac下不需要执行该命令
python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_270e_voc.ymlpython tools/train.py -c configs/yolov3_mobilenet_v1_270e_voc.yml --eval

首先指定CUDA的环境变量
其中 -c 后边代表指定配置文件的路径

(2)多卡训练

export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 #windows和Mac下不需要执行该命令
python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml

(3)训练过程图示

create_data_list:

import os
import random
import xml.etree.ElementTree
from tqdm import tqdm# 打乱数据
def shuffle_data(data_list_path):with open(data_list_path, 'r', encoding='utf-8') as f:lines = f.readlines()random.shuffle(lines)with open(data_list_path, 'w', encoding='utf-8') as f:f.writelines(lines)# 生成图像列表
def create(images_dir, annotations_dir, train_list_path, test_list_path, label_file):f_train = open(train_list_path, 'w', encoding='utf-8')f_test = open(test_list_path, 'w', encoding='utf-8')f_label = open(label_file, 'w', encoding='utf-8')label = set()images = os.listdir(images_dir)i = 0for image in tqdm(images):i += 1annotation_path = os.path.join(annotations_dir, image[:-3] + 'xml').replace('\\', '/')image_path = os.path.join(images_dir, image).replace('\\', '/')if not os.path.exists(annotation_path):continueroot = xml.etree.ElementTree.parse(annotation_path).getroot()for object in root.findall('object'):label.add(object.find('name').text)if i % 20 == 0:f_test.write("%s %s\n" % (image_path[image_path.find('/') + 1:], annotation_path[annotation_path.find('/') + 1:]))else:f_train.write("%s %s\n" % (image_path[image_path.find('/') + 1:], annotation_path[annotation_path.find('/') + 1:]))for l in label:f_label.write("%s\n" % l)f_train.close()f_test.close()f_label.close()# 打乱训练数据shuffle_data(train_list_path)print('create data list done!')if __name__ == '__main__':create('./JPEGImages', './Annotations', './trainval.txt', './test.txt', './label_list.txt')

利用PaddleDetection 训练自定义VOC数据集进行目标检测相关推荐

  1. YOLOX——Win10下训练自定义VOC数据集

    前言 上个博客试着把yolox在win下的环境配置,然后就要试着训练自己的数据集,我这里用的是VOC格式的数据集,训练环境是win10 x64,CUDA11.0 cudnn 8.1 GPU 是GTX ...

  2. 【Detectron2】使用 Detectron2 训练基于 coco 数据集的目标检测网络

    文章目录 一.安装 Detectron2 二.软连接 coco 数据集 三.训练 四.数据集相关参数 五.输出结果路径 六.COCO 数据集简介 七.模型相关参数 八.可视化结果 一.安装 Detec ...

  3. YOLOF训练自己的数据集(目标检测,cvpods版本)

    训练准备: github repo地址:https://github.com/megvii-model/YOLOF github上有两个版本,一个是cvpods,一个是detectron2,第二个我每 ...

  4. 利用yolov7训练自己的数据集; yolov7的安装与使用 ; yolov7源码解读

    *免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:Anconda环境基本操作 场景二:yolov7的使用 场景三:yolov7训练自己的数据集 场景四:实用工 ...

  5. 目标检测---以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集(正确方法)

    以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集的正确方法 文章目录 前言 一.labelimg简单介绍 1 VOC标签格式,保存为xml文件. 2 yolo标签格 ...

  6. Object Detection with Discriminatively Trained Part Based Models(使用判别训练的部件模型进行目标检测 )

    目录(?)[-] 摘要 关键词 引言 相关研究工作 模型 1 可变形部件模型 2 匹配 3 混合模型 隐藏变量SVM 1 半凸规划 2 最优化 3 随机梯度下降 4 难例挖掘SVM版 5 难例挖掘LS ...

  7. YOLOv7训练自己的数据集(口罩检测)

    YOLOv7训练自己的数据集(口罩检测) 前言 前提条件 实验环境 项目结构 制作自己的数据集 数据集目录结构 训练自己的数据集 VOC格式数据集转换成YOLO格式数据集 修改cfg配置 新建一个my ...

  8. 电气领域相关数据集(目标检测,分类图像数据及负荷预测),电气设备红外测温图像,输电线路图像数据续

    另外一部分见:电气领域相关数据集(目标检测,分类图像数据及负荷预测),输电线路图像数据 1. 变电站烟火检测图像数据集(3600多张,VOC标签) 2. 导线破损检测图像数据集(有拼接增强,VOC标签 ...

  9. TOLOv5训练自己的数据集--漫画人物检测

    TOLOv5训练自己的数据集--漫画人物检测 TOLOv5训练自己的数据集 YOLOv5模型下载 使用LabelImage标注图片 生成所需数据集 更改配置文件 训练 测试 TOLOv5训练自己的数据 ...

  10. KITTI数据集3D目标检测数据下载并可视化简洁实用版

    KITTI数据集3D目标检测部分下载使用简洁实用版 1.下载数据 使用Left Image和Velodyne点云数据 下载地址:http://www.cvlibs.net/datasets/kitti ...

最新文章

  1. MAT类如何存储数据
  2. Javascript创建类的七种方法
  3. 使用mysql备份工具innobackupex进行本地数据备份、恢复操作实例
  4. Spring Boot 2中的功能切换
  5. 码住!Flink Contributor 速成指南
  6. 程序员的年龄越大编程能力越弱???原来我们都理解错了
  7. 使用python写程序时遇到的几个小问题
  8. Android功耗(8)---Camera功耗分析和拆解
  9. PostgreSQL——不仅仅是监控
  10. python编程例子_Python的经典入门书籍有哪些?这5本值得一看
  11. ThinkpadT470接通电源开机显示电量0%充不进电且电源指示灯不亮的解决办法
  12. KeyMob:移动聚合广告的潜力无限
  13. Chrome浏览器历史版本下载
  14. 初识scratch,球拍,背景,障碍物的制作
  15. python自动交易软件排名_量化投资软件排名 哪个量化交易软件最好用
  16. python入门系列(4) -- python常见应用
  17. 《8问》| 程晓明:未来一定有世界货币,关键在于设计逻辑
  18. 如何将自己开发的网站部署到小鸟云服务器上?
  19. web scraper
  20. Visual Paradigm导出png,如何去除的水印

热门文章

  1. win10电脑状态栏图标不见消失解决办法
  2. 博士申请 | 美国佛罗里达州立大学王广老师招收人工智能全奖博士生
  3. c语言鼠标滚动条,xtraScrollableControl 滚动条随鼠标滚动
  4. 计算机键盘重复设置,电脑键盘错乱怎么恢复 一键快速重新设置电脑快捷键方法...
  5. 清理电脑C盘的方法汇总
  6. 北京课改版三年级英语教案二-Leo老师
  7. 第一次模拟考试总结反思
  8. 采用KubeSphere的kk,部署安装多节点服务的kubernetes-v1.18.6和kubesphere-v3.0.0的踩坑过程记录,及反思
  9. IT大学生成长周报 | 第 6 期
  10. 【C/C++】多线程中的几种锁