yolov3测试自己的数据集,yolov3多目标检测
基于YOLOV4的绝缘子检测(开源模型、数据集和源代码)1。项目介绍Yolo _ Insulators是一个基于YoloV4的绝缘子目标探测程序,是一个人工智能课程设计作业。Github链接
github:https://github . com/Onicc/yolov 4 _ isolators
gitee:https://gitee . com/Onicc/yolov 4 _ Insulators .如果对你有用,请点一颗星!
依赖
:python 3.6 pytorch 1.2 . 0 cuda 10.0 II。Yolo算法简介“你只看一次”或“YOLO”是一种物体检测算法的名称,由Redmon等人在2016年的一篇研究论文中命名。YOLO实现了用于自动驾驶汽车等尖端技术的实时物体检测。让我们看看是什么让这个算法如此受欢迎,并概述它是如何工作的。
1.背景
实时的重要性
人们看到图像后,可以立即识别物体及其位置和相对位置。这使我们能够几乎无意识地完成复杂的任务,比如驾驶。因此,训练自动驾驶需要类似水平的反应能力和准确性。在其最基本的形式中,这样的系统必须能够分析实时视频中的道路,并在继续确定路径之前检测现实世界中的各种类型的对象及其位置,所有这些都必须是实时的。
在YOLO之前
以前的检测系统使用分类器来评估测试图像的不同切片。例如,可变形部分模型(DPM)涉及在图像中均匀间隔的位置滑动窗口,并在这些部分上运行分类器。R-CNN(基于区域的卷积神经网络)是另一种模型,它运行分割算法将图像分割成小块,然后在这些小块上运行分类器。然而,速度慢和优化困难一直困扰着这个前YOLO系统。
2.YOLO算法YOLO重新定义对象检测作为一个回归问题。它将单个卷积神经网络(CNN)应用于整个图像,将图像划分为网格,并预测每个网格的类概率和包围盒。例如,以100x100的图像为例。我们把它分成网格,比如7x7。
然后,对于每个网格,网络将预测一个边界框和对应于每个类别(汽车、行人、交通灯等)的概率。).
每个边界框可以用四个描述符来描述:
边框的中心高度和宽度值映射到对象所属的类。
此外,该算法还可以预测物体在包围盒中的概率。如果对象的中心落在网格单元中,则该网格单元负责检测该对象。每个网格中会有多个边界框。在训练过程中,我们希望每个对象只有一个边界框。所以我们根据哪个盒子和地面真值盒子重叠度最高,分配一个盒子负责预测对象。
最后,我们将一种称为“非最大抑制”的方法应用于每一类对象,以过滤掉“置信度”小于阈值的包围盒。这为我们提供了图像预测。
3.重要性YOLO非常快。因为检测问题是回归问题,所以不需要复杂的流水线。比“R-CNN”快1000倍,比“快R-CNN”快100倍。它可以处理延迟小于25毫秒的实时视频流。其精度是以前实时系统的两倍以上。同样重要的是,YOLO遵循“端到端深度学习”的实践。
三。文件结构。 IMG #存储预测图像日志#存储训练模型文件model_data# #存储预训练模型网#网络结构 utils #数据加载、NMS等。 VOCdevkit# VOC标记的XML文件-Imagesets -Main -JPEGImages #数据集图片III。数据集绝缘体数据集是一个在线开源数据集,共有600张图片。数据集格式为VOC2007,标注文件为xml。
可以通过百度网盘下载绝缘子数据集——提取代码:djuf,下面是一些数据集图片。
如果需要扩展自己的数据,可以使用labelimg来标记新数据。注意标签是绝缘体。
如何做一个数据集?将数据集图片存储在VOCdevkit/VOC 2007/jpe images目录中,然后将注释文件放在VOC DevKit/VOC 2007/annotations目录中。
执行
Python dev kit/VOC 2007/VOC 2 yolo 4 . py Python VOC _ annotation . py运行成功后会在vocdevkit/VOC 2007/imagesets/main目录下生成训练所需的文件。
第四,训练模型,由于数据集数量少,直接训练模型收敛效果可能不好,无法达到高识别率。绝缘子识别是目标检测的一个子应用,其模型的许多参数与其他目标检测的参数相似。因此,通过在完整数据集上训练的模型,通过迁移学习将其应用于绝缘子识别,可以使模型在数据集较小时快速收敛,达到更高的精度。
学习策略:先冻结CSPDarknet53网络,只训练FPN部分,之后解冻CSPDarknet53,在整个网络上训练模型。
在train.py中,可以设置Cosine_lr、mosaic和smoooth _ label来设置是否采用余弦退火策略、镶嵌数据增强和标签平滑。训练集和验证集的默认比例是9:1。您可以修改train.py文件中的val_split参数来调整比率。同时,可以调整参数lr、Batch_size和Epoch来修改学习速率、批量大小和迭代次数。
训练模型只需要运行。
Python train.py训练好的模型将存在于日志文件中。
可以通过百度网盘下载我训练好的模型——抽取代码:t9ct,以下是训练模型丢失的变化,
5.要测试模型,需要修改根目录的yolo.py中model_path的路径。但是,您也可以使用模型提取代码:t9ct。下载模型后,将模型文件放在logs文件夹中。在predict.py中,将imgPath修改为要预测的图片路径,并运行
Python predict.py会弹出预测成功的窗口,并将预测结果保存在img文件夹中。
以下是我训练的模型的一些测试结果。