# YoloV4_Insulators
### 一、项目简介
Yolo_Insulators是一个基于YoloV4的绝缘子目标检测程序,人工智能课程设计作业。
**依赖**:
- Python3.6
- Pytorch1.2.0
- CUDA10.0
### 二、Yolo算法简介
“You Only Look Once”或“YOLO”是一个对象检测算法的名字,这是Redmon等人在2016年的一篇研究论文中命名的。YOLO实现了自动驾驶汽车等前沿技术中使用的实时对象检测。让我们看看是什么使该算法如此受欢迎,并概述其工作原理。
![对象检测示例](.assets/4034970a304e251f40223503c86146117d3e5366.jpeg)
#### 1、背景
**实时的重要性**
人们看到图像以后,可以立即识别其中的对象、它们的位置和相对位置。这使得我们能够在几乎无意识的情况下完成复杂的任务,比如开车。因此,对汽车进行自动驾驶训练需要类似水平的反应能力和准确性。在其最基本的形式中,这样的系统必须能够分析实时视频中的道路,并能够在继续确定路径之前检测各种类型的对象及其在现实世界中的位置,所有这些都必须是实时的。
**在YOLO之前**
先前的检测系统使用分类器对测试图像的不同切片进行评估。例如,Deformable Parts Model (DPM)涉及到在图像中均匀间隔的位置上滑动窗口并在这些部件上运行分类器。R-CNN(Region-based Convolutional Neural Networks)是另一种模型,它运行一种分割算法将一幅图像分割成一个个小块,然后在这些小块上运行一个分类器。但是,速度慢、优化困难一直困扰着这种YOLO之前的系统。
#### 2、YOLO算法
YOLO将对象检测重新定义为一个回归问题。它将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框。例如,以一个100x100的图像为例。我们把它分成网格,比如7x7。
![img](.assets/8694a4c27d1ed21bc6ed15f6c38952c250da3fee.jpeg)
然后,对于每个网格,网络都会预测一个边界框和与每个类别(汽车,行人,交通信号灯等)相对应的概率。
![img](.assets/d52a2834349b033bae87aafa7b29b9d5d439bdf5.jpeg)
每个边界框可以使用四个描述符进行描述:
边界框的中心高度宽度值映射到对象所属的类
此外,该算法还可以预测边界框中存在对象的概率。如果一个对象的中心落在一个网格单元中,则该网格单元负责检测该对象。每个网格中将有多个边界框。在训练时,我们希望每个对象只有一个边界框。因此,我们根据哪个Box与ground truth box的重叠度最高,从而分配一个Box来负责预测对象。
最后,我们对每个类的对象应用一个称为“非最大抑制(Non Max Suppression)”的方法来过滤出“置信度”小于阈值的边界框。这为我们提供了图像预测。
![img](.assets/a8014c086e061d95a3897a4e0b1385d760d9cae3.jpeg)
#### 3、重要性
YOLO非常快。由于检测问题是一个回归问题,所以不需要复杂的管道。它比“R-CNN”快1000倍,比“Fast R-CNN”快100倍。它能够处理实时视频流,延迟小于25毫秒。它的精度是以前实时系统的两倍多。同样重要的是,YOLO遵循的是“端到端深度学习”的实践。
### 三、代码说明
#### 1、文件结构
```
.
│ predict.py # 对图片进行预测
│ train.py # 训练模型
│ voc_annotation.py # 对VOC数据集处理导出索引
│ yolo.py # 预测程序的子程序
│
├─img # 存放预测后的图像
├─logs # 存放训练的模型文件
├─model_data # 存放预训练模型
│ new_classes.txt # 类别的名称
│ yolo_anchors.txt # 先验框的大小
│
├─nets # 网络结构
│ CSPdarknet.py # CSPdarkNet53主干特征网络
│ yolo4.py # FPN、SPP等网络
│ yolo_training.py # 模型训练子程序
│
├─utils # 数据加载、NMS等
│ dataloader.py # 数据加载
│ utils.py # 数据处理、增强等
│
└─VOCdevkit # VOC数据集
└─VOC2007
│ voc2yolo4.py # 数据集转换
│
├─Annotations # 标注XML文件
├─ImageSets
│ └─Main
└─JPEGImages # 数据集图片
```
#### 2、基本原理
YoloV4基本网络结构如下:
![20200512144007178](../../YoloV4_Insulators/.assets/20200512144007178.png)
YoloV4整个网络主要分为CSPDarknet53、SPP、PANet和Yolo Head四个部分。
**CSPDarknet53**:主干特征提取网络,主要利用深度卷积提取图像特征,便于后续网络使用。代码主要在`nets\CSPdarknet.py`下,以下为CSPDarknet53网络结构的类。
```python
class CSPDarkNet(nn.Module)
```
在`forward`部分可以看到输入图像经过一次普通卷积和五次残差卷积,最后将倒数三层结果输出,供给后面网络使用。这样可以提取不同尺度的特征信息,方便后续的特征融合及提取。值得注意的是
**SPP**:加强特征提取网络的一部分,主要是使用不同池化核进行最大池化,再进行多重感受野融合。以下为SPP网络部分的类。
```python
class SpatialPyramidPooling(nn.Module)
```
采用三种不同的池化核对输入特征层池化,得到不同感受野的特征层,最后融合所有输出层及输入层实现多重感受野的融合。
**PANet+Yolo Head**:加强特征提取网络的一部分和网络输出,主要对上两个网络输出的不同尺度的特征进行上下采样特征融合,最后在三种不同的尺度上对预测的结果输出,以下为PANet和YoloHead的类。
```python
class YoloBody(nn.Module)
```
输入的`x2`,`x1`,`x0`为`CSPDarknet53`和`SPP`网络的输出,分别代表着三个不同尺度的特征层,在`PANet`中将这三个不同尺度的特征通过上下采样,使其在大小上具有相同的尺度,再进行特征融合,依次在三个不同尺度下进行,最后通过卷积将结果输出,值得注意的是yolo的输出既包含回归也包含分类,其中在不同物体识别上是采用分类的方式,在预测物体所在位置时采用回归的方式。
### 四,如何使用
#### 1、数据集
数据集采用网上开源的绝缘子数据集,共600张图片。数据集格式使用VOC2007,标注文件为xml。
你可以通过百度网盘来下载[绝缘子数据集-提取码:djuf ](https://pan.baidu.com/s/1z_J9tx-151FFAVW9ASJz9A ),以下是部分数据集图片。
![image-20201214193009500](.assets/image-2020121419300950.png)
若需要扩增自己的数据,可以使用[labelimg](https://github.com/tzutalin/labelImg)来标注新的数据,注意标签为insulator。
**如何制作数据集**
将数据集图片存放至`VOCdevkit/VOC2007/JPEGImages`目录,再将标注文件放至`VOCdevkit/VOC2007/Anootations`目录。
执行
```
python VOCdevkit/VOC2007/voc2yolo4.py
python voc_annotation.py
```
运行成功后会在`VOCdevkit/VOC2007/ImageSets/Main`目录生成训练需要的文件。
#### 2、训练模型
由于数据集数量较小,直接训练模型收敛效果可能不佳,达不到高识别率。绝缘子识别是目标检测的一个子应用,其模型的很多参数与其他目标检测的参数相似,因此可以通过一个在完备的数据集上训练好的模型通过迁移学习应用到绝缘子识别上,可以在数据集较小的情况下使模型快速收敛,实现更高的准确率。
迁移学习策略:先冻结CSPDarknet53网络, 只训练FPN部分,后期再将CSPDarknet53解冻,在全网络上训练模型。
在`train.py`中可以通过设置`Cosine_lr`、`mosaic`和`smoooth_label`来设置是否采用余弦退火策略、mosaic数据增强和标签平滑等。训练集和验证集默认比例为9:1,可在`train.py`文件中修改`val_split`�
没有合适的资源?快使用搜索试试~ 我知道了~
基于YoloV4的绝缘子目标检测程序源代码+数据集+训练模型.zip
共32个文件
py:10个
txt:6个
jpeg:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 178 浏览量
2024-04-24
20:42:26
上传
评论
收藏 7.07MB ZIP 举报
温馨提示
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
资源推荐
资源详情
资源评论
收起资源包目录
基于YoloV4的绝缘子目标检测程序源代码+数据集+训练模型.zip (32个子文件)
YoloV4_Insulators-main
voc_annotation.py 1KB
.vscode
settings.json 85B
.assets
4034970a304e251f40223503c86146117d3e5366.jpeg 48KB
8694a4c27d1ed21bc6ed15f6c38952c250da3fee.jpeg 21KB
00037.jpg 314KB
d52a2834349b033bae87aafa7b29b9d5d439bdf5.jpeg 24KB
image-2020121419300950.png 1023KB
image-20201214203019767.png 19KB
00008.jpg 491KB
00034.jpg 383KB
image-20201214202949957.png 10KB
a8014c086e061d95a3897a4e0b1385d760d9cae3.jpeg 39KB
u=3091582795,1646339548&fm=173&app=49&f=JPEG 21KB
LICENSE 11KB
predict.py 314B
utils
utils.py 13KB
dataloader.py 9KB
nets
CSPdarknet.py 5KB
yolo_training.py 23KB
yolo4.py 5KB
model_data
yolo_anchors.txt 85B
simhei.ttf 9.3MB
new_classes.txt 10B
VOCdevkit
VOC2007
ImageSets
Main
README.TXT 12B
Annotations
README.TXT 12B
JPEGImages
README.TXT 15B
voc2yolo4.py 1KB
logs
README.TXT 21B
.gitignore 2KB
train.py 10KB
README.md 9KB
yolo.py 7KB
共 32 条
- 1
资源评论
不会仰游的河马君
- 粉丝: 5398
- 资源: 7615
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- goth 包提供了一种简单、干净且惯用的方式来为 Go Web 应用程序编写身份验证包 .zip
- PHP 中 Cookie 和 Session 的使用简易教程(学习笔记)
- SoftEther VPN Client + VPN Gate Client 插件
- GoRequest-简化的HTTP客户端(受nodejs SuperAgent启发).zip
- 主要物体检测15-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- Google Maps API Web 服务的 Python 客户端库.zip
- Google Authenticator 服务器端代码.zip
- logo标志检测26-YOLOv7、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- golang 的算法和数据结构.zip
- Vue + SpringBoot前后端项目实例
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功