(一)项目背景
根据捕捞水域的不同,我国水产捕捞可划分为海洋捕捞、远洋捕捞以及淡水捕捞三大类型。其中,淡水渔业主要是指在淡水水域进行捕捞、养殖以获得淡水水产品并对这些水产品进行加工的社会生产领域。
近年来,随着人们经济水平的提升和淡水渔业的快速发展,捕捞业也不断壮大。渔业发展至今,已经从单纯的捕捞形成了系统性地养殖及捕捞作业管理,但简单粗放的传统渔业捕捞往往存在着种种弊端,已经难以满足市场的需求,渔业已开始趋向精细化,智慧渔业应运而生。智慧渔业解决方案可以结合现代互联网、移动互联网、物联网等新兴技术,帮助渔民及企业有效控制捕捞成本,通过多方数据分析对比进而提高水产的品质和产量。
(二)设计目的
目前,我国池塘、水库、湖泊等养殖水域所使用的捕捞设备,大多采用拉网或拖网,这些传统设备和方式存在着许多缺点。一是养殖水域的水面越大,所需的网衣和网具耗材就越多,需要的捕捞工作人员或网船等其他设备越多,成本也就越高。如图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 模型结构
home
├─ data
│ └─ data4469556
│ ├─ trains.zip
│ └─ vals.zip
└─ yolov5
├─ CONTRIBUTING.md
├─ LICENSE
├─ README.md
├─ classify
│ ├─ predict.py
│ ├─ train.py
│ └─ val.py
├─ data
│ ├─ Argoverse.yaml
│ ├─ GlobalWheat2020.yaml
│ ├─ ImageNet.yaml
│ ├─ Objects365.yaml
│ ├─ SKU-110K.yaml
│ ├─ VOC.yaml
│ ├─ VisDrone.yaml
│ ├─ coco.yaml
│ ├─ coco128.yaml
│ ├─ hyps
│ ├─ images
│ ├─ scripts
│ ├─ trains
│ ├─ vals
│ ├─ xView.yaml
│ └─ yang.yaml
├─ detect.py
├─ export.py
├─ hubconf.py
├─ models
│ ├─ __init__.py
│ ├─ chen.yaml
│ ├─ common.py
│ ├─ experimental.py
│ ├─ tf.py
│ ├─ yolo.py
│ ├─ yolov5l.yaml
│ ├─ yolov5m.yaml
│ ├─ yolov5n.yaml
│ ├─ yolov5s.yaml
│ └─ yolov5x.yaml
├─ requirements.txt
├─ runs
│ ├─ detect
│ └─ train
├─ setup.cfg
├─ train.py
├─ tutorial.ipynb
├─ val.py
└─ yolov5s.pt
2 模型训练与评估
模型结构,模型的训练、验证和预测等操作分别是在yolov5/classify目录下的train.py、val.py、detect.py文件中进行的,我们将训练好的权重文件保存在output/yolov5/文件夹下。
运行train.py文件进行训练,训练命令如下:
!python yolov5/train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
执行val.py文件进行模型评估,评估命令如下:
!python yolov5/eval.py
# 训练
!python yolov5/train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
# 评估
!python yolov5/eval.py
【可视化结果】
3 模型预测
在模型训练完成后,通过运行detect.py文件进行预测,命令如下:
!python detect.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
'path/*.jpg' # glob
'https://youtu.be/Zgi9g1ksQHc' # YouTube
'rtsp://example.com/media.mp4' # RTSP/RTMP/ HTTP stream
# 预测
!python detect.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
'path/*.jpg' # glob
'https://youtu.be/Zgi9g1ksQHc' # YouTube
'rtsp://example.com/media.mp4' # RTSP/RTMP/ HTTP stream
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
安装ffmpeg
!apt-get update && apt-get install -y ffmpeg
(七)系统组成
1 系统结构
智慧渔业捕捞计数装置及系统结构设计及安装位置,如图所示。具体功能模块包括,水下摄像信号传输及监测子系统、鱼类智能识别子系统、网箱鱼信息统计子系统、移动端数据传输与分析系统。
2 系统硬件组成
如图所示,系统硬件组成包括水下摄像机、边缘计算服务器、浮动平台和供电组件、显示及控制装置、通信及北斗定位模块。
下图是整体设备展示,各个装置及硬件。
|
|
---|---|
![]() | ![]() |
![]() |
3 系统软件组成
软件部分主要由视频推流模块、视频流获取模块、鱼体计数模块、体长体重估算模块和鱼体检测跟踪模块组成。
(八)测试、问题解决及结论
1 测试内容
为了更好地完善项目,我们对此进行了测试,测试工作目标包括:判断硬件系统、软件系统是否能正常稳定工作?
① 在硬件稳定性方面。边缘计算服务器是否能持续稳定工作?电池供电是否在预计时长之内?水下摄像头是否能拍摄清晰画面?水下摄像头是否能在夜间正常?通信模块是否能持续稳定工作?
② 在软件稳定性方面。视频流获取模块是否能正常获取视频数据?鱼体检测、分类、计数模块是否能正确运行?鱼体体长、体重估算模块是否能正确运行?视频推流模块是否能正确运行?
2 测试中发现的问题及解决方案
① 开发前期,我们在学校购买鱼苗和成鱼并经实验验证YOLOv5模型可行。在此过程中,针对深水环境下,摄像机是否可以清晰获取水下画面的问题,我们在深夜场景无光源的条件下,利用水下摄像机拍摄了如下图所示画面。该画面表明,在水下环境无光时,水下摄像头的红外光也可以照亮环境,拍摄出较为清晰的视频画面;另外,在水下较浑浊时,也可以拍摄出类似于右图中所示的较好画面。此画面也证明了根据本项目方案可达到渔业捕捞计数的项目目标。
|
|
---|---|
![]() | ![]() |
② 开发中期,我们到实地进行测试,发现摄像头拍摄到的画面出现发绿的情况,这是由于湖水的深度浅,不足以吸收掉绿光。还有一种原因是由于湖水中含有大量藻类,这些藻类多呈绿色。针对此问题,我们采取调整相机参数和视频画面数据增强的解决方案,下图为调整前后的对比图。
|
|
---|---|
![]() | ![]() |
③ 开发后期,针对实地测试时摄像机画面不够清晰的问题,我们拟采取更换测试全红外光相机的方案,并进一步改进优化视频增加算法,设计简洁精确的水下相机安装方法。对于体长体重估算模块未完成的问题,我们将抓紧完成体长体重估算模块并使其保持持续稳定的状态。
4 测试结论
日期 | 检测数 | 漏检数 | 误检数 | 准确率 |
---|---|---|---|---|
7月16日 | 368 | 32 | 37 | 82.75% |
7月17日 | 1183 | 132 | 147 | 78.78% |
7月18日 | 625 | 68 | 72 | 79.80% |
从上表的测试统计数据来看,捕鱼计数系统基本可以较为准确计数通过进鱼通道的鱼数,准确率约为80%。从捕鱼计数系统测试结果来看,捕鱼计数系统基本成形,完成度在80%以上。
(九)市场应用前景
① 在用户需求贴合度方面,本项目贴近生活实际及消费市场,有着渔民、微小企业、渔业和水产业等明确的目标用户及使用场景,具有清晰的受众群体和市场定位。
② 在效率提升方面,本项目面向渔业捕捞过程,解决了按量按质捕捞的需求和实时观测的实际问题,提供了有效的进鱼数据用以分析。不仅能给渔民和企业带来便利,方便进行鱼类捕捞作业,而且能为水产业、渔业提升产业效率,节约捕捞成本。
③ 在市场价值及推广性方面,本项目的可普及性、可泛化程度较高。在设计本项目之前,我们去往重庆市长寿区的长寿湖进行考察,经过外部验证和调查,与重庆市长寿区浩湖渔业有限公司进行合作。合作目标是帮助渔民、渔业企业自动检测并跟踪进入网箱中的鱼,统计各种体长的鱼的数量,把握收网的时机,实现“数字化捕鱼”。通过与企业合作,以渔民作为初始的使用和受益群体,再由个体逐步延申到中小型渔业企业,最后到整个渔业和水产业的链式模式进行推广,因此具有完善的市场推广模式。
下图为我们在重庆市长寿区长寿湖实地考察时,拍摄的渔民进行捕捞作业时的画面。
(十)合作企业介绍
本项目在重庆市长寿区长寿湖水域湖面安装装置设备进行捕捞,长寿湖全水域隶属于重庆市长寿区浩湖渔业有限公司(国有控股企业)管辖的天然养殖水域,养殖水域中所有的水产品均属国有资产,受法律保护。浩湖渔业有限公司旨在保证长寿湖鱼类自然繁殖,保障渔业资源生态平衡和休闲渔业健康可持续发展,维护长寿湖鱼类自然生态平衡。
2022年7月初,重庆市长寿区浩湖渔业有限公司的捕捞队在长寿湖进行了新一轮的捕鱼作业。在捕捞装运过程中,使用机械化设备代替人工,提高了工作效率,减少了产品损耗。采用人工装箱,费时费力,经常对鱼造成脱鳞、出血等各种损伤,对销售产生不利影响。使用新型起吊机进行装箱之后,迅速提高了工作效率,同时减少了鱼的损伤,让鱼的出产质量得到保障,提升了销量。此外,为进一步保障产品质量,我们团队与浩湖渔业有限公司进行合作,发展智能化捕捞设备,以期产品的质量得到更好的保障与提升。
通过我们研发的智能化捕捞设备,能够掌握鱼的个体数据以及数量,以便进行精细化管理,更好的控制捕捞、装箱、运输等环节,从而最大限度保持鱼的鲜活度。
此文章为搬运
原项目链接