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

PaddleDetection Github
PaddleDetection 安装说明
PaddleDetection 数据集准备
PaddleDetection 如何上手
PaddleDetection 支持的数据格式
[PaddleDetection保姆级教程]使用自定义数据集实现吸烟识别预测
PaddleDetection 官方教程文档

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

显卡: RTX 3090 * 2
CUDA版本:11.4
数据集:10W +

保姆级目录

  • 1、安装PaddleDetection
    • 1.安装paddlepaddle
    • 2、安装PaddleDetection
    • 3、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.1
python -m pip install paddlepaddle-gpu==2.2.0.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html# CPU
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

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


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

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

2、安装PaddleDetection

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

# 克隆PaddleDetection仓库
cd <path/to/clone/PaddleDetection>
git clone https://github.com/PaddlePaddle/PaddleDetection.git# 安装其他依赖
cd PaddleDetection
pip install -r requirements.txt# 编译安装paddledet
python setup.py install

安装后确认测试通过:

python ppdet/modeling/tests/test_architectures.py

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

.......
----------------------------------------------------------------------
Ran 7 tests in 12.816s
OK

3、PaddleDetection安装测试

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

# 在GPU上预测一张图片
export CUDA_VISIBLE_DEVICES=0
python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gpu=true weights=https://paddledet.bj.bcebos.com/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/VOC2007/JPEGImages/007276.jpg VOCdevkit/VOC2007/Annotations/007276.xml
VOCdevkit/VOC2012/JPEGImages/2011_002612.jpg VOCdevkit/VOC2012/Annotations/2011_002612.xml

test.txt 是测试数据集文件列表
cat test.txt
VOCdevkit/VOC2007/JPEGImages/000001.jpg VOCdevkit/VOC2007/Annotations/000001.xml

label_list.txt voc 类别名称列表
cat label_list.txt
aeroplane
bicycle

VOC数据标注文件介绍
VOC数据是每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。例如图像2007_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也在逐渐降低的

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

  1. MSCOCO数据集转VOC数据集训练目标检测模型

    MSCOCO数据集转VOC数据集训练目标检测模型 Images 2014 Train images [83K/13GB] 2014 Val images [41K/6GB] 2014 Test ima ...

  2. 用PaddleDetection做一个完整的目标检测项目(上)

    文章转载自:微信公众号:飞桨PaddlePaddle的微信文章 原文章中由于排版问题,导致文字遮挡,不便阅读,因此对文章格式稍作更改,增加了一些关键词加粗,便于后续阅读. PaddleDetectio ...

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

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

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

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

  5. 收藏 | 使用合成数据集做目标检测

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:Sergey Nikolenko 编译:ronghuaiyang    |    AI公园 AI博士笔记 ...

  6. ResNeSt 登顶COCO数据集(目标检测,实例分割,全景分割)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 编辑:Cver 本文作者:张航 https://zhuanlan.z ...

  7. 视频监控 智能交通 数据集(目标检测、跟踪)

    前言 总结一下视频监控的数据集,用于目标检测.跟踪,持续跟新中........... 一.UA-DETRAC 数据集 UA-DETRAC是一个具有挑战性的真实世界多目标检测和多目标跟踪基准.该数据集包 ...

  8. Colab下Imageai自定义模型训练和目标检测

    本文运行再colab环境下 目录 本文运行再colab环境下 1.准备 a.库的安装 b.colab环境的准备 2.模型的训练 a.准备数据集 b.训练 3.通过模型进行目标检测 4.注意: 1.准备 ...

  9. 语义分割数据集转目标检测数据集

    前言 最近,在做实时性计算的东西,最初用的语义分割unet,发现它在服务器级GPU下推理的特别慢,但是精度还不错,但是我们追求的是实时性,所以我们还是用一下目标检测,最终选定yolov5 yolov5 ...

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

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

最新文章

  1. javascript”面向对象编程”- 1万物皆对象
  2. 在 aws emr 上,将 hbase table A 的数据,对 key 做 hash,写到另外一张 table B
  3. 最小熵原理:“物以类聚”之从图书馆到词向量
  4. 粗谈LINUX下的文件系统管理
  5. pycharm之no python interpreter configured for project的解决办法
  6. ML、DL、CNN学习记录7
  7. python检测端口是否被侦听
  8. 使用Python,为图片添加水印
  9. 图像频域增强:带通带阻滤波器
  10. LaTeX 安装及环境配置
  11. 【2019-2020春学期】数据库作业16:第七章: 数据库设计
  12. 云酷科技UWB定位系统:智能巡检的新方式
  13. Python的seek函数
  14. PTA习题 计算某年某月某日是该年中的第几天
  15. 网页提示404什么意思
  16. 计算机系统结构复习(六):Limits to ILP and SMT指令级并行的限制和同时多线程
  17. js中jquery鼠标事件(点击替换、鼠标移入、移出)
  18. [JS]技术交底列表
  19. 运用DCM4CHEE docker镜像模拟医院PACS系统进行数据传输的测试
  20. thymeleaf中的/*[[@{})}]]*/语法

热门文章

  1. 航空航天行业工作站应用---EDA仿真计算工作站
  2. 从程序员到项目经理(二十八):该死的结果导向(只看结果,不问过程到底行不行?)
  3. 2012server改计算机用户名,windows server 2012 r2管理员用户名怎么修改
  4. 白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)
  5. VEH,VCH,UEF Windows向量化异常处理机制详解
  6. office 2019中文
  7. hdu 6592 Beauty Of Unimodal Sequence
  8. 能上QQ微信,打不开网页
  9. NIOS II入门学习笔记【一】--- NIOS II软核处理器开发入门
  10. java导出excel设置行高列宽_POI精确设置Excel的行高和列宽