毕业设计:基于计算机视觉的海洋生物目标检测系统研究 算法

目录

前言

课题背景和意义

实现技术思路

一、算法理论基础

1.1 卷积神经网络

1.2 目标检测算法

二、 数据集

2.1 数据集

2.2 数据扩充

三、实验及结果分析

3.1 实验环境搭建

3.2 模型训练

最后


前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

    选题指导:

        最新最全计算机专业毕设选题精选推荐汇总

        大家好,这里是海浪学长毕设专题,本次分享的课题是

       🎯基于计算机视觉的海洋生物目标检测系统研究

课题背景和意义

       海洋生物的多样性和生态健康对全球生态系统具有重要影响,然而,随着人类活动的增加,海洋生物的栖息地正在遭受威胁。有效的海洋生物目标检测技术不仅有助于科研人员监测海洋生态变化,还有助于渔业管理和保护工作。因此,开发基于深度学习的海洋生物目标检测系统,能够提高对海洋生物的监测效率和准确性。该研究具有重要的理论价值和实际应用意义,有助于推动海洋保护、资源管理和可持续发展。

实现技术思路

一、算法理论基础

1.1 卷积神经网络

       卷积神经网络主要通过卷积层和池化层提取输入图像的特征,将低层次特征转变为高层次特征,并结合全连接层、激活函数等组成完整的结构。卷积神经网络在训练时采用前向传播和反向传播对网络参数进行更新,以下介绍卷积神经网络结构中的主要组成部分。卷积层具有不同大小的卷积核,卷积操作通过卷积核在输入数据上按位相乘后求和。卷积按照从左到右、从上到下的步骤在输入数据上不断滑动,滑动的距离为卷积的步长,最终得到的结果是卷积提取的特征。假设卷积核大小为3×3,输入数据的大小为4×4,卷积层的步长为1。

毕业设计:基于计算机视觉的海洋生物目标检测系统研究 算法

       池化又称为下采样,主要将尺寸较大的图像变成尺寸较小的图像,通常在卷积操作之后进行池化操作。常见的池化操作包括最大池化和平均池化。假设有一个4×4大小的特征图,将其平均分成四个模块,分别计算每个模块中的最大值或平均值组成新的特征图。池化操作减少了计算量和参数量。此外,随机池化是根据概率分布随机选取值。

       全连接层将之前提取的特征图转变为一维的特征向量,将其降维到输出的类别数,得到最终的类别概率。引入激活函数主要是给网络引入非线性成分,增强网络的特征提取能力。如果不引入非线性成分,卷积神经网络整体表现为线性计算,此时网络不能很好地提取目标特征。常用的激活函数包括ReLU和Softmax。ReLU的结果在输入为负数时恒为0,输入为正数时结果为其本身,简化了前向传播。在反向传播时,负数和正数的梯度分别恒为0和1,加快了网络的训练速度。然而,当输入为负数时,ReLU的结果及其梯度都为0,导致神经元无法被激活,网络参数无法更新。

1.2 目标检测算法

       双阶段目标检测网络的主要优点在于检测精度较高,典型的双阶段目标检测网络包括Faster R-CNN,该网络在目标检测中扮演了重要的角色。在开展海洋生物目标检测研究时选择的基础网络为Faster R-CNN,下面将着重介绍Faster R-CNN,并在此基础上进行实验,验证图像增强与标签增强能够提升目标检测的精度。Faster R-CNN网络主要分为三个部分,分别为特征提取网络、RPN网络以及Fast R-CNN检测网络。

       特征提取网络对输入图像进行特征提取生成特征图。其次,将特征提取网络得到的特征图作为RPN网络的输入,通过滑动窗口在特征图的每个像素点上生成先验框(anchor),然后对其分别进行区域得分与区域边框回归操作,生成一批候选框,使用非极大值抑制(Non Maximum Suppression, NMS)滤除不符合条件的候选框以获得剩余候选框。最后,将RPN网络得到的不同尺寸的候选框映射到特征图上并进行截取,通过RoIPool操作得到统一尺寸大小的特征图,再将特征图展平为RoI特征向量,并通过全连接层完成目标分类得分与边框回归。

       Faster R-CNN提出RPN网络获取候选框,该网络在获取候选框的过程中花费时间少,生成候选框的质量较高。将RPN网络中获得的候选框与特征图送入Fast R-CNN中的RoIPool层进行映射,然后对特征图进行截取,将截取的特征图固定为7×7的大小。特征图展平为一维向量,通过全连接层实现对目标的分类与边框回归,分别输出目标的概率分数以及目标的边框回归偏移量,通过偏移量对候选框位置进行调整以使定位更准确。

       在RPN网络中获得的候选框大小不一致,因此截取到的特征图大小也不一致,导致网络训练得到的参数不统一。需要RoIPool层将特征图固定为相同大小,将其展平后输入全连接层,从而实现端到端网络的目的。RoIPool层实现的主要步骤包括:1.将RPN得到的候选框映射回特征图,获得截取后的特征图;2.将截取到的特征图划分为与特征图固定大小相同数量的块;3.对划分后的块使用最大池化进行处理。通过上述操作,尽管截取特征图的大小不同,也能够使特征图输出为相同大小。损失函数在网络训练过程中通过反向传播对网络权重参数进行更新。

二、 数据集

2.1 数据集

       图像采集采用自主拍摄和互联网采集相结合的方式,自主拍摄通过潜水或水下无人机等设备获取真实环境中的海洋生物图像,保证数据的多样性和真实性。互联网采集则可以快速获得大量不同种类和不同场景下的海洋生物图像,从而丰富数据集,提高模型的泛化能力。使用标注工具如LabelImg进行手动标注。标注过程中对图像中的海洋生物进行准确的框选并标注其类别,制定详细的标注规范以确保一致性和准确性。

2.2 数据扩充

       行数据集的划分与扩展。通常将数据集划分为训练集、验证集和测试集,常见的比例为70%、15%和15%。在数据扩展方面,通过图像增强技术,如旋转、翻转、缩放和颜色调整等,对训练集进行扩展,以增加数据的多样性,从而提高模型的鲁棒性和泛化能力。这些步骤共同构成高质量的海洋生物数据集,为后续的模型训练奠定坚实基础。

三、实验及结果分析

3.1 实验环境搭建

       训练与测试任务需要相应的软硬件平台来实现。软件方面,基于Windows 10操作系统,采用Pytorch 1.13.0深度学习框架构建网络模型结构,以支持模型的设计与训练。这一平台组合提供了强大的计算能力和灵活性,确保了深度学习任务的顺利进行。

3.2 模型训练

       Faster R-CNN通过区域建议网络(RPN)生成候选框,该网络在获取候选框过程中具有较高的效率和质量。RPN利用滑动窗口在特征图上生成多个先验框(anchor),并为每个先验框计算得分和边框回归量。生成的候选框随后将被送入Fast R-CNN进行进一步处理。

import torchvision.models.detection as detection

# 创建Faster R-CNN模型,使用ResNet50作为特征提取网络
model = detection.fasterrcnn_resnet50_fpn(pretrained=True)
model.train()  # 切换到训练模式

       将RPN生成的候选框与特征图送入Fast R-CNN中的RoIPool层进行映射。RoIPool层将不同大小的特征图截取并调整为统一的7×7大小。通过最大池化处理特征块,使得即使输入特征图大小不一致,输出特征图仍能保持统一。这一过程为后续的全连接层提供了标准化的输入。将RoIPool层输出的特征图展平为一维向量,并通过全连接层进行目标分类和边框回归,输出目标的概率分数和边框回归偏移量。通过这些偏移量,调整候选框的位置,以提高定位精度。损失函数在训练过程中通过反向传播算法更新网络权重参数,从而优化模型。

import torch.nn as nn

# 定义全连接层
fc1 = nn.Linear(in_features=7*7*512, out_features=1024)
classifier = nn.Linear(1024, num_classes)  # num_classes为目标类别数

# 前向传播
x = pooled_features.view(pooled_features.size(0), -1)  # 展平
x = nn.ReLU()(fc1(x))  # 激活函数
scores = classifier(x)  # 分类得分

       训练模型时,通过Adam优化算法调整模型参数,以获得最佳的训练效果。评估指标如平均精度(AP)和均值平均精度(mAP)用于衡量模型的性能。Precision-Recall曲线及其包围的面积表示AP值,其中TP、FP和FN的定义有助于进一步分析检测结果的准确性。

from torch.optim import Adam

optimizer = Adam(model.parameters(), lr=0.001)  # 设置学习率
# 训练循环
for epoch in range(num_epochs):
    optimizer.zero_grad()
    outputs = model(images)  # 模型预测
    loss = compute_loss(outputs, targets)  # 计算损失
    loss.backward()  # 反向传播
    optimizer.step()  # 更新参数

海浪学长项目示例:

最后

我是海浪学长,创作不易,欢迎点赞、关注、收藏。

毕设帮助,疑难解答,欢迎打扰!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值