目标检测训练自己的数据集

简介: 笔记

#训练自己的数据集

一、准备数据集

1.准备数据集:先在网上查有没有已经标注的公共数据集,如COCO、VOC数据集,如果公共数据集中没有所需的类,则自己在网上找图片即可(图像尽可能保存为jpg格式),图像尽可能要求分辨率高,背景环境简单

2.数据集的标注:在目标检测中常用labelImg工具进行标注,工具下载地址:link

标注工具github界面如图所示:下载后解压,使用说明见下载文件中的readme.md

1.png

3.进入labelImg-master文件夹:

2.png

在空白处安装键盘的Shift键+鼠标右键,点击“在此处打开Powershell”(如果没有此选项,用cmd进入该目录即可),对于windows系统:在命令窗口输入命令:

pyrcc5 -o libs/resources.py resources.qrc

python labelImg.py

如下图所示(注意,PowerShell或cmd窗口不要关闭!):

3.png

此时会出现labelImg的窗口,如下图所示,在Open Dir找到图片路径:

4.png

比如要检测香烟:按一下键盘上的w键,此时鼠标会变成+,对目标画矩形框,并在跳出来的窗口输入标签,如下图所示:

image.png

Ctrl+s对标签进行保存(不要更改标签文件名字),标签会以xml文件形式进行保存,标签文件内容如下图,按D可切换下一张:

image.png

以上步骤即为自作数据集的全过程,如果在使用labelImg工具标注时发现有鼠标有失控的现象,将工具重新打开即可。

二、训练:

2.1准备工作:

案例介绍的为YOLOv4目标检测,环境为pytorch,显卡为英伟达1650。

代码下载:link.代码相关问题可查看该博主的说明。

下载yolov4的权重文件:链接: link 提取码: q2iv。该权重文件也是上述博主云盘所提供的。将下载好的权重文件放在model_data文件下,同时在model_data下新建一个new_classes.txt文件,输入自己需要检测的类:

image.pngimage.png

打开yolo.py文件,在class YOLO(object)中model_path:为加载的权重文件(前面提到的yolov4的权重文件),文件格式为pth,anchors_path为锚框文件路径,classes_path为检测的类文件路径。

运行predict.py,输入img下的测试图像:street.jpg。如果能显示出检测结果说明程序能正常运行,否则根据报错进行调整,一般错误有某个组件没下载或者版本问题,模型加载路径问题。

2.2 训练自己的数据集:

image.png

在VOCdevit/VOC2007下检查有没有上图文件,没有则自己创建Annotation文件用来存放xml标签文件,JPEGImages用来存放图像文件。

运行voc2yolo4.py,此时会在ImageSets/Main文件下生成每个训练图像的txt文件(txt文件中只有图像的名称,没有坐标信息和格式)。

打开voc_annotation.py,将classes中的类修改为自己标记的类名称,并运行,将xml转换为yolo4可读的txt文件,此时会生成2007_train.txt,2007_test.txt,2007_val.txt文件,打开2007_train.txt可看到每个图像的名称即坐标信息,如下图所示:

image.png

如果在txt文件中没有这些信息,说明转换有错误,再一步一步检查,如果检查标签文件以及Main文件下的txt文件没问题,可修改voc_annotation.py中in_file这一行的代码,代码修改如下:

image.png

打开train_with_tensorboard.py(需要安装tensorboardX),将下图中的classes_path修改为new_classes.txt:

image.png

其他训练参数可根据自身需求进行调整,训练后的模型会保存在logs文件中,训练完以后如果想继续训练,可修改model_path的权重路径为自己权重进行预训练。

在yolo.py中可修改model_path和classes_path为自己权重和类文件,然后再predict.py和video.py进行图像或视频检测。

目录
相关文章
|
机器学习/深度学习 文字识别 PyTorch
PyTorch内置损失函数汇总 !!
PyTorch内置损失函数汇总 !!
396 0
|
2月前
|
人工智能 小程序 安全
小程序跨平台框架未来的发展趋势是什么?
小程序跨平台框架未来的发展趋势是什么?
318 128
|
2月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
328 98
|
3月前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
622 135
|
3月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
532 51
|
3月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
713 19
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
5908 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
XML JSON 数据可视化
数据集学习笔记(六):目标检测和图像分割标注软件介绍和使用,并转换成YOLO系列可使用的数据集格式
本文介绍了labelImg和labelme两款图像标注工具的安装、使用、数据转换和验证方法,适用于目标检测和图像分割任务,支持YOLO等数据集格式。
3678 2
数据集学习笔记(六):目标检测和图像分割标注软件介绍和使用,并转换成YOLO系列可使用的数据集格式
|
缓存 负载均衡 安全
正向代理和反向代理
本文详细介绍了代理和反向代理的概念及应用场景。代理作为一种中间人服务,可细分为正向代理与反向代理。前者位于客户端与网络间,有助于匿名浏览、访问控制、缓存加速及增强安全性;后者则位于网络与服务器间,主要用于负载均衡、缓存、安全性提升、SSL终止及内容过滤等。两者各有侧重,可根据具体需求选择使用。例如,Squid 是常用的正向代理框架,而 Nginx 则常用于反向代理。了解并合理运用两者,能有效提升网络性能与安全性。
775 4
|
机器学习/深度学习 计算机视觉
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力本文介绍了一种高效的视觉变换器——DilateFormer,通过多尺度扩张注意力(MSDA)模块,在保持高性能的同时显著降低计算成本。MSDA通过在滑动窗口内模拟局部和稀疏的块交互,实现了多尺度特征聚合。实验结果显示,DilateFormer在ImageNet-1K分类、COCO对象检测/实例分割和ADE20K语义分割任务上均取得了优异的性能,且计算成本比现有模型减少70%。
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力