目录
1 绪论 - 1 -
1.1 研究背景 - 1 -
1.2 基于深度学习的道路裂缝检测 - 2 -
1.3 本文研究内容 - 5 -
2 相关技术综述 - 7 -
2.1 深度学习模型轻量化 - 7 -
2.1.1 模型剪枝 - 7 -
2.1.2 模型量化 - 7 -
2.2 深度学习模型泛化性增强 - 8 -
2.2.1 分布偏移基础理论 - 8 -
2.2.2 深度学习泛化技术 - 9 -
3 YOLOv3轻量化与泛化性增强技术 - 11 -
3.1 设计概要 - 11 -
3.2 基于模型剪枝和模型量化的YOLOv3轻量化 - 12 -
3.2.1 模型剪枝 - 12 -
3.2.2 模型量化 - 13 -
3.3 YOLOv3泛化性增强 - 14 -
3.4 模型训练超参数筛选 - 16 -
4 YOLOv3改进效果验证 - 18 -
4.1 实验引言 - 18 -
4.2 数据集介绍及其处理 - 18 -
4.2.1 公开数据集 - 18 -
4.2.2 自研数据集 - 19 -
4.2.3 数据预处理 - 19 -
4.3 目标检测框架搭建 - 23 -
4.3.1 代码主要流程 - 23 -
4.3.2 前端展示设计 - 24 -
4.4 YOLOv3轻量化验证 - 26 -
4.4.1 模型剪枝 - 26 -
4.4.2 模型量化 - 26 -
4.5 YOLOv3泛化性增强验证 - 27 -
4.6 YOLOv3训练超参数筛选验证 - 30 -
4.7 算法改进结论 - 31 -
5 总结与展望 - 32 -
参考文献 - 33 -
致 谢 - 35 -
1.3 本文研究内容
综上,本课题“YOLOv3改进算法在道路裂缝检测上的研究与应用”旨于针对基于目标检测的深度学习算法于道路裂缝检测上的具体应用,面向实际部署时的设备资源受限性和场景变化性问题,分别进行YOLOv3在轻量化和泛化性方面的改进,最终在公开数据集和自研数据集上进行测试,并验证本课题方法的有效性。
本论文的各章节安排如下:
第一章绪论,简要阐述本课题的研究背景,并对本课题“基于深度学习的道路裂缝检测”的相关知识进行阐述,其中着重介绍了卷积神经网络和YOLOv3目标检测模型,最后进行了本课题的研究目标和研究内容总结以及本文各章节内容安排。
第二章对本课题YOLOv3的两大改进方向——轻量化和泛化性增强,分别进行相关技术的综述。
第三章则针对本课题的具体实现方案进行详细介绍。具体的,本课题“YOLOv3改进算法在道路裂缝检测上的研究与应用”主要从三个技术点对裂缝检测应用提供端到端的性能提升:数据集处理、模型搭建和改进技术以及超参数筛选。特别的,模型搭建和改进技术包含了对YOLOv3模型的轻量化和泛化性增强的两方面改进,分别使用了模型压缩和数据增强的方法。
第四章则进行本课题具体实现方法的实验总结和分析。本章将从定量和定性两个方面展开,除了改进效果展示以外,还将进行“消融实验”和“用例分析”,对本课题设计的变量因素进行变化并重复实验,分析不同因素对“YOLOv3改进算法在道路裂缝检测上的研究与应用”结果的影响。
第五章对本课题的工作总结与对未来改进方向进行展望,对本课题的工作进行了总结,对本课题的不足进行回顾,并对未来的改进方向进行展望。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'dLookLabeled.ui'
#
# Created by: PyQt5 UI code generator 5.8.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_dLookLabeled(object):
def setupUi(self, dLookLabeled):
dLookLabeled.setObjectName("dLookLabeled")
dLookLabeled.resize(800, 660)
self.centralwidget = QtWidgets.QWidget(dLookLabeled)
self.centralwidget.setObjectName("centralwidget")
self.label_img = QtWidgets.QLabel(self.centralwidget)
self.label_img.setGeometry(QtCore.QRect(20, 20, 500, 500))
self.label_img.setObjectName("label_img")
self.list_choose = QtWidgets.QListWidget(self.centralwidget)
self.list_choose.setGeometry(QtCore.QRect(530, 20, 251, 521))
self.list_choose.setTextElideMode(QtCore.Qt.ElideLeft)
self.list_choose.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem)
self.list_choose.setObjectName("list_choose")
self.bLookOrigin = QtWidgets.QCommandLinkButton(self.centralwidget)
self.bLookOrigin.setGeometry(QtCore.QRect(530, 550, 222, 48))
self.bLookOrigin.setObjectName("bLookOrigin")
dLookLabeled.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(dLookLabeled)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
dLookLabeled.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(dLookLabeled)
self.statusbar.setObjectName("statusbar")
dLookLabeled.setStatusBar(self.statusbar)
self.retranslateUi(dLookLabeled)
QtCore.QMetaObject.connectSlotsByName(dLookLabeled)
def retranslateUi(self, dLookLabeled):
_translate = QtCore.QCoreApplication.translate
dLookLabeled.setWindowTitle(_translate("dLookLabeled", "查看已标注数据"))
self.label_img.setText(_translate("dLookLabeled", "您还没有标注数据"))
self.bLookOrigin.setText(_translate("dLookLabeled", "查看原图"))