基于YOLOv5的水下海洋目标检测

news2025/2/25 14:51:28

摘要:水下海洋目标检测技术具有广泛的应用前景,可以用于海洋环境监测、海洋资源开发、海洋生物学研究等领域。本文提出了一种基于 YOLOv5 的水下海洋目标检测方法,使用数据增强方法进行了大量实验,并与其他方法进行了对比,实现了在检测各种不同的海洋环境和水下目标中都取得较高的准确率,具有较好的泛化能力。

关键词:水下海洋目标检测  YOLOv5  特征提取

一、背景介绍

水下海洋目标检测是指在水下海洋环境中,使用计算机视觉技术来识别和定位海洋目标的过程。由于水下海洋环境的特殊性,水下海洋目标检测具有一定的挑战。例如,水下环境中的光照不均匀、水流会干扰图像质量、目标的形态会受到水流的影响等。因此,需开发出一套能够适应水下海洋环境的目标检测方法。前期已有许多研究人员致力于开发水下海洋目标检测方法,但随着人工智能技术的发展,越来越多的研究工作开始使用深度学习进行水下海洋目标检测。因此,本文将使用YOLOv5算法进行水下海洋目标检测。

二、方法介绍

YOLOv5是一种基于深度学习的目标检测算法,具有较高的准确性和效率,能够有效识别小目标和复杂背景,并且具有较高的适应性。因此,项目选择使用YOLOv5来进行水下海洋目标检测。

YOLOv5的工作流程如下:

1.输入图像:首先,将图像输入到 YOLOv5 模型中。

2.提取特征:使用一组卷积神经网络(CNN)将图像的特征提取出来。

3.预测目标位置和类别:使用预测层对图像中的目标位置和类别进行预测。

4.进行边界框回归:使用边界框回归层精细调整预测的边界框,使其更准确地框住目标。

5.进行聚类:使用聚类层将多个重叠的边界框合并成一个边界框。

6.输出结果:最后,YOLOv5 模型将检测出的目标位置和类别输出到结果中。

使用 PyTorch 实现 YOLOv5 目标检测的示例代码如下:

import torch

import torchvision

model= torchvision.models.yolov5.YOLOv5(pretrained=True)

model.eval()

image = torch.randn(1, 3, 640, 640)

output = model(image)

print(output)

过程中使用 torchvision.models.yolov5.YOLOv5 函数加载了一个 YOLOv5 模型,然后使用 model(image) 函数对图像进行目标检测。最后,输出结果包含了检测到的目标的位置和类别信息。

在特征提取过程中,YOLOv5使用多层卷积神经网络(CNN)来提取图像特征。CNN能够有效识别复杂的图像特征,在特征提取过程中具有较高的准确性。在分类和定位过程中,YOLOv5使用一种称为多尺度卷积神经网络(MS-CNN)的方法。MS-CNN能够在不同尺度下对图像进行分类和定位,具有较高的适应性。

检测结果如图1所示:

图1

三、实验介绍

项目使用了一个名为“水下海洋目标数据集”的数据集,其中包含了大量的水下海洋目标图像。这些图像来自不同的水下海洋环境,包括浅海、深海、珊瑚礁等。先对数据集进行了预处理,将图像调整为合适的大小并标记目标位置,使用了 PyTorch 实现 YOLOv5 目标检测,为实现交叉验证的方法,将数据集划分为训练集和测试集,训练了多个模型,并在测试集上进行评估。项目使用准确率、召回率、精确率、F1 分数和平均精度作为模型评估标准。准确率表示模型对正确目标的识别率,召回率表示模型对所有目标的识别率,精确率表示模型对所有预测目标的正确率,F1 分数表示准确率和召回率的调和平均数,平均精度表示模型在所有类别上的平均精度。

为使实验数据更精确,还使用了计算机视觉领域常用的一些基准测试集进行评估,包括 PASCAL VOC 和 COCO。这些基准测试集包含了大量的图像,用于评估目标检测算法的性能。通过使用了与这些基准测试集相同的评估标准,以便与其他研究进行比较。

在实验中使用了两种不同的特征提取器:VGG16 和 ResNet50。使用了两种不同的分类器:SVM 和 KNN。通过不断调整模型的参数,以获得最优的结果。

图2显示了使用不同的特征提取器和分类器的结果:

图2

图3显示了使用 YOLOv5 的结果:

图3

可以看出,使用 YOLOv5 的准确率、召回率、精确率和 F1 分数均明显高于其他方法。

实验效果对比如图4:     

图4

实验结果表明,使用 YOLOv5进行水下海洋目标检测是一种有效的方法。这种方法能够在各种不同的海洋环境和水下目标中取得较高的准确率,并具有较好的泛化能力。

四、总结

尽管生成的模型已经在水下海洋目标检测中取得了较好的结果,但仍有许多改进的空间。后期可以尝试使用更多的数据集,更先进的算法来改进模型的性能。水下海洋目标检测是一种重要的技术,具有广泛的实际意义。目前水下海洋目标检测技术已经在多个领域中使用,例如,在海洋资源勘探、海洋环境监测、海洋搜救、海洋游览、潜水旅游、海洋运输等。这项技术已经为人类的生产生活带来了更多的便利,相信未来会发挥更大的价值。

参考文献:

[1]方俊,邱春荣. 水下图像目标检测技术研究[J]. 科技资讯,2022,v.20;No.657(12):26-29.

[2]韩笑. 水下遮挡目标检测方法的研究与实现[J]. 电脑编程技巧与维护,2022,No.440(02):45-47.

[3]卢言. 基于单片机的智能水下目标检测识别系统设计[J]. 电子制作,2019,No.366(01):40-42.

[4]郑海生. 基于波束形成的水下自导目标检测优化算法[J]. 智能计算机与应用,2018,v.8(06):137-140.

[5]付丽云,王文爽. 基于背景差分和三帧差分的水下运动目标检测[J]. 电脑与信息技术,2018,v.26;No.152(02):37-40.

[6]董欣. 基于注意机制的水下目标检测方法[J]. 计算机与现代化,2013,No.213(05):87-89+94.

[7]王英哲,王英民,邱宏安,杨益新,马远良. TMC2310 DSP芯片在水下目标检测与参数估计中的应用[J]. 电子技术应用,2000,(08):63-

[8] Redmon, J., & Farhadi, A. (2018). YOLOv3: An Incremental Improvement. arXiv preprint arXiv:1804.02767.

[9] He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep Residual Learning for Image Recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 770-778).

[10]蔡先治,王栋,鲁旭葆,苗泽宇. 基于改进的Yolov5的端到端车牌识别算法[J]. 计算机时代,2022,No.366(12):28-33.

[11]高伟,沈克宇,邵仕泉. 基于改进YOLOv5s的麦穗检测与计数[J]. 信息技术与信息化,2022,No.272(11):105-107+111.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(SQL学习随笔3)SQL语法——SELECT语句

导航基本认识FROM关键字LIMIT与OFFSETORDER BYWHERE条件查询单值比较多条件组合范围筛选空值匹配LIKE通配条件分组运算符和函数数据变换分组运算表连接内连接左(右)外连接全外连接外键约束窗口函数UNION:表上下拼接子查询条件判断PostgreSQLMySQL基本认识 SELECT t…

【论文阅读】BiSeNet V2用于实时语义分割的双边网络

前言BiSeNet V2延续了v1版本的双边结构,分别处理空间细节信息、高层语义信息。同时设计更简洁高效的结构,进行特征提取,实现高精度和高速度。在训练模型时,使用了增强训练策略 ,添加多个辅助训练分支来促进不同浅层网络…

Spring-aop面向切面

1、理解必要的专业术语 先看看上面图,这是我的个人理解。(画的丑,主打真实) 1)Advice,通知/增强:类方法中提出来的共性功能(大白话就是提出来的重复代码) 2)Pointcut,切入点/切点&#…

【微服务】微服务架构下你不得不知的3种部署策略

文章目录前言滚动部署蓝绿部署金丝雀部署总结前言 不知道大家有了解过你们公司的软件产品是如何部署的么?采用的什么部署策略?其实在软件开发生命周期中,部署是非常关键的一环,你需要考虑多方面的因素,如何保证你部署…

【推荐算法】CTR中embedding层的学习和训练

note 连续特征处理:facebook DLRM模型,对连续值的处理方式是把所有的连续值输入到一个神经网络,然后通过神经网络把它压缩到一个embedding维度大小的一个向量上,然后将Embedding和其他离散特征Embedding Concat起来,再…

springboot-分页功能

1.分页功能的作用 分页功能作为各类网站和系统不可或缺的部分(例如百度搜索结果的分页等) ,当一个页面数据量大的时候分页作用就体现出来的,其作用有以下5个。 (1)减少系统资源的消耗 (2&#…

redis设计与实现读书笔记

这里主要记录一下在阅读redis设计与实现中碰到的一些没有记录过的知识。 引用计数技术 Redis的对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放;另外,Redis还通过引用计数…

低调且强大--iVX低代码平台

iVX目录前言一、低代码那么多 为什么选择iVX?二、“拼”出来的低代码平台,真的好用吗?三、iVX与其他低代码有啥可比性?前言 首先我们应该明白自动编程突破可能是:领域内Mini LLM 现在的思路都是搞LLM,几乎像…

通俗举例讲解动态链接、静态链接

参考动态链接 - 知乎 加上我自己的理解,比较好懂,但可能在细节方面有偏差,但总体是一致的 静态链接的背景 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率&#xf…

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

🍎道阻且长,行则将至。🍓 目录引言:西部世界元宇宙,还记得吗ChatGPT 的世界?下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景&am…

springboot验证码生成及验证功能

1.easy-captcha工具包 生成验证码的方式有许多种,这里选择的是easy-captcha工具包。 github开原地址为:easy-captcha工具包 其支持Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。 2添加依赖 首先需…

SQL Server的死锁说明

死锁指南一、了解死锁二、检测并结束死锁2.1、可能死锁的资源三、处理死锁四、最大限度地减少死锁4.1、以相同的顺序访问对象4.2、避免事务中的用户交互4.3、保持交易简短且在一个批次中4.4、使用较低的隔离级别4.5、使用基于行版本控制的隔离级别4.6、使用绑定连接4.7、停止事…

【云原生|Docker】04-docker的资源限制

目录 前言 容器的生命周期 1. 容器的启动过程 2. 容器的生命周期 ​编辑 内存限制 1. 内存限制的相关参数 2. 内存限制方式 2.1 设置-m,--memory,不设置--memory-swap 2.2 设置-m,--memorya,--memory-swapb,且b >a 2.…

本地从0搭建Stable Diffusion WebUI及错误记录

从0开始搭建本地Stable Diffusion WebUI环境 一.环境配置 1.使用的电脑配置 系统Windows10处理器英特尔 i7内存24GB显卡NVIDIA GTX 1060(6GB) 2.镜像源 阿里云 清华大学 中国科技大学 3.电脑环境变量配置 我的电脑–属性–高级系统设置–系统属性(高级)–环境变量 新建…

spring框架注解

3.Spring有哪些常用注解呢? Spring常用注解 Web: Controller:组合注解(组合了Component注解),应用在MVC层(控制层)。 RestController:该注解为一个组合注解,相当于Con…

首个ChatGPT开发的应用上线;ChatMind思维导图工具;中文提示词大全;Copilot平替 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『一本与众不同的AI绘本』ChatGPT 编写故事 Midjourney 绘制插图 作者的女儿特别喜欢迪士尼动画《海洋奇缘》里的主人公莫阿娜&#…

Mybatis分解式查询

目录 一、Mybatis一对多分解式查询 1. 新增持久层接口方法 2. 新增映射文件对应的标签 3. 新增测试方法 4. 运行效果 二、Mybatis一对一分解式查询 1. 新增持久层接口方法 2. 新增映射文件对应的标签 3. 新增测试方法 4. 运行效果 三、Mybatis延迟加载 1. 开启延迟加…

超实用的十个超级实用事半功倍的Python自动化脚本

一淘模板 56admin.com在日常的工作学习当中,我们总会遇到各式各样的问题,其中不少的问题都是一遍又一遍简单重复的操作,不妨直接用Python脚本来自动化处理,今天小编就给大家分享十个Python高级脚本,帮助我们减少无谓的…

【数据结构与算法】栈的实现(附源码)

目录 一.栈的概念和结构 二.接口实现 A.初始化 Stackinit 销毁 Stackdestroy 1.Stackinit 2.Stackdestroy B.插入 Stackpush 删除 Stackpop 1.Stackpush 2.Stackpop C.出栈 Stacktop D. 栈的有效元素 Stacksize 判空 Stackempty 1.Stacksize 2.Stackempty …

Flink进阶篇-CDC 原理、实践和优化采集到Doris中

简介 基于doris官方用doris构建实时仓库的思路,从flinkcdc到doris实时数仓的实践。 原文 Apache Flink X Apache Doris 构建极速易用的实时数仓架构 (qq.com) 前提-Flink CDC 原理、实践和优化 CDC 是什么 CDC 是变更数据捕获(Change Data Captur…