创新点1 传感检测与智能环控协同

系统采用水温、pH、溶解氧三类传感器,对水质参数进行周期性采集,并基于阈值逻辑与趋势判断实现智能增氧、净化的自动化控制。为了提升测量稳定性,采用双传感器差分思路:对同类传感器成对布置并取平均值,以削弱单点噪声、环境波动及器件误差。

硬件架构采用双芯片体系:
Arduino Mega2560作为采集和执行主控,凭借其丰富的IO适合挂载众多外设;ESP8266作为独立的联网单元,成本低廉且稳定(相比ESP32的20块左右的价位,这个一个只要10块),将通信负载与控制负载隔离,避免单芯片逻辑混乱,同时降低整体成本。系统支持自研PCB板,用于外设连接、电源管理及减少飞线,提高工程可靠性。


创新点2 基于视觉的鱼群行为识别

系统在树莓派上运行Python视觉程序,通过水下摄像头实时识别鱼群行为,实现缺氧预警与摄食状态检测。

  1. 缺氧检测模块:电子围栏法与密度比值分析

    通过观察上浮行为,判断鱼群是否处于缺氧风险,并与溶解氧传感器数值交叉验证,触发增氧设备。

    核心思路

    1. 使用广角水下摄像头,视野覆盖从水面到水底(不可以到水底也没关系)。视场方向平行于水面。

    2. 做一些常见的形态学处理,例如开闭运算,滤掉背景噪声。如果效果不好就移除这一步。

    3. 在图像中划分靠近水面的 ROI,如下图示例所示。

    4. 使用 CSRNet 进行密度估计,分别得到:

      • 上层密度:D_upper
      • 全局密度:D_total
      • 所谓密度,也可以是上层鱼的数量和视野范围内鱼的数量。两者相比,不影响结果。
    5. 定义上浮率:

      ratio=DupperDtotalratio = \frac{D_{upper}}{D_{total}}

    6. 判定逻辑:

      • ratio > 阈值 时标记为疑似缺氧
      • 与溶氧传感器数值交叉验证
      • 若上浮率高且溶氧低,则触发增氧设备

    技术要点

    • CSRNet 输出连续密度值,不依赖单鱼边界框,因此适合鱼群密集、重叠严重的场景。
    • ROI 是固定视场设定,不依赖目标检测框,只需一次标定。
    • YOLO可以用来辅助进行异常检测。或者干脆就不用YOLO。
  2. 摄食情况识别:目标检测重合度与密度估计的双策略

    摄食阶段往往伴随快速聚集、争食、短时密度提升。提供两种互为备份的策略。

    方案 1:基于 YOLO 的框重合度分析(位图法)

    适用于 YOLO 能稳定检测鱼体但存在局部重叠的场景。这个需要实际测试哦。

    1. 处理流程

    1. 在投料机周围布设摄像头,定义投喂区域 ROI。
    2. 使用 YOLO 统计 ROI 内的所有目标框。
    3. 为提高“重叠检测”效果,需要适当调高 NMS 阈值以保留重叠框。
    4. 使用位图法计算重合度:

    步骤如下:

    1. 将图像与所有框统一裁剪或缩放到 640×640。

    2. 计算所有检测框面积之和为 S。

    3. 创建一个 640×640 的矩阵 M。

    4. 每个框覆盖到 M 上,将对应区域置为 1。

    5. 计算重合度:

      overlap=Scount(M==1)overlap = \frac{S}{\text{count}(M == 1)}

    重合度越高,说明鱼体集中程度越强,可作为摄食活跃度指标。

    2. 方法局限

    • 当 YOLO 漏检(低光、水浑)或分辨率不足时,框数量下降,重合度会被错误拉低。
    • 当 YOLO 框无法重叠(鱼体太小或太密导致合并框)时,重合度会失真。

    当实测发现这个方案明显不行,就需要一个鲁棒性更高的备选方案。

    方案2:CSRNet 密度估计(推荐)

    1. 代替位图法进行密度估计,避免漏检影响。下面是一个例子,原论文的图片,我当然没有时间尝试复现。

    2. 使用 YOLO 做

      • 标定 ROI
      • 剔除异常目标(如水草、泥沙、漂浮物、不规则伪影)
      • 识别摄像头故障(画面一片黑、偏移、模糊),此时报警提醒用户矫正摄像头位置
      • 如果实现困难,或者同时跑2个模型跑不动,那就干脆不用YOLO。

      CSRNet 提供: ROI鱼群密度。

    3. 实现思路:

      1. 在投料机周围布设摄像头,定义投喂区域 ROI。

      2. 投料时启动模型,得到密度。

      3. 收集多次的密度取均值,与均值进行比较。

      4. 低于均值,报警。

        这里的密度也可以表征为ROI内的鱼的数量。

  3. 模型切换策略,实现起来困难就不做,就在上面两种方案二选一,选效果好的

    为保证鲁棒性,两种方法可自动切换:

    • 若 YOLO 在一段时间内检测框数量大幅下降,则切换至 CSRNet。
    • 若 YOLO 重合度长时间极低,也切换至 CSRNet。
    • 若环境稳定且 YOLO 框数量足够,则使用位图法。

    此机制使系统具有自适应能力。

    可参考:

    YOLO算法在水下检测,DeepSORT,水下检测与计数方法,基于YOLO-Crab与改进的DeepSORT的水下河蟹检测与计数方法,人群密度估计,深度学习,CSRNet,自己去查,尝试先用 PyTorch 复现吧!

    优点:

    • 模型性能开销不高。
    • Pytorch 转换方便。等等。

创新点3 多端协同控制与可视化平台

系统实现小程序、云端与硬件的多端协同,保证用户交互、数据传输和设备管理的统一体验。

实现方法

  1. 通信架构
    • Mega2560负责传感器采集与设备控制。
    • ESP8266负责联网与数据上报。
    • 使用巴法云的MQTT作为可靠的消息与指令中转站。
  2. 小程序端设计
    • 用户界面采用轻量、优雅的交互方式。
    • 提供实时数据展示,包括水质参数、设备状态等。
    • 支持折线图浏览,用户可查看实时数据或某一天的历史数据。
    • 用户可手动按下按钮发送指令,连接设备或启动增氧机。
  3. 云端与资源优化
    • 引入Cloudflare CDN,提高加载速度与访问安全性。
    • 使用独立域名并对小程序资源进行压缩,显著降低包体积。
  4. 后续更新计划
    • 重合度、缺氧行为等智能识别结果的卡片式展示。
    • 激活码,需要输入特定激活码才可以使用。
    • 将视觉识别的关键帧密度图片上传并展示,增强解释性与可追溯性。