1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PaddleDetection 自定义VOC数据集进行目标检测

PaddleDetection 自定义VOC数据集进行目标检测

时间:2022-07-14 02:39:02

相关推荐

PaddleDetection 自定义VOC数据集进行目标检测

现在百度飞桨的框架越做越火热,pp飞桨的目标检测框架开发套件也发布多时了,本文就利用自定义的VOC数据集来进行目标检测.下面是一些官方资料的参考地址

PaddleDetection Github

PaddleDetection 安装说明

PaddleDetection 数据集准备

PaddleDetection 如何上手

PaddleDetection 支持的数据格式

[PaddleDetection保姆级教程]使用自定义数据集实现吸烟识别预测

PaddleDetection 官方教程文档

先来讲一下目标检测从安装到训练的我的配置:

显卡: RTX 3090 * 2

CUDA版本:11.4

数据集:10W +

保姆级目录

1、安装PaddleDetection1.安装paddlepaddle2、安装PaddleDetection3、PaddleDetection安装测试2、自定义VOC数据集3、配置PaddleDetection训练参数文件4、开始训练1、单卡训练2、多卡训练3、训练结果

1、安装PaddleDetection

1.安装paddlepaddle

首先需要安装paddlepaddle官方库

环境要求

PaddlePaddle 2.2

OS 64位操作系统

Python 3(3.5.1+/3.6/3.7/3.8/3.9),64位版本

pip/pip3(9.0.1+),64位版本

CUDA >= 10.1

cuDNN >= 7.6

PaddleDetection 依赖 PaddlePaddle 版本关系:

安装paddlepaddle

# CUDA10.1python -m pip install paddlepaddle-gpu==2.2.0.post101 -f .cn/whl/linux/mkl/avx/stable.html# CPUpython -m pip install paddlepaddle -i /pypi/simple

由于我的cuda版本是11.4,过高了,所以我直接去官方网站找下载方式:paddlepaddle 官方下载地址

我选择的计算平台是CUDA11.2,直接复制上方的安装信息到命令行即可。

python -m pip install paddlepaddle-gpu==2.3.0.post112 -f .cn/whl/linux/mkl/avx/stable.html

2、安装PaddleDetection

注意: pip安装方式只支持Python3

# 克隆PaddleDetection仓库cd <path/to/clone/PaddleDetection>git clone /PaddlePaddle/PaddleDetection.git# 安装其他依赖cd PaddleDetectionpip install -r requirements.txt# 编译安装paddledetpython setup.py install

安装后确认测试通过:

python ppdet/modeling/tests/test_architectures.py

测试通过后会提示如下信息:

.......----------------------------------------------------------------------Ran 7 tests in 12.816sOK

3、PaddleDetection安装测试

接下来快速体验目标检测效果

# 在GPU上预测一张图片export CUDA_VISIBLE_DEVICES=0python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gpu=true weights=https://paddledet./models/ppyolo_r50vd_dcn_1x_coco.pdparams --infer_img=demo/000000014439.jpg

会在output文件夹下生成一个画有预测结果的同名图像。

结果如下图:

2、自定义VOC数据集

目前#PaddleDetection支持43种数据格式:coco voc widerface。在这里我们主要说明一下如何使用自定义COCO进行目标检测、实例分割;如何使用自定义VOC数据集进行目标检测。

当用户使用VOC数据集进行的,只需要对voc.yml进行修改即可实现正常训练。

我们提供了一个自定义的VOC数据集,并整理成如图如下图所示的形式。用户在voc.yml文件中修改路径即可。

dataset_dir: 表示数据集的路径(该路径下保存数据集、标注文件、标签以及训练验证数据集说明txt文件)anno_path: 表示训练/验证数据集的说明txt文件路径 (该处填写相对于dataset_dir的相对路径)label_list: 表示label的txt文件路径(该处填写相对于dataset_dir的相对路径)在TestDataset的配置中,对于的主要是label_list的路径,确保在测试过程中,有正确的标签

我们只需要更改…/datasets/voc.yml 这个voc文件即可配置我们的数据集

各个文件说明

label_list.txt 是类别名称列表,文件名必须是 label_list.txt。若使用VOC数据集,config文件中use_default_label为true时不需要这个文件

cat label_list.txt

aeroplane

bicycle

trainval.txt 是训练数据集文件列表

cat trainval.txt

VOCdevkit/VOC/JPEGImages/007276.jpg VOCdevkit/VOC/Annotations/007276.xml

VOCdevkit/VOC/JPEGImages/_002612.jpg VOCdevkit/VOC/Annotations/_002612.xml

test.txt 是测试数据集文件列表

cat test.txt

VOCdevkit/VOC/JPEGImages/000001.jpg VOCdevkit/VOC/Annotations/000001.xml

label_list.txt voc 类别名称列表

cat label_list.txt

aeroplane

bicycle

VOC数据标注文件介绍

VOC数据是每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。例如图像_002055.jpg:

图片对应的xml文件内包含对应图片的基本信息,比如文件名、来源、图像尺寸以及图像中包含的物体区域信息和类别信息等。

xml文件中包含以下字段:

filename,表示图像名称。

size,表示图像尺寸。包括:图像宽度、图像高度、图像深度。

object字段,表示每个物体。包括:

3、配置PaddleDetection训练参数文件

本项目中,使用YOLOv3模型里的yolov3_mobilenet_v3_large_ssld_270e_voc.yml进行训练

从上图看到yolov3_mobilenet_v3_large_ssld_270e_voc.yml配置需要依赖其他的配置文件。在该例子中需要依赖:

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

'…/datasets/voc.yml’主要说明了训练数据和验证数据的路径,包括数据格式(coco、voc等)

‘…/runtime.yml’,主要说明了公共的运行状态,比如说是否使用GPU、迭代轮数等等

‘base/optimizer_270e.yml’,主要说明了学习率和优化器的配置,以及设置epochs。在其他的训练的配置中,学习率和优化器是放在了一个新的配置文件中。 ‘base/yolov3_mobilenet_v3_large.yml’,主要说明模型、和主干网络的情况说明

‘base/yolov3_reader.yml’, 主要说明了读取后的预处理操作,比如resize、数据增强等等。

介绍一下需要修改的几个地方(画红线的地方):

…/datasets/voc.yml,数据集配置的路径文件

base/optimizer_270e.yml,这里可以更改训练epoch次数和学习率等参数

如果训练时发现内存不够,溢出等情况,可以修改base/yolov3_reader.yml文件,可以通过修改batch_size大小

4、开始训练

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

首先进入目录

cd PaddleDetection/

1、单卡训练

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

首先指定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_mobilenet_v1_roadsign.yml

3、训练结果

训练结果如下图,可以看到GPU已经使用了

可以看到loss也在逐渐降低的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。