目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
课题背景和意义
近年来,海洋目标检测技术已经广泛应用于海产品捕捞、海洋生态系统健康评估和海洋生物多样性检测等领域。海洋目标检测相对困难,因为自然光在水下传播的过程中会被水中的悬浮微粒散射和被水吸收,导致人类所获取的水下图像清晰度较低。
实现技术思路
一、基于深度学习的海洋生物目标检测研究主题
我们以提升海洋生物目标检测效率为目的,对水下图像和海洋生物检测网络两部分展开研究。首先系统研究了海洋生物目标检测网络的预处理部分,提出了一种适用于水下图像的基于多尺度Retinex的图像增强算法,有效地解决了水下图像蓝绿色色偏等问题,并且针对YOLOv5s网络模型尺寸大、训练速度慢等问题,设计了一种基于注意力机制的轻量化网络,该网络不仅能够降低模型的大小,还能保证较高的检测精度。
二、水下图像处理算法的研究
2.1Retinex算法
Retinex理论是由视网膜Retina和大脑皮层Cortex所组成。该理论世界本身都是无色的,能看到多彩世界的原因是每个物体都被光源所照射,由物体本身反射到人眼形成图像。物体反射的颜色与光的波长有密切联系,每一个颜色都由红绿蓝三原色所组成。在SSR算法中,可调参数有限,只有通过调节优化算法中的参数σ来改变图像增强的程度。σ过大时,增强后图像的色彩较为鲜艳,保真度较好,目标细节较为模糊;σ过小时,增强后的图像目标细节保持的较好,但是保真度较差,如下图所示。可以看到,SSR算法很难使色彩保真度和细节清晰度同时存在,存在一定缺陷。
2.2直方图均衡化算法
直方图均衡化(HistogramEqualization,HE)算法在图像增强算法中十分常见,它是将水下图像通过非线性拉伸使得像素值均匀分布,以达到水下图像对比度增强的效果。HE算法所采取的方法是对图像全局对比度进行调整来提升对比度,但未考虑图像局部对比度,所以对于一些线条类图像的增强效果较差。经过AHE算法增强后的图像局部对比度有所提升,但是图像局部对比度过度提升,以及放大图像中的噪声信息等问题。针对AHE算法过度放大噪声信息的缺点,提出一种对比度受限的自适应直方图均衡化算法(CLAHE)。经过CLAHE算法增强后的水下图像直方图分布较为均匀,并且没有局部曝光。
2.3暗通道去雾算法
在自然场景中,当存在雾霾、烟雾或雾气等大气散射物质时,图像会受到散射和吸收的影响变得模糊不清,细节丢失,对比度降低。暗通道去雾算法旨在通过分析图像中的暗通道来恢复原始场景的清晰度和对比度。但是该算法在处理例如高对比度图像或存在大面积均匀雾霾的图像存在很大的局限性。
非物理模型(直方图均衡化)的图像增强算法是通过对图像中的像素点进行处理从而达到增强的目的;物理模型(Retinex算法、暗通道去雾)的图像增强算法是利用水下图像成像模型反演出水下图像的衰退过程,从而可以获得未衰退的水下图像。基于物理模型的图像增强算法适用性较高。
图像处理部分代码如下所示:
三、基于深度学习的目标检测算法
YOLOv5介绍
在一个深度学习网络中,通常包含不同的卷积模块、池化层以及激活函数等对水下图像中不同的语义信息进行学习和特征提取,YOLOv5网络在进行特征提取时会生成多个尺度的网络来预测不同尺寸的大中小目标。通过对数据集进行图像增强和优化网络结构来达到实时检测海洋生物的目的。
1、输入端
YOLOv5的输入端采用了Mosaic数据增强算法。该算法借鉴2019年的CutMix数据增强算法,与CutMix不同的是,Mosaic使用四张图像,而CutMix只使用了两张图像,并对这些图像随机缩放、裁剪、排布,拼接成一副新图像。
2、Backbone
Backbone指的是负责进行特征提取的主干特征提取网络,并传给后续网络 进行分类和定位目标位置,YOLOv5使用CSPDarknet作为Backbone,它的主要 构成是Focus结构和CSP结构。
YOLOv5网络选取CSPDarknet作为Backbone,对输入图像的特征信息进行特征提取,解决了由于梯度信息重复导致的计算复杂度增大的问题,通过Focus结构和CSP结构的组合将梯度信息集中到了特征中,不仅减少了网络参数量,还保证了检测精度。部分代码如下所示:
import torch
import torchvision.models as models
# 加载YOLOv5模型
def load_yolov5_model():
model = torch.hub.load('ultralytics/yolov5', 'custom', path='yolov5_weights.pt')
return model
# 特征提取函数
def extract_features(image, model):
# 图像预处理
# 在此处添加图像预处理代码,例如调整大小、归一化等
# 特征提取
features = model(image)
# 获取特征张量
feature_tensor = features.tensor
return feature_tensor
# 加载YOLOv5模型
yolov5_model = load_yolov5_model()
# 加载输入图像
input_image = torch.randn(1, 3, 416, 416) # 假设输入图像大小为 416x416
# 特征提取
features = extract_features(input_image, yolov5_model)
# 显示特征张量的形状
print(features.shape)
3、Neck
在YOLOv5网络中,Neck位于Backbone之后,主要作用是为了将Backbone提取到的特征信息更好的利用。Neck也位于Head之前,主要作用是将特征信息进行压缩和进一步融合,最终能够在Head进行精准的定位和分类。随着神经网络的不断发展,越来越多优秀的Neck结构被提出。其中,SPP、FPN、PAN等结构目前来说应用相对广泛。
海洋生物目标检测实现效果
将YOLOv5s的Backbone用以上三种轻量化网络替换,Backbone为ShuffleNet的轻量化网络记为S_YOLOv5s,Backbone为MobileNet的轻量化网络记为M_YOLOv5s,Backbone为GhostNet的轻量化网络记为G_YOLOv5s,将不同主干网络训练600个轮次后对比结果,结果如下表所示。由此可知,S_YOLOv5s网络在其他轻量化网络中表现最好,在检测精度最高的同时,模型尺寸最小,推理时间也最快。该网络不仅能够减小模型大小,还能保证检测精度。
为了进一步提升精度,使其达到检测精度,满足精度与速度平衡,设计出基于注意力机制的轻量化模型,将SE注意力模块、ECA注意力模块和CBAM注意力模块嵌入至YOLOv5s模型的同一位置,改进后的算法模型参数最小,轻量化效果最佳,每张图片的推理速度最快,检测精度也最好。满足检测速度和精度平衡的要求。经过600个轮次后收敛,由模型训练过程曲线收敛图可知在达到了减小模型尺寸的同时,保证检测精度的目的。
为了验证YOLOv5s网络、轻量化S_YOLOv5s网络和基于注意力机制的轻量化S_CYOLOv5s网络的实际检测效果,分别将三种网络训练生成的最佳权重文件对随机选取的194张水下生物图像进行测试。YOLOv5s网络虽然有着较高的检测率,但是模型较大,推理时间较慢,不利有海洋生物的实时检测。轻量化后的S_YOLOv5s网络虽然减小了模型尺寸,但准确率不高。而基于注意力机制的轻量化S_CYOLOv5s网络不仅模型尺寸较小,而且检测精度也较高,满足网络检测精度和速度的平衡。