基于YOLOv8的船舶目标检测系统(Python源码+Pyqt6界面+数据集)

                                                                博主简介

AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制造,工业项目落地经验丰富;

原创自研系列, 2024年计算机视觉顶会创新点

《YOLOv8原创自研》

《YOLOv5原创自研》

《YOLOv7原创自研》 

 

23年最火系列,内涵80+优化改进篇,涨点小能手,助力科研,好评率极高

《YOLOv8魔术师》 

 《YOLOv7魔术师》

《YOLOv5/YOLOv7魔术师》

《RT-DETR魔术师》

 

应用系列篇:

《YOLO小目标检测》

《深度学习工业缺陷检测》 

《YOLOv8-Pose关键点检测》 

 

💡💡💡本文主要内容:详细介绍了船舶目标检测系统,在介绍算法原理的同时,给出Pytorch的源码、训练数据集以及PyQt6的UI界面。在界面中可以选择各种图片、视频进行检测识别,可进行置信度、Iou阈值设定,结果可视化等。

1.数据集介绍

数据集大小一共7000张,,按照8:1:1进行训练集、验证集、测试集随机区分。

一共有六类船只,分别是bulk cargo carrier、container ship、ore carrier、general cargo ship、fishing ship、passenger ship

细节图:

5据统计共有六种物体类别,具体数据如下:

各类标签的数量分别为:
ore carrier: 2199
passenger ship: 474
container ship: 901
bulk cargo carrier: 1952
general cargo ship: 1505
fishing boat: 2190

2.基于YOLOv8的船舶目标检测

2.1 修改seaships.yaml

path: ./data/seaships  # dataset root dir
train: train.txt  # train images (relative to 'path') 118287 images
val: val.txt  # val images (relative to 'path') 5000 images

# number of classes
nc: 6

# class names
names:
  0: ore carrier
  1: passenger ship
  2: container ship
  3: bulk cargo carrier
  4: general cargo ship  
  5: fishing boat

2.2 开启训练

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml')
    model.train(data='data/seaships/seaships.yaml',
                cache=False,
                imgsz=640,
                epochs=100,
                batch=16,
                close_mosaic=10,
                workers=0,
                device='0',
                optimizer='SGD', # using SGD
                project='runs/train',
                name='exp',
                )

3.训练结果分析 

YOLOv8 summary (fused): 168 layers, 3006818 parameters, 0 gradients, 8.1 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 60/60 [01:30<00:00,  1.51s/it]
                   all       1890       2526      0.959      0.949      0.981      0.766
           ore carrier       1890        580      0.962      0.955      0.986      0.754
        passenger ship       1890        136      0.909      0.941      0.972      0.746
        container ship       1890        237      0.991      0.966      0.987      0.833
    bulk cargo carrier       1890        546      0.941      0.958      0.982      0.769
    general cargo ship       1890        391      0.979       0.97      0.991      0.784
          fishing boat       1890        636       0.97      0.903      0.969      0.711
Speed: 0.1ms preprocess, 1.9ms inference, 0.0ms loss, 1.8ms postprocess per image

F1_curve.png:F1分数与置信度(x轴)之间的关系。F1分数是分类的一个衡量标准,是精确率和召回率的调和平均函数,介于0,1之间。越大越好。

TP:真实为真,预测为真;

FN:真实为真,预测为假;

FP:真实为假,预测为真;

TN:真实为假,预测为假;

精确率(precision)=TP/(TP+FP)

召回率(Recall)=TP/(TP+FN)

F1=2*(精确率*召回率)/(精确率+召回率)

  PR_curve.png :PR曲线中的P代表的是precision(精准率)R代表的是recall(召回率),其代表的是精准率与召回率的关系。

 R_curve.png :召回率与置信度之间关系

 results.png

 mAP_0.5:0.95表示从0.5到0.95以0.05的步长上的平均mAP.

预测结果:

  4. 船舶目标检测系统设计

4.1 PySide6介绍

        受益于人工智能的崛起,Python语言几乎以压倒性优势在众多编程语言中异军突起,成为AI时代的首选语言。在很多情况下,我们想要以图形化方式将我们的人工智能算法打包提供给用户使用,这时候选择以python为主的GUI框架就非常合适了。

        PySide是Qt公司的产品,PyQt是第三方公司的产品,二者用法基本相同,不过在使用协议上却有很大差别。PySide可以在LGPL协议下使用,PyQt则在GPL协议下使用。

        PySide目前常见的有两个版本:PySide2和PySide6。PySide2由C++版的Qt5开发而来.,而PySide6对应的则是C++版的Qt6。从PySide6开始,PySide的命名也会与Qt的大版本号保持一致,不会再出现类似PySide2对应Qt5这种容易混淆的情况。

4.2 安装PySide6

pip install --upgrade pip
pip install pyside6 -i https://mirror.baidu.com/pypi/simple

基于PySide6开发GUI程序包含下面三个基本步骤:

  • 设计GUI,图形化拖拽或手撸;
  • 响应UI的操作(如点击按钮、输入数据、服务器更新),使用信号与Slot连接界面和业务;
  • 打包发布;

 4.3 船舶目标检测系统设计

运行

python main.py

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

KYOSAN电源维修RFK150ZDTG1电源控制器BKW-100

维修范围&#xff1a;刻蚀、RIE、平行板、ICP、pecvd、射频溅射、CVD 和PVD等系统&#xff0c;工业系统中感应加热和电介质加热设备的电源&#xff0c;烘干、塑化、接、硅晶体生长和平板显示器领域应用电源&#xff0c;直流偏压和硬镀膜&#xff0c;信息技术设备(ITE)及轻工业系…

医院安全(不良)事件报告系统源码,不良事件处理的全过程管理,实现11大类不良事件类型的报告上报、流转审批、跟踪改进及统计分析功能。

医院安全&#xff08;不良&#xff09;事件报告系统源码&#xff0c;不良事件上报系统源码&#xff0c;PHP源码 医院安全&#xff08;不良&#xff09;事件报告系统提供11大类不良事件的上报、事件审核处理、时间按分析、事件跟踪与持续改进&#xff0c;事件提醒、权限控制、外…

qiankun子应用静态资源404问题有效解决(遇到了http请求静态文件404、css文件引用图片无法显示、svg图片转换成 base64无法显示等问题)

在&#x1f449;&#x1f3fb; qiankun微前端部署&#x1f448;&#x1f3fb;这个部署方式的前提下&#xff0c;遇到的问题并解决问题的过程 >> 问题现象 通过http请求本地的静态json文件404 css中部分引入的图片无法显示 >> 最开始的解决方式 在&#x1f449;…

【数据结构】双向带头循环链表实现及总结

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 双向带头循环链表的实现2. 顺序表和链表的区别 1. 双向带头循环链表的实现 List.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <stdbool.h>typede…

mycat-encrypt-server如何支持模糊查询的

最近在研究数据库加密&#xff0c;看到了mycat-encrypt-server项目&#xff0c;看了一下代码&#xff0c;说是支持加密字段的模糊查询&#xff1a; private void parserBinaryExpression(Expression expression, Set<String> columns, String tableAlias, String tableNa…

代码随想录算法训练营第36天 | 435.无重叠区间 763.划分字母区间 56.合并区间

无重叠区间 这道题按左边界排序和右边界排序都是可以的。主要就是要统计出不重合区间的数目。如果按照右区间排序&#xff0c;下面这张图十分形象&#xff1a; 这样去掉一组重叠区间后&#xff0c;剩下的那个区间它的右端点最小&#xff0c;能让后面产生尽量多的不重叠空间。 …

用GPT写PHP框架

参考https://www.askchat.ai?r237422 写一个mvc框架 上面是简单的案例&#xff0c;完整的PHP框架&#xff0c;其核心通常包含以下几个关键组件&#xff1a; 1. 路由&#xff08;Routing&#xff09;&#xff1a;路由组件负责解析请求的URL&#xff0c;并将其映射到相应的控制…

MySQL原理(三)锁定机制(1)综述

一、介绍&#xff1a; 1、锁的本质 业务场景中存在共享资源&#xff0c;多个进程或线程需要竞争获取并处理共享资源&#xff0c;为了保证公平、可靠、结果正确等业务逻辑&#xff0c;要把并发执行的问题变为串行&#xff0c;串行时引入第三方锁当成谁有权限来操作共享资源的判…

嵌入式——模拟/数字转换器(ADC)补充

目录 一、ADC简介 二、ADC功能 1.电压输入范围 2.输入通道 3. 转换顺序 &#xff08;1&#xff09;规则序列 &#xff08;2&#xff09; 注入序列 4.触发源 5. 转换时间 &#xff08;1&#xff09; ADC时钟 &#xff08;2&#xff09; 采样时间 6. 数据寄存器 &am…

ETL怎么实现文件处理

在现代企业及各类组织的日常运作中&#xff0c;数据作为一种关键的信息资源&#xff0c;其管理和分析能力直接影响到决策效率与准确性。文件作为数据的主要载体&#xff0c;承载着从运营报告、客户记录、交易明细等各种类型的数据信息。这些海量且多样的文件数据在未经处理的情…

母排设计时没有柜体3D数据?来试试SuperPanel的钣金功能!

CAD版SuperPanel软件能够助力用户快速、准确地设计和修改母排&#xff0c;同时快速输出加工图纸和数控加工代码。在壳体外购&#xff0c;没有柜体3D数据的情况下&#xff0c;如何轻松进行母排设计&#xff1f;一起来学习利驰数字母排的钣金功能吧&#xff01; SuperPanel的钣金…

通过实测,让你从书客、明基、好视力中选出最优质的护眼台灯

眼睛是我们与世界接触的最重要媒介之一&#xff0c;让我们能够观察到世间万物的美好。然而&#xff0c;由于种种原因&#xff0c;很多人都戴上了眼镜&#xff0c;这无疑在我们与世界的接触中增加了一层隔阂&#xff0c;给生活带来了诸多不便。为了缓解或避免近视的发生&#xf…

【前端-VUE+TS】Vue3组件化-下(五)

一. 插槽的使用 1.1. 认识插槽slot 在开发中&#xff0c;我们会经常封装一个个可复用的组件&#xff1a; 前面我们会通过props传递给组件一些数据&#xff0c;让组件来进行展示&#xff1b;但是为了让这个组件具备更强的通用性&#xff0c;我们不能将组件中的内容限制为固定的d…

STM32F407ZGT6——实验9-4 通用定时器脉冲计数实验

一、配置路线 二、问题及反思 配置的时候误以为需要先把【输入捕获配置】了再去配置【从模式】&#xff0c;后面验证了这样配置没办法产生预期的效果。 代码如下&#xff1a;void gtim_timx_cnt_chy_init(uint16_t psc, uint16_t arr) void gtim_timx_cnt_chy_init(uint16_t…

MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL

文章目录 解析全局配置文件二级缓存解析解析二级缓存缓存中的调用过程缓存中使用的设计模式 解析SQL 解析全局配置文件 启动流程分析 String resource "mybatis-config.xml"; //将XML配置文件构建为Configuration配置类 reader Resources.getResourceAsReader(re…

【3分钟开服】幻兽帕鲁服务器一键部署保姆教程

在帕鲁的世界&#xff0c;你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活&#xff0c;也可以为你在工厂工作。你也可以将它们进行售卖&#xff0c;或肢解后食用。 引用自&#x…

脚本实现两台windows 机器间多个目录中文件同步到某个特定的目录里

脚本实现两台windows 机器间多个目录中文件同步到某个特定的目录里 要求&#xff1a;将172.20.26.74 中的test1、test2文件夹里的文件都同步到172.20.26.87机器上的t1文件夹里。 1、两台机器&#xff0c;关闭防火墙&#xff0c;能相互ping通&#xff0c;在172.20.26.87机器上将…

Windows编程入门-窗口控件-资源操作

window控件&#xff1a; 控件是常见的窗口上的交互元素例如&#xff1a;一个按钮&#xff0c;一个复选框&#xff0c;一个列表框等。 当控件的特定功能被触发后&#xff0c;会主动发送消息通知父窗口&#xff0c;父窗口可以通过发送消息给控件控制控件的行为。 控件的本质是一个…

Utreexo:优化Bitcoin UTXO集合的基于哈希的动态累加器

1. 引言 前序博客&#xff1a; Utreexo&#xff1a;比特币UTXO merkle tree proof以节约节点存储空间 MIT Digital Currency Initiative 的 Thaddeus Dryja 2019年论文 Utreexo: A dynamic hash-based accumulator optimized for the Bitcoin UTXO set。 开源代码实现见&…

Kafka 记录

推荐资源 官网http://kafka.apache.org/Githubhttps://github.com/apache/kafka书籍《深入理解Kafka 核心设计与实践原理》 Kafka 架构 Kafka使用ZooKeeper作为其分布式协调框架&#xff0c;其动态扩容是通过ZooKeeper来实现的。Kafka使用Zookeeper保存broker的元数据和消费者信…