智慧渔业捕捞计数项目设计书

(一)项目背景

      

根据捕捞水域的不同,我国水产捕捞可划分为海洋捕捞、远洋捕捞以及淡水捕捞三大类型。其中,淡水渔业主要是指在淡水水域进行捕捞、养殖以获得淡水水产品并对这些水产品进行加工的社会生产领域。

      近年来,随着人们经济水平的提升和淡水渔业的快速发展,捕捞业也不断壮大。渔业发展至今,已经从单纯的捕捞形成了系统性地养殖及捕捞作业管理,但简单粗放的传统渔业捕捞往往存在着种种弊端,已经难以满足市场的需求,渔业已开始趋向精细化,智慧渔业应运而生。智慧渔业解决方案可以结合现代互联网、移动互联网、物联网等新兴技术,帮助渔民及企业有效控制捕捞成本,通过多方数据分析对比进而提高水产的品质和产量。

(二)设计目的

      

目前,我国池塘、水库、湖泊等养殖水域所使用的捕捞设备,大多采用拉网或拖网,这些传统设备和方式存在着许多缺点。一是养殖水域的水面越大,所需的网衣和网具耗材就越多,需要的捕捞工作人员或网船等其他设备越多,成本也就越高。如图2所示。二是传统拉网捕鱼可调控性差,均是一次撒网再直接拉起,捕获鱼的数量无法保持稳定,导致花费大量人力物力而捕不到鱼或捕鱼量很少的情况。三是传统拉网捕鱼设备不具有选择性,捕获的鱼种类不同、大小不一。不论鱼苗还是成鱼均捕捞进网,从而损伤鱼体,造成捕捞质量下降,影响养殖鱼种的成活率。

      下图为传统捕捞方式:

图片

      为了实现渔业按需捕捞,避免过量数目的鱼进入网箱降低鱼获质量,实现优质捕捞,我们研发了一套智慧渔业捕捞计数装置。该装置能显示鱼类通过鱼道进入捕捞网箱的实时画面;自动记录进入网箱内的鱼体种类、数量、长度和重量等信息,统计出网箱内鱼类的总数量和总重量;按需捕捞成鱼,将鱼种和鱼苗过滤出网。最终,实现择优按需捕捞并根据统计数据精确制定销售计划和销售方案,达到经济盈利与湖泊内部生态平衡的双重目的。

(三)市场调研现状

      传统捕捞的方法很多,一种是在湖面撒下渔网再收网,但有部分鱼从网口跑出或培育鱼苗被捕捞,导致捕捞效率不高。另一种是把附有袋子的金属网箱放在河床上拖行,小体型的鱼穿过网箱,大体型的鱼掉进袋中。传统捕捞方式规模偏小、设施操作依赖人工操作、管理难度大,捕捞过程中主要依靠人工检测,缺乏精准性和统一性,对水产质量或产量都有较大影响,且捕捞过度容易破坏水域生态环境。

      目前市场上,部分申请专利的自制捕鱼装置大都是在结构、硬件上做优化和改进,但存在着无法实时观测鱼体状况、捕鱼范围太小、渔网的入鱼口需要人为关闭或打开、捕捞的鱼易从入鱼口处逃脱等问题,影响捕鱼质量及捕鱼效率,很少有能将捕捞装置做到智慧化。

      也有部分智能化的渔业管理系统、监测系统和手机远程管理系统,但都是通过传感器来检测水质、水环境信息和查看设施环境数据和设备运行情况,对水环境进行管理,很少有满足对鱼类捕捞这类精准需求。

      综上所述,还未有相同的相似产品或服务。此捕捞计数装置突破了传统捕捞方式,改进了设备装置,使用水下摄像机实时观测鱼类进入网箱的画面,利用机器学习算法分析并获取网箱内鱼的种类、数量、长度和重量,计算鱼的总数量和总重量等信息。通过手机观看水下摄像机拍摄的实时画面,依据数据做出适当的任务安排,真正做到机械化和智能化统一。

(四)作品内容

1 主要内容

      本项目以实现渔业按需捕捞和高质量渔获为设计理念,研发出一套智慧渔业捕捞计数装置。首先,采用YOLOv5检测算法和DeepSort跟踪算法等技术,实现自动记录并获取得到进入捕捞网箱内的鱼体种类、数量、长度和重量等信息,这些数据将通过4G/5G网络传输至移动端。其次,利用配套设计的手机应用程序,实现远程实时观看网箱进鱼的画面,掌握捕捞网箱的进鱼情况。最后,根据鱼体进入网箱获取到的数据,采取适当措施以避免过量的鱼获进入网箱降低鱼获质量,为渔民、公司企业制定销售计划和销售方案提供可靠数据。

2 创新点

① 实时监测及网箱关闭

      渔业捕捞计数装置通过水下摄像头拍摄鱼类进入储鱼网箱的实时画面并传送至浮动平台上的边缘计算服务器进行分析处理。水下摄像机安装于进鱼通道出口斜上方20厘米处,确保进鱼通道入口圈在相机画面内。使用双层捕鱼网箱,体型小的鱼能通过网眼大的一层,体型大的鱼则留在网箱内。当鱼从入网口侧出现直到鱼尾游出过鱼通道出口圈,记为一次鱼进入储鱼网箱。我们还结合通信及北斗定位技术,设计了一个数据传输与移动端统计分析系统,开发专用手机移动程序。获取的实时数据再经边缘计算服务器上安装的4G/5G模块发送至互联网并转发至手机端。根据实时数据,当达到所需捕获的数目时关闭网箱入口。

图片

② 跟踪鱼体、种类识别及计数估算

      本项目首次将目标跟踪应用于渔业捕捞,使用YOLOv5检测算法和DeepSort跟踪算法跟踪水中游动的鱼类。边缘计算服务器运行研发的目标检测与跟踪网络模型推演出鱼类在画面中的游动轨迹。根据深度学习的网络模型估算出鱼的数量、长度和重量。其中,体长是根据鱼体游过出口圈时,摄像机观察到的较完整鱼体画面,以过鱼通道出口圈作为参照物,利用摄像机参数和投影原理反向投影来计算得出;重量是根据估算的体长,利用体长与体重的关系计算得出。

③ 适应不同场景

      为了保证视觉识别的高效性,通过强化学习控制水下摄像机旋转。通过红外光来照亮昏暗的水下环境,拍摄出较清晰的画面以提高鱼体识别度,更加精准地定位到鱼体目标。另外,分别在晴天、阴天和雨天等不同天气下进行安装和测试,通过对视频数据增强、调整水下摄像头参数和调整水下摄相机底座来解决识别问题。

3 技术路线

①技术方法

     

 本项目借助百度AI Studio平台,使用PaddlePaddle深度学习框架,算法和技术包括,以YOLOv5作为主干网对游动的鱼体进行目标检测,以Deepsort算法对鱼体进行实时跟踪。训练得到鱼类检测跟踪模型。在网箱内鱼体数据集上,通过飞桨平台目标检测开发套件进行训练和预测,完成检测和跟踪模型的组建、训练、优化及部署等全开发流程。

【YOLOv5目标检测算法】

      YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。对于一个目标检测算法而言,通常可以将其划分为4个通用的模块,具体包括:输入端、基准网络、Neck网络与Head输出端。YOLOv5算法具有4个版本,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种。输入端和YOLOv4一样,对输入的图像进行Mosaic数据增强。骨干网络部分主要采用的是:Focus结构、CSP结构。在网络的颈部,采用的是:FPN+PAN结构,进行丰富的特征融合,这一部分和YOLOv4的结构相同。对于网络的输出,遵循YOLO系列的一贯做法,采用的是耦合的Head。并且和YOLOv3、YOLOv4类似,采用了三个不同的输出Head,进行多尺度预测。

【DeepSort多目标跟踪算法】

      DeepSort是基于Sort目标跟踪进行的改进,引入深度学习模型,在实时目标跟踪过程中,提取目标的外观特征进行最近邻近匹配。匹配机制从原来的基于IOU成本矩阵的匹配变成了级联匹配和IOU匹配,改善了有遮挡情况下的目标追踪效果。同时,加入外观信息,借用了ReID领域模型来提取外观特征,减少了目标id跳变的问题。其核心思想是使用递归的卡尔曼滤波和逐帧的匈牙利数据关联。

② 数据的标记与获取

      我们在实验室内的水箱中和学校内的池塘里,利用水下摄像机获取到视频影像数据并进行了模型训练和测试。使用多目标检测标注软件Darklabel和自行开发的视频对象标记工具VideoAnnotator(地址:https://gitee.com/ctguhzy/VideoAnnotator)对获取到的鱼体数据用矩形框进行标记。输出符合YOLO对象检测标准的训练数据集后,以txt格式在飞桨平台上进行训练。如图,为数据标记后的部分图片结果。

图片

(五)模型训练

1 模型结构

图片

图片

2 模型训练与评估

模型结构,模型的训练、验证和预测等操作分别是在yolov5/classify目录下的train.py、val.py、detect.py文件中进行的,我们将训练好的权重文件保存在output/yolov5/文件夹下。

      运行train.py文件进行训练,训练命令如下:

图片

图片

图片

4 模型效果

① 实验室测试效果

      如视频所示,是在实验室测试时得到的鱼体检测与跟踪结果的画面,图中记录了跟踪时的种类标签和计数结果。

图片

② 捕捞基地实地测试效果

      如图所示,是在实验室测试时得到的鱼体检测与跟踪结果的画面,图中记录了跟踪时的种类标签和计数结果。

图片

(六)环境配置及部署

1 环境配置

 使用的操作系统是NVIDIA Jetson Xavier NX(Jetpack 4.4);Python版本为python3.7,使用的深度学习框架为PaddlePaddle。其中,NVIDIA Jetson Xavier NX通过外形小巧的模组系统(SOM)将超级计算机的性能带到了边缘端,高达21 TOPS的加速计算能力可并行运行现代神经网络并处理来自多个高分辨率传感器的数据。如图所示,为NVIDIA Jetson Xavier NX开发板。

图片

2 模型部署

      首先,将YOLOv5项目克隆并将训练好的模型传入到NVIDIA Jetson Xavier NX,水下摄像头和NVIDIA Jetson Xavier NX连接到同一局域网下。接着,在NVIDIA Jetson Xavier NX上运行detect.py文件来对水下摄像头的视频画面进行推理预测。最后,使用ffmpeg将NVIDIA Jetson Xavier NX的预测视频帧推流到直播平台。

      安装ffmpeg的命令如下:

!apt-get update && apt-get install -y ffmpeg

3 播放器安装

      安装的VLC媒体播放器版本为3.03.4(安卓版),安装成功的界面如下:

图片

# 安装ffmpeg!apt-get update && apt-get install -y ffmpeg

(七)系统组成

1 系统结构

      智慧渔业捕捞计数装置及系统结构设计及安装位置,如图所示。具体功能模块包括,水下摄像信号传输及监测子系统、鱼类智能识别子系统、网箱鱼信息统计子系统、移动端数据传输与分析系统。

      

图片

2 系统硬件组成

      如图所示,系统硬件组成包括水下摄像机、边缘计算服务器、浮动平台和供电组件、显示及控制装置、通信及北斗定位模块。

      

图片

      下图是整体设备展示,各个装置及硬件。

硬件组成

水下摄像机

图片

图片

图片

3 系统软件组成

      软件部分主要由视频推流模块、视频流获取模块、鱼体计数模块、体长体重估算模块和鱼体检测跟踪模块组成。

      

图片

(八)测试、问题解决及结论

1 测试内容

      为了更好地完善项目,我们对此进行了测试,测试工作目标包括:判断硬件系统、软件系统是否能正常稳定工作?

      ① 在硬件稳定性方面。边缘计算服务器是否能持续稳定工作?电池供电是否在预计时长之内?水下摄像头是否能拍摄清晰画面?水下摄像头是否能在夜间正常?通信模块是否能持续稳定工作?

      ② 在软件稳定性方面。视频流获取模块是否能正常获取视频数据?鱼体检测、分类、计数模块是否能正确运行?鱼体体长、体重估算模块是否能正确运行?视频推流模块是否能正确运行?

2 测试中发现的问题及解决方案

      ① 开发前期,我们在学校购买鱼苗和成鱼并经实验验证YOLOv5模型可行。在此过程中,针对深水环境下,摄像机是否可以清晰获取水下画面的问题,我们在深夜场景无光源的条件下,利用水下摄像机拍摄了如下图所示画面。该画面表明,在水下环境无光时,水下摄像头的红外光也可以照亮环境,拍摄出较为清晰的视频画面;另外,在水下较浑浊时,也可以拍摄出类似于右图中所示的较好画面。此画面也证明了根据本项目方案可达到渔业捕捞计数的项目目标。

水下夜视图

水下夜视图(浑浊)

图片

图片

      ② 开发中期,我们到实地进行测试,发现摄像头拍摄到的画面出现发绿的情况,这是由于湖水的深度浅,不足以吸收掉绿光。还有一种原因是由于湖水中含有大量藻类,这些藻类多呈绿色。针对此问题,我们采取调整相机参数和视频画面数据增强的解决方案,下图为调整前后的对比图。

水下拍摄画面(发绿)

调整之后

图片

图片

      ③ 开发后期,针对实地测试时摄像机画面不够清晰的问题,我们拟采取更换测试全红外光相机的方案,并进一步改进优化视频增加算法,设计简洁精确的水下相机安装方法。对于体长体重估算模块未完成的问题,我们将抓紧完成体长体重估算模块并使其保持持续稳定的状态。

4 测试结论

日期检测数漏检数误检数准确率
7月16日368323782.75%
7月17日118313214778.78%
7月18日625687279.80%

      从上表的测试统计数据来看,捕鱼计数系统基本可以较为准确计数通过进鱼通道的鱼数,准确率约为80%。从捕鱼计数系统测试结果来看,捕鱼计数系统基本成形,完成度在80%以上。

(九)市场应用前景

      ① 在用户需求贴合度方面,本项目贴近生活实际及消费市场,有着渔民、微小企业、渔业和水产业等明确的目标用户及使用场景,具有清晰的受众群体和市场定位。

      ② 在效率提升方面,本项目面向渔业捕捞过程,解决了按量按质捕捞的需求和实时观测的实际问题,提供了有效的进鱼数据用以分析。不仅能给渔民和企业带来便利,方便进行鱼类捕捞作业,而且能为水产业、渔业提升产业效率,节约捕捞成本。

      ③ 在市场价值及推广性方面,本项目的可普及性、可泛化程度较高。在设计本项目之前,我们去往重庆市长寿区的长寿湖进行考察,经过外部验证和调查,与重庆市长寿区浩湖渔业有限公司进行合作。合作目标是帮助渔民、渔业企业自动检测并跟踪进入网箱中的鱼,统计各种体长的鱼的数量,把握收网的时机,实现“数字化捕鱼”。通过与企业合作,以渔民作为初始的使用和受益群体,再由个体逐步延申到中小型渔业企业,最后到整个渔业和水产业的链式模式进行推广,因此具有完善的市场推广模式。

      下图为我们在重庆市长寿区长寿湖实地考察时,拍摄的渔民进行捕捞作业时的画面。

      

图片

(十)合作企业介绍

      本项目在重庆市长寿区长寿湖水域湖面安装装置设备进行捕捞,长寿湖全水域隶属于重庆市长寿区浩湖渔业有限公司(国有控股企业)管辖的天然养殖水域,养殖水域中所有的水产品均属国有资产,受法律保护。浩湖渔业有限公司旨在保证长寿湖鱼类自然繁殖,保障渔业资源生态平衡和休闲渔业健康可持续发展,维护长寿湖鱼类自然生态平衡。

      2022年7月初,重庆市长寿区浩湖渔业有限公司的捕捞队在长寿湖进行了新一轮的捕鱼作业。在捕捞装运过程中,使用机械化设备代替人工,提高了工作效率,减少了产品损耗。采用人工装箱,费时费力,经常对鱼造成脱鳞、出血等各种损伤,对销售产生不利影响。使用新型起吊机进行装箱之后,迅速提高了工作效率,同时减少了鱼的损伤,让鱼的出产质量得到保障,提升了销量。此外,为进一步保障产品质量,我们团队与浩湖渔业有限公司进行合作,发展智能化捕捞设备,以期产品的质量得到更好的保障与提升。

      通过我们研发的智能化捕捞设备,能够掌握鱼的个体数据以及数量,以便进行精细化管理,更好的控制捕捞、装箱、运输等环节,从而最大限度保持鱼的鲜活度。

 

图片

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

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

相关文章

酒店数据抓取

好的,以下是使用Haskell编写的一个简单的网页爬虫程序,用于抓取Booking.com和云地接酒店数据的示例。这个程序使用HTTP代理,代理信息为proxy_host: jshk.com.cn。 import Network.HTTP import Network.HTTP代理 import Network.URImain :: I…

CSS实现图片滑动对比

实现效果图如下&#xff1a; css代码&#xff1a; 知识点&#xff1a;resize: horizontal; 文档地址 <style>.image-slider {position: relative;display: inline-block;width: 500px;height: 300px;}.image-slider>div {position: absolute;top: 0;bottom: 0;left: …

学开发语言 求职互联网行业的未来发展

我喜欢回答各种各样的问题&#xff0c;自然也喜欢记录下自己的一些观点和看法。希望给朋友们多一点参考&#xff0c;也欢迎交流探讨。 提问&#xff1a; 自考本科&#xff0c;学的开发语言&#xff0c;问互联网行业求职和发展&#xff01; 作为一个资深码农&#xff0c;对这样…

Animate 2024 for mac动画制作软件

Animate 2024是一款由Adobe公司开发的强大动画制作软件&#xff0c;它能帮助用户轻松制作出各种精美的动画作品。Animate 2024拥有强大而直观的设计工作流程&#xff0c;能够让用户自由地构建动画场景、绘制精美的图形&#xff0c;并轻松添加动态效果。无论是传统手绘风格还是骨…

JavaScript中this关键字实践

● 在全局中&#xff0c; this关键字表示全局窗口 console.log(this);● 在严格模式下&#xff0c;this不指向函数本身&#xff0c;在非严格模式下&#xff0c;this指向全局窗口 console.log(this);const calcAge function (birthYear) {console.log(2037 - birthYear);cons…

空间数据结构笔记:层次包围盒树(Bounding Volume Hierarchy Based On Tree)

1 总览 层次包围盒树&#xff08;BVH树&#xff09;是一棵多叉树&#xff0c;用来存储包围盒形状。它的根节点代表一个最大的包围盒&#xff0c;其多个子节点则代表多个子包围盒。为了统一化层次包围盒树的形状&#xff0c;它只能存储同一种包围盒形状 2 AABB包围盒树&#x…

科研学习|研究方法——逻辑回归系数的显著性检验(python实现)

1. 背景 回归方程与回归系数的显著性检验 2. statsmodels 库 statsmodels库可以用来做逻辑回归、线性回归。并且会在summary中给出显著性检验的结果。最终我们想要的就是如下图的报告。 3. 计算过程 如果我们使用的sklearn构建的逻辑回归就没有办法直接输出这个报告&#xff0c…

Nexus的Linux服务器部署(菜鸟版)

Nexus的Linux服务器部署 一、下载与安装 使用Nexus搭建Maven私服&#xff0c;在离线环境中使用Maven&#xff0c;并自动从私服中下载依赖包和组件。 下载地址&#xff1a;https://www.sonatype.com/ 镜像仓库 腾讯云软件包镜像: https://mirrors.cloud.tencent.com/阿里软…

git简明指南

目录 安装 创建新仓库 检出仓库 工作流 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹&#xff0c;打开&#xff0c;然后执行 git init 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克隆版本&…

Ridgeline plot / 远山图 / 山脊图 怎么画?怎么优化?

工具 Origin 2022 当然&#xff0c;用Matlab、Python也是可以的。 颜色配置 色卡调整

(论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking

文献阅读笔记&#xff08;分层卷积特征&#xff09; 简介 题目 Hierarchical Convolutional Features for Visual Tracking 作者 Chao Ma, Jia-Bin Huang, Xiaokang Yang and Ming-Hsuan Yang 原文链接 arxiv.org/pdf/1707.03816.pdf 关键词 Hierarchical convolution…

Banana Pi BPI-M5 Boot Log 导出说明

准备&#xff1a; Preparation: 1、 一块bpi的开发板&#xff0c;一根ttl的串口线&#xff0c;以及一张烧录好镜像的sd/tf卡&#xff08;烧录到eMMC也行&#xff09;。 1. A BPI development board, a TTL serial port cable, and an SD/TF card with a burned image (it ca…

【React】Antd 组件基本使用

Antd 组件基本使用 第一步 安装并引入 antd 包 使用命令下载这个组件库 yarn add antd在我们需要使用的文件下引入&#xff0c;我这里是在 App.jsx 内引入 import { Button } from antd现在我们可以在 App 中使用 Button 组件 <div>App..<Button type"prima…

微信小程序漏洞之accesskey泄露

更新时间&#xff1a;2023年09月08日09:42:52 1. Accesskey泄露漏洞 这篇文章里面都是以我个人的视角来进行的&#xff0c;因为一些原因&#xff0c;中间删了一些东西&#xff0c;肯定有很多不正确的地方&#xff0c;希望大家能理解&#xff0c;也能指正其中的错误。 在以前…

腾讯云阿里云双11服务器大促,腾讯云阿里云服务器价格大比拼!

双11大促是每年一度的购物狂欢节&#xff0c;不仅限于电商平台&#xff0c;云服务商也加入了这场盛会。阿里云和腾讯云作为国内两大云服务巨头&#xff0c;今年也推出了令人瞩目的双11促销活动。本文将为您详细介绍阿里云和腾讯云的双11促销活动&#xff0c;并给出一些建议供您…

Web安全:Vulfocus 靶场搭建.(漏洞集成平台)

Web安全&#xff1a;Vulfocus 靶场搭建.&#xff08;漏洞集成平台&#xff09; Vulfocus 是一个包含了多种漏洞靶场的镜像。每个靶场都有具体的漏洞环境和攻击点。Vulfocus 的靶场包括了 Web 安全漏洞、系统安全漏洞、网络安全漏洞、密码学漏洞等多种类型。通关这个靶场我们可以…

海外ASO优化之谷歌商店的评论优化

应用商店中的评分和评论&#xff0c;显示我们的应用程序的受欢迎程度以及用户对该应用程序的看法。评分和评论是以前或者是现在的用户分享的经验和公开的反馈。 1、提高应用评分评论。 高评分的应用可以从应用商店内的搜索流量中获得更多的点击量&#xff0c;通过推荐和推荐获…

Spring全家桶源码解析--2.3 Spring bean 的依赖注入--@Autowired@Value

文章目录 前言一、Autowired&Value&#xff1a;1.1 Autowired&#xff1a;1.2 Value&#xff1a; 二、依赖注入&#xff1a;2.1 注入点获取&#xff1a;2.2 通过 populateBean 入口依赖注入2.2.1 populateBean &#xff1a;主要通过 postProcessProperties 方法进行依赖注入…

MySQL数据库入门到大牛_基础_07__单行函数

文章目录 1. 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类 2. 数值函数2.1 基本函数2.2 角度与弧度互换函数2.3 三角函数2.4 指数与对数2.5 进制间的转换 3. 字符串函数4. 日期和时间函数4.1 获取日期、时间4.2 日期与时间戳的转换4.3 获取月份、…

Shell脚本 CPU,内存,磁盘占用率检测

CPU&#xff1a;运算资源占用 内存&#xff1a;RAM类介质 磁盘&#xff1a;ROM类介质 一、CPU #!/bin/bash# 设置阈值&#xff0c;当CPU占用超过该阈值时进行输出提示 threshold80while true do# 使用top命令获取CPU占用信息&#xff0c;并使用grep和awk筛选和解析输出结果…