当前位置: 首页 > news >正文

基于YOLOv8+PyQt5复杂场景下船舶目标检测系统

1. 应用场景

复杂场景下船舶目标检测系统的应用场景包括:
港口管理和安全:监控港口区域,确保船舶安全地进出港口,预防相撞事故的发生。
海洋交通监控:实时追踪海上交通流,并识别违规或异常航行行为,维护航线秩序。
海域安全巡逻:在国家边境或重要水域进行安全巡逻,识别非法入侵或可疑活动。
海洋环境保护:监测环境保护区内的船舶活动,防止非法捕捞和污染事件。
搜救行动:在海上搜救行动中快速识别和定位失事船只,提高搜救效率和成功率。
船舶流量和渔业管理:分析船只密集区域的船舶流量,对渔船进行监控和管理,保护渔业资源。

2. YOLOv8算法

为什么我应该使用 YOLOv8?

以下是您应该考虑将 YOLOv8 用于下一个计算机视觉项目的几个主要原因:● YOLOv8在COCO和Roboflow 100上测得的准确率很高。
● YOLOv8 具有许多开发人员方便的功能,从易于使用的 CLI 到结构良好的 Python 包。
● YOLO 周围有一个庞大的社区,围绕 YOLOv8 模型的社区也在不断壮大,这意味着计算机视觉圈子里有很多人在你需要指导时可以为您提供帮助。YOLOv8在COCO上实现了很高的准确性。例如,YOLOv8m模型 - 中等模型 - 在COCO上测量时达到50.2%的mAP。当针对Roboflow 100(专门评估各种任务特定域上的模型性能的数据集)进行评估时,YOLOv8的得分明显优于YOLOv5。本文后面的性能分析中提供了有关此内容的更多信息。此外,YOLOv8 中方便开发人员的功能也很重要。与其他模型相反,任务被拆分到您可以执行的许多不同 Python 文件中,YOLOv8 带有一个 CLI,使训练模型更加直观。这是对 Python 包的补充,该包提供了比以前的模型更无缝的编码体验。当您考虑使用模型时,YOLO 周围的社区值得注意。许多计算机视觉专家都知道 YOLO 及其工作原理,并且网上有很多关于在实践中使用 YOLO 的指导。尽管 YOLOv8 在撰写本文时是新的,但网上有许多指南可以提供帮助。以下是一些学习资源,您可以使用它们来提高您对 YOLO 的了解:
● YOLOv8 Model Card on Roboflow Models(Roboflow 模型上的 YOLOv8 模型卡)
● How to Train a YOLOv8 Model on a Custom Dataset(如何在自定义数据集上训练YOLOv8模型)
● How to Deploy a YOLOv8 Model to a Raspberry Pi(如何将YOLOv8模型部署到树莓派)
● Google Colab Notebook for Training YOLOv8 Object Detection Models(用于训练YOLOv8目标检测模型的谷歌Colab笔记本)
● Google Colab Notebook for Training YOLOv8 Classification Models(用于训练YOLOv8分类模型的谷歌Colab笔记本)
● Google Colab Notebook for Training YOLOv8 Segmentation Models(用于训练YOLOv8分割模型的谷歌Colab笔记本)
● Track and Count Vehicles with YOLOv8 and ByteTRACK(使用YOLOv8和ByteTRACK跟踪和计数车辆)让我们深入了解架构以及 YOLOv8 与以前的 YOLO 模型的不同之处。

2.1 YOLOv8检测网络

在这里插入图片描述

2.2 模型结构

如下图, 左侧为 YOLOv5-s,右侧为 YOLOv8-s。
在暂时不考虑 Head 情况下,对比 YOLOv5 和 YOLOv8 的 yaml 配置文件可以发现改动较小。
在这里插入图片描述
在这里插入图片描述

3. 软件界面功能

1. 可用于实时检测各类复杂场景种的船舶位置,并显示目标数量;
2. 支持图片、视频及摄像头进行检测,同时支持图片的批量检测;
3. 界面可实时显示目标位置、目标总数、置信度、用时等信息;
4. 支持图片或者视频的检测结果保存;

3.1 界面参数设置说明

在这里插入图片描述
置信度阈值:也就是目标检测时的conf参数,只有检测出的目标置信度大于该值,结果才会显示;
交并比阈值:也就是目标检测时的iou参数,只有目标检测框的交并比大于该值,结果才会显示;

IoU:全称为Intersection over
Union,表示交并比。在目标检测中,它用于衡量模型生成的候选框与原标记框之间的重叠程度。IoU值越大,表示两个框之间的相似性越高。通常,当IoU值大于0.5时,认为可以检测到目标物体。这个指标常用于评估模型在特定数据集上的检测准确度。

4. 数据集与训练

数据集为各类复杂场景下的船舶图片,并使用Labelimg标注工具对每张图片中的目标边框(Bounding Box)及类别进行标注。一共包含5090张图片,其中训练集包含4576张图片,验证集包含509张图片,测试包含5张图片。
该数据集是专为研究和解决复杂场景下船舶目标检测问题而设计。包含多样性丰富的环境,如交通繁忙的港口、船只密集的渔业区,以及船与岸边混合交通场景。与传统的船舶目标检测数据集不同,本数据集特意考虑了在实际应用场景中常见但在数据集中经常被忽视的问题。例如,船舶在图像或视频帧中不一定是主体,有时仅作为背景出现。此外,数据集还包括船只部分或完全被其他对象遮挡的情况。这些特点使得本数据集非常适用于开发和评估目标检测算法在复杂、多变和部分遮挡条件下的性能。数据集旨在推动船舶目标检测和相关领域的研究进展,以满足日益增长的实际应用需求,例如航海安全、渔业管理以及海洋环境保护等。

在这里插入图片描述
在这里插入图片描述
图片数据的存放格式如下,在项目目录中新建datasets目录,同时将检测的图片分为训练集与验证集放入Data目录下。
在这里插入图片描述
同时我们需要新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。YOLOv8在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml的具体内容如下:

train: E:\MyCVProgram\BoatDetection\datasets\Data\train
val: E:\MyCVProgram\BoatDetection\datasets\Data\valnc: 1
names: ['boat']

数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,batch参数用于调整训练的批次大小【根据内存大小调整,最小为1】,代码如下:

#coding:utf-8
from ultralytics import YOLO# 加载预训练模型
model = YOLO("yolov8n.pt")
# Use the model
if __name__ == '__main__':# Use the modelresults = model.train(data='D:\BoatDetection\datasets\Data\data.yaml', epochs=300, batch=4)  # 训练模型

4.1 训练结果评估

在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。YOLOv8在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss),在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:
在这里插入图片描述
本文训练结果如下:
在这里插入图片描述
PR曲线
在这里插入图片描述

5. 界面展示

在这里插入图片描述

6.检测结果识别

在这里插入图片描述

7. 结束语

以上便是博主开发的基于YOLOv8+PyQt5复杂场景下船舶目标检测系统的部分内容,由于博主能力有限,难免有疏漏之处,希望小伙伴能批评指正。关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

相关文章:

基于YOLOv8+PyQt5复杂场景下船舶目标检测系统

1. 应用场景 复杂场景下船舶目标检测系统的应用场景包括: 港口管理和安全:监控港口区域,确保船舶安全地进出港口,预防相撞事故的发生。 海洋交通监控:实时追踪海上交通流,并识别违规或异常航行行为&#x…...

Spring Boot | Spring Security ( SpringBoot安全管理 )、Spring Security中 的 “自定义用户认证“

目录 : Spring Boot 安全管理 :一、Spring Security 介绍二、Spring Security 快速入门2.1 基础环境搭建 :① 创建Spring Boot 项目② 创建 html资源文件③ 编写Web控制层 2.2 开启安全管理效果测试 :④ 添加 spring-boot-starter-security 启动器⑤ 项目启动测试 三…...

力扣经典150题第五十五题:逆波兰表达式求值

目录 题目描述和要求示例解释解题思路算法实现复杂度分析测试和验证总结和拓展参考资料 题目描述和要求 给你一个字符串数组 tokens,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式,并返回一个表示表达式值的整数。 注意: 有…...

C#队列(Queue)的基本使用

概述 在编程中&#xff0c;队列&#xff08;Queue&#xff09;是一种常见的数据结构&#xff0c;它遵循FIFO&#xff08;先进先出&#xff09;的原则。在C#中&#xff0c;.NET Framework提供了Queue<T>类&#xff0c;它位于System.Collections.Generic命名空间下&#x…...

预训练模型介绍

一、什么是GPT GPT 是由人工智能研究实验室 OpenAI 在2022年11月30日发布的全新聊天机器人模型, 一款人工智能技术驱动的自然语言处理工具 它能够通过学习和理解人类的语言来进行对话, 还能根据聊天的上下文进行互动,能完成撰写邮件、视频脚本、文案、翻译、代码等任务 二、 为…...

Pandas入门篇(三)-------数据可视化篇3(seaborn篇)(pandas完结撒花!!!)

目录 概述一、语法二、常用单变量绘图1. 直方图&#xff08;histplot&#xff09;2. 核密度预估图&#xff08;kdeplot&#xff09;3. 计数柱状图&#xff08;countplot&#xff09; 三、常用多变量绘图1.散点图(1) scatterplot(2)regplot 散点图拟合回归线(3)jointplot 散点图…...

SpringBoot中阿里OSS简单使用

官方文档:Java跨域设置实现跨域访问_对象存储(OSS)-阿里云帮助中心 1.pom中引入依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version> </dependency> 如…...

websocket简介

服务端推送消息给浏览器 WebSocket 教程 - 阮一峰的网络日志...

Linux的shell外壳

Shell外壳 在计算机领域&#xff0c;“shell”&#xff08;外壳&#xff09;是指一种用户界面&#xff0c;提供了访问操作系统服务的方式。Shell 是用户与操作系统之间的桥梁&#xff0c;它解释并执行用户输入的命令。 Shell 的主要功能包括&#xff1a; 命令解释&#xff1a…...

支付宝支付流程

第一步前端&#xff1a;点击去结算&#xff0c;前端将商品的信息传递给后端&#xff0c;后端返回一个商品的订单号给到前端&#xff0c;前端将商品的订单号进行存储。 对应的前端代码&#xff1a;然后再跳转到支付页面 // 第一步 点击去结算 然后生成一个订单号 // 将选中的商…...

打招呼得不到回复,跟头像还有关系?

现在很多人有个想法,那就是觉得某些公司是不是为了某些目的才往出发的招聘信息啊,其实他们并不需要招聘新员工。 目录 已读不回? 头像很重要 选择自己的精修照片 已读不回? 很有这种可能,但你细心观察会发现,的确有很多大公司,...

【网络原理】HTTPS 的工作过程

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…...

Python语言在地球科学中地理、气象、气候变化、水文、生态、传感器等数据可视化到常见数据分析方法的使用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台&#xff08;x86和arm&#xff09;&#xff0c;Python简洁的语法和对动态输入的支持&#xff0c;再加上解释性语言的本质&…...

【JVM】class文件格式,JVM加载class文件流程,JVM运行时内存区域,对象分配内存流程

这篇文章本来只是想讲一下class文件格式&#xff0c;讲着讲着越讲越多。JVM这一块吧&#xff0c;知识比较散比较多&#xff0c;如果深研究下去如死扣《深入理解Java虚拟机》&#xff0c;这本书很深很细&#xff0c;全记住是不可能的&#xff0c;其实也没必要。趁这个机会直接把…...

GPU系列(六)-NVIDIA GPU 驱动安装

1. 安装驱动 1.1 查看系统是否识别显卡 lspci | grep -i vga03:00.0 VGA compatible controller: NVIDIA Corporation GP102 [TITAN X] (rev a1) 0a:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. G200eR2 (rev 01) 识别出显卡为 NVIDIA 的 TITAN X。 …...

第十五届蓝桥杯总结

因为本人不是计院的&#xff0c;以后可能也不会打算法类的竞赛了&#xff0c;故作此总结&#xff0c;纪念我四个月的算法学习经历&#xff0c;还算是对算法有了一定的基础&#xff0c;碰运气拿下了湖北b组省二&#xff0c;个人感觉比赛题目没有第十四届难&#xff0c;感觉就是纯…...

Linux驱动开发——(八)Linux异步通知

目录 一、异步通知简介 二、信号处理 2.1 驱动程序中的处理 2.1.1 fasync_struct结构体 2.1.2 fasync操作函数 2.1.3 kill_fasync函数 2.2 应用程序中的处理 三、驱动代码 一、异步通知简介 异步通知的核心就是信号。信号类似于硬件上使用的中断&#xff0c;只不过信号…...

Docker知识点汇总表格总结

Docker容器给我的一个很直观的感受就是将项目以及中间件安装变得比较简单直接&#xff0c;运行维护起来也更方便。之前做的一些微服务项目也是用docker来部署&#xff0c;现在很多开源的项目也流行使用docker来部署&#xff0c;简化了很多手动安装和配置的步骤&#xff0c;将项…...

Golang中实现调用Windows API向指定目标发送ARP请求

简介 Go库中很多实现的arp都是支持osx/linux/bsd之类的&#xff0c; 但几乎没有支持windows的&#xff0c; 也试了一些方式&#xff0c; 目前还是选用调用windows的API&#xff0c; 记录一下这一次windows的API的调用经验。 实现 代码 package main/* #cgo CFLAGS: -I. #cgo …...

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…...

【设计模式】之模板方法模式

系列文章目录 【设计模式】之策略模式 【设计模式】之责任链模式 文章目录 系列文章目录 前言 一、什么是模板方法模式 定义 角色 二、为什么要使用模板方法模式 优点 缺点 三、案例 普通案例 模拟Servlet过程案例 总结 前言 今天给大家介绍23种设计模式中的模板方法模式&a…...

【系统架构师】-选择题(十一)

1、紧耦合多机系统一般通过&#xff08;共享内存&#xff09;实现多机间的通信。对称多处理器结构&#xff08;SMP&#xff09;属于&#xff08; 紧耦合&#xff09;系统。 松耦合多机系统又称间接耦合系统,—般是通过通道或通信线路实现计算机间的互连。 2、采用微内核的OS结构…...

前端开发攻略---介绍HTML中的<dialog>标签,浏览器的原生弹框。

1、演示 2、介绍 <dialog> 标签用于定义对话框&#xff0c;即一个独立的窗口&#xff0c;通常用来显示对话框、提示框、确认框等弹出式内容。在对话框中&#xff0c;可以包含文本、表单元素、按钮等内容&#xff0c;用户可以和这些内容进行交互。 3、兼容性 4、示例代码 …...

让外贸业绩翻倍的销售话术分享

业绩翻三倍的话术&#xff0c;今后无论你遇到挑剔、犹豫、理智的顾客&#xff0c;都能轻松搞定。点赞存起来慢慢看&#xff0c;以免找不到。 与客户有效沟通技巧5的20句金句 业绩翻 3 倍&#xff0c;今后无论你遇到挑剔、犹豫、理智的顾客&#xff0c;都能轻松搞定。点赞存起来…...

观测与预测差值自动变化系统噪声Q的自适应UKF(AUKF_Q)MATLAB编写

简述 基于三维模型的UKF&#xff0c;设计一段时间的输入状态误差较大&#xff0c;此时通过对比预测的状态值与观测值的残差&#xff0c;在相应的情况下自适应扩大系统方差Q&#xff0c;构成自适应无迹卡尔曼滤波&#xff08;AUKF&#xff09;&#xff0c;与传统的UKF相比&…...

虚拟数据中心

创建数据中心和连接宿主机 DRS:收集群集内所有主机和虚拟机的资源使用情况信息&#xff0c;并根据特定的运行状况给出建议或迁移虚拟机HA:如果一台主机出现故障&#xff0c;则该主机上运行的所有虚拟机都将立即在同一群集的其他主机上重新启动EVC:增强型vMotionVirtual SAN:集中…...

解决Blender导出FBX文件到Unity坐标轴错误的问题

发现Blender的模型导入到Unity里面有问题,简单研究了下发现是坐标系不同,Unity使用的是左手坐标系,Blender使用的是右手坐标系 。 下面直接将如何解决 首先忽略Blender的右手坐标系以及Z轴朝上的事&#xff0c;依照unity坐标系情况修改模型物体的旋转&#xff0c;以Blender猴…...

基于微信小程序的校园二手闲置物品交易平台的设计与实现

基于微信小程序的校园二手闲置物品交易平台的设计与实现 “Design and Implementation of a Campus Second-Hand Marketplace Platform based on WeChat Mini Program” 完整下载链接:基于微信小程序的校园二手闲置物品交易平台的设计与实现 文章目录 基于微信小程序的校园二…...

java中多线程的3种实现方法

1.继承Thread类 优点&#xff1a;代码简单&#xff0c;可以直接使用Thread类里面的方法。 缺点&#xff1a;扩张性较差&#xff0c;应为在java中&#xff0c;一个类只能继承一个父类。 2.实现Runnable接口 3.实现Callable接口 2和3的优缺点是一样的 优点&#xff1a;扩展性强&…...

【Docker】docker compose服务编排

docker compose 简介 Dockerfile模板文件可以定义一个单独的应用容器&#xff0c;如果需要定义多个容器就需要服务编排。 docker swarm&#xff08;管理跨节点&#xff09; Dockerfile可以让用户管理一个单独的应用容器&#xff1b;而Compose则允许用户在一个模板&#xff08…...

网站建设怎么弄/厦门seo推广

以下给初次使用hadoop的朋友&#xff0c;快速搭建并启动hadoop&#xff0c;记住需要修改的东西分别是“三个site&#xff0c;四个env&#xff0c;一个slaver”&#xff0c;所有配置文件都在$HADOOP_HOME/etc/hadoop/下 三个site.xml core-site.xml fs.defaultFS&#xff1a;nam…...

北京市建委官方网站/友链

一、问题描述 在使用networkx进行图数据可视化时报错如题_AxesStack object is not callable while using networkx to plot。其中matplotlib为3.6.2版本&#xff0c;networkx版本为2.7。 import matplotlib.pyplot as plt import networkx as nx plt.figure(figsize(15,14))…...

网站权重最高/长沙网站seo推广公司

1.springcould 简介 Spring Cloud是一个含概多个子项目的开发工具集,集合了众多的开源框架,他利用了Spring Boot开发的便利性实现了很多功能,如服务注册,服务注册发现,负载均衡等.Spring Cloud在整合过程中主要是针对Netflix(耐非)开源组件的封装. NetFlix 是美国的一个在线视…...

有什么网站可以做问卷调查/推广关键词外包

2019独角兽企业重金招聘Python工程师标准>>> 一、准备工作&#xff1a; 第一步&#xff1a;下载erlang http://www.erlang.org/downloads/19.3 第二步&#xff1a;下载rabbitMQ http://www.rabbitmq.com/download.html rabbitMQ安装完成后&#xff0c;打开rabbit…...

东营企业网站制作/网络服务器多少钱一台

问题描述;研发同事反应MySQL数据库有锁&#xff0c;检查innodb_trx时&#xff0c;发现有很多长时间未结束的空事务。这些事务的trx_mysql_thread_id都为0&#xff0c;因此不能通过kill id 的方式强制关闭这些长时间未结束的僵尸事务。SELECTtrx_mysql_thread_id, trx_id, trx…...

wordpress 图片自适应/营销qq下载

上DEMO a {key1: [1, 2], key2: {key4: 11}, key3: [1, 2]} console.info(1,a) a.key2.key4 22 console.info(2,a) 通过浏览器打开DEMO&#xff0c;看浏览器的终端&#xff0c;发现 第一次console竟然和第二次的console的值一样&#xff0c;都是已修改后的值&#xff0c;22。…...