基于Python深度学习的鲨鱼识别分类系统

news2025/4/1 11:36:08

摘要:鲨鱼是海洋环境健康的指标,但受到过度捕捞和数据缺乏的挑战。传统的观察方法成本高昂且难以收集数据,特别是对于具有较大活动范围的物种。论文讨论了如何利用基于媒体的远程监测方法,结合机器学习和自动化技术,来填补鲨鱼种群评估中的信息空白。提出了一个包含53,345张鲨鱼图片的数据库,覆盖了219种鲨鱼,并开发了一个名为“Shark Detector”的软件包,利用PyQt5设计了简约的系统UI界面,使用迁移学习和卷积神经网络(CNN)来自动识别和快速分类鲨鱼种类。

关键词:数据挖掘、图像分类、机器学习、远程监测、鲨鱼识别

参考文献:Shark detection and classification with machine learning, Jenrette et al., 2022.

  1. 研究背景及意义

鲨鱼作为海洋生态系统的关键指示物种,其种群的健康状况直接反映了海洋环境的生态平衡。然而,由于鲨鱼的广泛分布和大范围的活动习性,传统的科学调查和渔业监测方法在收集鲨鱼种群数据时面临巨大挑战。这些方法不仅成本高昂,而且难以捕捉到足够的信息,特别是对于个体数量和分布情况的精确评估。

缺乏详尽的数据支持,科学家和保护工作者难以对鲨鱼种群进行有效的状态评估和趋势预测。这种情况限制了保护措施的制定和执行,导致许多鲨鱼物种的保护状况不容乐观。随着IUCN受威胁物种数量的增加,迫切需要新的监测手段来填补数据空白,提高对鲨鱼种群动态的了解。

随着计算机视觉和机器学习技术的发展,特别是卷积神经网络(CNN)在图像识别领域的突破,为鲨鱼等海洋生物的自动检测和分类提供了新的技术手段。通过训练算法识别鲨鱼的特征,可以自动化地从大量图像和视频中提取有用信息,这不仅提高了数据处理的效率,也为海洋生物多样性监测提供了新的解决方案。

社交媒体和公共科学项目的兴起为生物多样性监测提供了新的数据来源。公众拍摄的鲨鱼照片和视频,尤其是通过Instagram等平台分享的内容,构成了一个庞大的图像库。利用机器学习算法对这些数据进行挖掘和分析,可以为鲨鱼研究提供宝贵的补充信息,同时也促进了科学研究与公众参与的结合。

  1. 研究方法

  2. 数据库构建:研究团队创建了一个包含53,345张鲨鱼图片的数据库,涵盖了219种鲨鱼。这些图片主要来源于社交媒体、公民科学项目、用户提交和其他电子档案。

  3. Shark Detector开发:开发了一个名为“Shark Detector”的软件包,它集成了对象检测和图像分类模型。该软件包使用迁移学习和卷积神经网络(CNN)技术来自动识别和分类视频中和图像中的鲨鱼。

  4. 模型组成:

  • Shark Locator (SL):对象检测模型,用于在图像和视频中定位鲨鱼并绘制边界框。

  • Shark Identifier (SI):二元排序模型,用于从混合图像集中筛选出鲨鱼图像。

  • Shark Classifiers (SCs):多类模型,用于将鲨鱼图像分类到属和物种级别。

  1. 训练与验证:使用来自sharkPulse的数据和其他来源的图像训练模型。通过迁移学习,利用预训练的网络(如VGG16和DenseNet201)来提高训练效率和准确性。

  2. 数据增强:采用图像增强技术,如平移、剪切、缩放和旋转,提高模型的泛化能力。

 

 

图1 鲨鱼探测器系统由对象检测和分类软件包组成,以循序渐进的方式达到最佳效果。此外,通过检测鲨鱼主体,鲨鱼定位器可以合成鲨鱼识别器和鲨鱼分类器模型所需的剪切鲨鱼图像,作为新的训练数据补充到sharkPulse档案中。视频按照定位、识别和分类的顺序进行处理。异构数据挖掘数据集按照先识别后分类的顺序进行处理。

 

 

 

图2 SL物体探测模型根据鲨鱼出现的置信度绘制方框。(a) 检测到一条短鳍鲭鲨幼鱼,并对单张自动裁剪图像进行处理,去除饵罐和蓝鳍金枪鱼等无关物体。(b) 检测到多个胭脂鱼物种,并从单张图像中裁剪出两张图像。

 

 

 

图3 由SI识别的图像以及随后由SC进行的分类。(a) 通过对水下照片、有前景和背景噪声的图像、难以辨认鲨鱼特征的图像以及8个不同物种进行分类,SI和SC正确识别了各种鲨鱼图像。(b) SI错误分类的常见对象,如鲸目动物(以及其他海洋和陆地动物)、空旷的前景、难以辨认的物体和假鲨鱼。(c) 由于部分特征被掩盖,SI会错过鲨鱼的出现。

  1. 结果分析

  2. 分类能力:Shark Detector能够对47种鲨鱼进行分类。

  3. 准确性测试:

  • 在处理诱饵远程摄像机镜头和YouTube视频时,Shark Detector在定位鲨鱼方面的准确率达到了89%。

  • 在将定位到的鲨鱼分类到物种层面时,准确率为69%。

  1. Instagram数据集:在Instagram上收集的异构数据集中,Shark Identifier以91%的准确率筛选出鲨鱼图像,并将这些图像分类到物种层面的准确率达到了70%。

  2. 性能评估:研究评估了Shark Detector在不同数据生成方法中的性能,包括在sharkPulse数据集中的定位、在线视频的处理,以及Instagram数据的挖掘。

  3. 软件性能:Shark Detector在没有人工交互的情况下处理了所有数据生成方法,展示了其自动化处理的能力。

  4. 模型改进:研究指出,随着向训练数据集添加更多图像,软件流水线的预测准确性会提高,这表明模型性能有进一步优化的空间。

通过这些方法和结果,本研究展示了Shark Detector作为一个强大的工具,能够自动化地从各种媒体来源中识别和分类鲨鱼,为鲨鱼保护和生态研究提供了新的技术支持。简而言之,图4概述了通过不同模型和参数测量的SD系统在鲨鱼图像分类方面的性能,包括不同类别的准确性、训练数据集大小的影响以及模型的可靠性。

 

 

 

图4 Shark Detector(SD)系统组件的性能测量结果。(a) 对13个鲨鱼属类的分类准确性(GSC)进行了测量,发现随着训练数据集大小的增加,其准确性可以用一个双参数渐近模型来拟合,渐近曲线表示每个类别在模型中可能达到的最大召回率。(b) 测量了7个物种类别和两个包含数据较少的Carcharhinus sp.和Sphyrna sp.的类别(SSCg)的分类准确性。(c) 展示了12个GSC类别的训练数据集大小阈值分布,排除了Prionace属,因为它的召回率从未达到50%,曲线表示正态分布的密度。(d) 展示了9个SSCg类别的训练数据集大小阈值分布,这些类别的属包含超过两个物种。(e) 展示了所有SD组件的性能,包括SSCg模型的标准误差区间。(f) 展示了所有18个SSCg模型的准确性分布。

  1. PyQt5可视化软件

本节详细介绍如何以上述CNN网络为主干,实现对鲨鱼种类的检测识别,且利用PyQt5设计了简约的系统UI界面。在界面中,您可以选择自己的视频文件、图片文件进行检测。此外,您还可以更换自己训练的主干模型,进行自己数据的检测。该系统界面优美,检测精度高,功能强大。它具备多目标实时检测,同时可以自由选择感兴趣的检测目标。本文提供了完整的Python程序代码和使用教程,适合新入门的朋友参考,包括用户登录界面(注册登录和修改密码),管理员主界面(用户账户信息、查看历史资源和鲨鱼种类百科),普通用户界面(上传历史记录、鲨鱼图像识别和鲨鱼种类百科),以及鲨鱼识别界面(图片和视频)。

 

 

 

 

 

 

 

 

 

 

 

图5 基于深度学习的鲨鱼识别分类系统演示界面

 

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

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

相关文章

EtherNet/IP转ProfiNet协议转换网关驱动西门子PLC与流量计的毫秒级压力同步控制

一、案例背景 汽车涂装线的静电喷涂工艺对压缩空气流量稳定性要求极高。原系统中Alicat流量计与西门子PLC因协议差异无法联动,导致涂料浪费率高达8%。通过JM-EIPM-PN网关实现供气系统与PLC的深度集成。从而实现了EtherNet/IP转ProfiNet的通讯。 二、设备连接与配置…

【力扣刷题|第十七天】0-1 背包 完全背包

目标和 力扣题目网址:目标和 这道题我们先用回溯的思想来做。首先我们设正数和为S,数组和为N,目标值为T,那么S-(N-S)T化简之后可以得S(TN)/2即选择的正数个数为偶数,而且NT也为偶数,那么第一个判断条件我们就有了&…

深度学习处理时间序列(3)

基于常识、不使用机器学习的基准 在开始使用像黑盒子一样的深度学习模型解决温度预测问题之前,我们先尝试一种基于常识的简单方法。它可以作为一种合理性检查,还可以建立一个基准,更高级的机器学习模型需要超越这个基准才能证明其有效性。对…

VectorBT:使用PyTorch+LSTM训练和回测股票模型 进阶二

VectorBT:使用PyTorchLSTM训练和回测股票模型 进阶二 本方案基于LSTM神经网络构建多时间尺度股票收益率预测模型,结合VectorBT进行策略回测。核心原理是通过不同时间窗口(5/10/20/30日)捕捉股价的短期、中期、长期模式&#xff0c…

蓝桥杯 第十二天 819 递增序列

注意注意&#xff1a;不考虑左上的情况&#xff0c;因为题目给的样例没有 public static int is1(char ch[][],int m,int n){int ans0;for (int i0;i<m;i){//起始点在哪for (int j0;j<n;j){int add1;while(jadd<n){if(ch[i][j]<ch[i][jadd]) ans; //横add;}add1…

【YOLOv11】目标检测任务-实操过程

目录 一、torch环境安装1.1 创建虚拟环境1.2 启动虚拟环境1.3 安装pytorch1.4 验证cuda是否可用 二、yolo模型推理2.1 下载yolo模型2.2 创建模型推理文件2.3 推理结果保存路径 三、labelimg数据标注3.1 安装labelimg3.2 解决浮点数报错3.3 labelimg UI界面介绍3.4 数据标注案例…

C++_STL之vector篇

一、vector的常见用法 注&#xff1a;C中若使用vector需包含头文件<vector>. 1.vector的构造函数 int n 10,ret1;vector<int> nums(n,ret); //n表示vector初始的容量 ret表示vector中初始化的值for (auto e : nums)cout << e << " "; 扩展…

sqli-labs靶场 less 9

文章目录 sqli-labs靶场less 9 时间盲注 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…

【Golang】第八弹----面向对象编程

&#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;Golang &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 前言&#xff1a;Go语言面向对象编程说明 Golang也支持面向对…

java基础以及内存图

java基础 命名&#xff1a; 大驼峰&#xff1a;类名 小驼峰&#xff1a;变量名方法名等其他的 全部大写&#xff1a;常量名字.. // 单行注释 /**/ 多行注释 变量类型 变量名 一、基本类型&#xff08;8个&#xff09; 整数&#xff1a;byte-8bit short-16bit int 32-b…

【嵌入式学习3】TCP服务器客户端 - UDP发送端接收端

目录 1、TCP TCP特点 TCP三次握手&#xff08;建立TCP连接&#xff09;&#xff1a; TCP四次握手【TCP断开链接的时候需要经过4次确认】&#xff1a; TCP网络程序开发流程 客户端开发&#xff1a;用户设备上的程序 服务器开发&#xff1a;服务器设备上的程序 2、UDP 为…

Linux之基础知识

目录 一、环境准备 1.1、常规登录 1.2、免密登录 二、Linux基本指令 2.1、ls命令 2.2、pwd命令 2.3、cd命令 2.4、touch命令 2.5、mkdir命令 2.6、rmdir和rm命令 2.7man命令 2.8、cp命令 2.9、mv命令 2.10、cat命令 2.11、echo命令 2.11.1、Ctrl r 快捷键 2…

llamafactory微调效果与vllm部署效果不一致如何解决

在llamafactory框架训练好模型之后&#xff0c;自测chat时模型效果不错&#xff0c;但是部署到vllm模型上效果却很差 这实际上是因为llamafactory微调时与vllm部署时的对话模板不一致导致的。 对应的llamafactory的代码为 而vllm启动时会采用大模型自己本身设置的对话模板信息…

WebSocket通信的握手阶段

1. 客户端建立连接时&#xff0c;通过 http 发起请求报文&#xff0c;报文表示请求服务器端升级协议为 WebSocket&#xff0c;与普通的 http 请求协议略有区别的部分在于如下的这些协议头&#xff1a; 上述两个字段表示请求服务器端升级协议为 websocket 协议。 2. 服务器端响…

分布式ID服务实现全面解析

分布式ID生成器是分布式系统中的关键基础设施&#xff0c;用于在分布式环境下生成全局唯一的标识符。以下是各种实现方案的深度解析和最佳实践。 一、核心需求与设计考量 1. 核心需求矩阵 需求 重要性 实现难点 全局唯一 必须保证 时钟回拨/节点冲突 高性能 高并发场景…

dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0

问题描述&#xff1a; 从日志看出,dom0运行android_kernel&#xff0c;刚开始运行就会crash,引发panic 解决及其原因分析&#xff1a; 最终问题得到解决&#xff0c;发现是前期在调试汇编阶段代码时&#xff0c;增加了汇编打印的指令&#xff0c;注释掉这些指令,问题得到解决。…

HarmonyOS NEXT——【鸿蒙原生应用加载Web页面】

鸿蒙客户端加载Web页面&#xff1a; 在鸿蒙原生应用中&#xff0c;我们需要使用前端页面做混合开发&#xff0c;方法之一是使用Web组件直接加载前端页面&#xff0c;其中WebView提供了一系列相关的方法适配鸿蒙原生与web之间的使用。 效果 web页面展示&#xff1a; Column()…

优选算法的慧根之翼:位运算专题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 一、位运算 基础位运算 共包含6种&(按位与&#xff0c;有0就是0)、|(按位或有1就是1)、^(按位异或&#xff0c;相同为0&#xff0c;相异为1)、~(按位取反&#xff0c;0变成1&#xff0c;1变成0)、<<(左…

图论问题集合

图论问题集合 寻找特殊有向图&#xff08;一个节点最多有一个出边&#xff09;中最大环路问题特殊有向图解析算法解析步骤 1 &#xff1a;举例分析如何在一个连通块中找到环并使用时间戳计算大小步骤 2 &#xff1a;抽象成算法注意 实现 寻找特殊有向图&#xff08;一个节点最多…

【数据结构】栈 与【LeetCode】20.有效的括号详解

目录 一、栈1、栈的概念及结构2、栈的实现3、初始化栈和销毁栈4、打印栈的数据5、入栈操作---栈顶6、出栈---栈顶6.1栈是否为空6.2出栈---栈顶 7、取栈顶元素8、获取栈中有效的元素个数 二、栈的相关练习1、练习2、AC代码 个人主页&#xff0c;点这里~ 数据结构专栏&#xff0c…