利用PaddleDetection 训练自定义VOC数据集进行目标检测
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数据集进行目标检测相关推荐
- YOLOX——Win10下训练自定义VOC数据集
前言 上个博客试着把yolox在win下的环境配置,然后就要试着训练自己的数据集,我这里用的是VOC格式的数据集,训练环境是win10 x64,CUDA11.0 cudnn 8.1 GPU 是GTX ...
- 【Detectron2】使用 Detectron2 训练基于 coco 数据集的目标检测网络
文章目录 一.安装 Detectron2 二.软连接 coco 数据集 三.训练 四.数据集相关参数 五.输出结果路径 六.COCO 数据集简介 七.模型相关参数 八.可视化结果 一.安装 Detec ...
- YOLOF训练自己的数据集(目标检测,cvpods版本)
训练准备: github repo地址:https://github.com/megvii-model/YOLOF github上有两个版本,一个是cvpods,一个是detectron2,第二个我每 ...
- 利用yolov7训练自己的数据集; yolov7的安装与使用 ; yolov7源码解读
*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:Anconda环境基本操作 场景二:yolov7的使用 场景三:yolov7训练自己的数据集 场景四:实用工 ...
- 目标检测---以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集(正确方法)
以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集的正确方法 文章目录 前言 一.labelimg简单介绍 1 VOC标签格式,保存为xml文件. 2 yolo标签格 ...
- Object Detection with Discriminatively Trained Part Based Models(使用判别训练的部件模型进行目标检测 )
目录(?)[-] 摘要 关键词 引言 相关研究工作 模型 1 可变形部件模型 2 匹配 3 混合模型 隐藏变量SVM 1 半凸规划 2 最优化 3 随机梯度下降 4 难例挖掘SVM版 5 难例挖掘LS ...
- YOLOv7训练自己的数据集(口罩检测)
YOLOv7训练自己的数据集(口罩检测) 前言 前提条件 实验环境 项目结构 制作自己的数据集 数据集目录结构 训练自己的数据集 VOC格式数据集转换成YOLO格式数据集 修改cfg配置 新建一个my ...
- 电气领域相关数据集(目标检测,分类图像数据及负荷预测),电气设备红外测温图像,输电线路图像数据续
另外一部分见:电气领域相关数据集(目标检测,分类图像数据及负荷预测),输电线路图像数据 1. 变电站烟火检测图像数据集(3600多张,VOC标签) 2. 导线破损检测图像数据集(有拼接增强,VOC标签 ...
- TOLOv5训练自己的数据集--漫画人物检测
TOLOv5训练自己的数据集--漫画人物检测 TOLOv5训练自己的数据集 YOLOv5模型下载 使用LabelImage标注图片 生成所需数据集 更改配置文件 训练 测试 TOLOv5训练自己的数据 ...
- KITTI数据集3D目标检测数据下载并可视化简洁实用版
KITTI数据集3D目标检测部分下载使用简洁实用版 1.下载数据 使用Left Image和Velodyne点云数据 下载地址:http://www.cvlibs.net/datasets/kitti ...
最新文章
- MAT类如何存储数据
- Javascript创建类的七种方法
- 使用mysql备份工具innobackupex进行本地数据备份、恢复操作实例
- Spring Boot 2中的功能切换
- 码住!Flink Contributor 速成指南
- 程序员的年龄越大编程能力越弱???原来我们都理解错了
- 使用python写程序时遇到的几个小问题
- Android功耗(8)---Camera功耗分析和拆解
- PostgreSQL——不仅仅是监控
- python编程例子_Python的经典入门书籍有哪些?这5本值得一看
- ThinkpadT470接通电源开机显示电量0%充不进电且电源指示灯不亮的解决办法
- KeyMob:移动聚合广告的潜力无限
- Chrome浏览器历史版本下载
- 初识scratch,球拍,背景,障碍物的制作
- python自动交易软件排名_量化投资软件排名 哪个量化交易软件最好用
- python入门系列(4) -- python常见应用
- 《8问》| 程晓明:未来一定有世界货币,关键在于设计逻辑
- 如何将自己开发的网站部署到小鸟云服务器上?
- web scraper
- Visual Paradigm导出png,如何去除的水印
热门文章
- win10电脑状态栏图标不见消失解决办法
- 博士申请 | 美国佛罗里达州立大学王广老师招收人工智能全奖博士生
- c语言鼠标滚动条,xtraScrollableControl 滚动条随鼠标滚动
- 计算机键盘重复设置,电脑键盘错乱怎么恢复 一键快速重新设置电脑快捷键方法...
- 清理电脑C盘的方法汇总
- 北京课改版三年级英语教案二-Leo老师
- 第一次模拟考试总结反思
- 采用KubeSphere的kk,部署安装多节点服务的kubernetes-v1.18.6和kubesphere-v3.0.0的踩坑过程记录,及反思
- IT大学生成长周报 | 第 6 期
- 【C/C++】多线程中的几种锁