沈军宇, 李林燕, 戴永良, 王 军, 胡伏原
(1.苏州科技大学 电子与信息工程学院,江苏 苏州215009;2.苏州经贸职业技术学院 信息技术学院,江苏 苏州215009;3.昆山市农业信息中心,江苏 苏州215300)
实时高效的水下鱼群探测对于海洋和湖泊中鱼群活动规律的监测具有明显的实际意义。 近年来,鱼群检测问题引起了世界范围内学者的关注并取得了较大的发展。 ALIYU 等人[1]提出利用Chain Code 和Corners-Harris Stephen 算法分别提取出鱼苗的形状与区域位置,用于检测单条鱼或互相遮挡的鱼群。 Le 等人[2]提出一种基于骨骼端点的骨骼提取算法,利用优化Otsu 算法提高分割出鱼群精度。Spampinato 等人[3]在连续的视频帧中使用帧差法, 利用动态背景更新算法和自适应高斯混合模型提升实时视频中鱼群的检测精度。笔者也基于深度学习目标检测算法[4],利用YOLO[5]算法进行端到端训练,直接回归得到目标位置和类别信息,极大地提升了实时视频中鱼群检测的精度和速度。
顾娅娣等人[6]利用信息管理系统与WEB-GIS 技术结合,建设合肥市旅游管理信息化平台,促进旅游企业与公众信息资源的快速获取。余惠强等人[7]基于Web 软件开发技术搭建的青藏铁路职工健康监护系统,对高原病起到较好的预防与救治效果。 杨雪勇[8]针对报社人事特点,利用JAVA 语言开发出一套人事信息管理系统,极大地提高人事管理的效率。 奚雪峰等人[9]以核电企业焊接工作流为应用背景,基于UML 面向对象技术实现工作流管理系统的建模,包括用例模型、静态模型和动态模型,并在实际生产中产生极大的经济效益。张志敏等人[10]以及邵志文等人[11]设计的检测管理系统,可以极大地提高数据的获取与处理的时效性,辅助系统使用者做出更加合理的决策。
为了能够实时探测鱼群的生活习性、寻求鱼群的活动规律,首先,利用YOLO 检测算法对实时采集的水下监控图像做鱼群检测,相比传统的鱼群检测算法,检测精度可以提升20%以上,并且可以实现实时的鱼群检测;然后,结合C# 编程语言与.Net Framework 框架,将检测结果在数据库中存储,方便软件使用人员对视频和图像的检测结果进行查看;最后,根据历史数据实现可视化图表展示,并且根据水域覆盖面积估算鱼群分布密度。 因此,利用水下监控与YOLO 算法构建的实时鱼群检测系统,为渔业部门实时监管与信息化结合提供强有力的依据。
系统分数据采集与控制、深度学习图像处理以及软件系统三个模块,如图1 所示。 数据采集与控制模块利用水下高清监控摄像头、补光灯、声呐和云台等硬件设备,采集监控视频数据并调整监控补光与拍摄角度等参数,通过网络通信与后台管理功能模块进行数据交互。 深度学习图像处理模块利用训练好的YOLO 模型,对采集的监控视频进行逐帧检测并合成含检测结果的新视频,从而为软件系统提供监控预览功能接口。后台管理功能模块包含监控视频预览回放与监控截图记录存储,是整个系统数据存储与应用的核心,可以根据存储记录方便地进行数据的查看与统计等操作。
鱼群检测系统包含硬件设备控制功能、视频预览功能、视频回放功能、数据查看功能、数据统计功能以及信息报告生成功能。 可以实现云台转动方向和速度控制、补光强弱控制、声呐强度大小控制等操作需求;实时监控预览以及历史监控视频回放等视频操作;抓图时间信息查询、抓图详细图片展示、信息实时展示、当前月份数据统计、当年数据统计以及历年数据统计等管理需求。 具体业务流程如图2 所示。
图1 系统架构
图2 监控视频处理流程
系统采用B/S 和C/S 混合开发模式。 服务器操作系统为Windows Server 2008,IIS7.5 服务和SQL Server 2008R2 数据库;客户端包含支持IE8.0 以上浏览器的任何操作系统。目标检测模型采用Python 语言开发,使用tensorflow 框架。Web 端与通信应用程序采用C#语言开发,使用.Net Framework 框架,使用VS2015 作为系统软件开发工具。
水下部分包括:摄像云台、高清网络摄像机、绿色LED 补光灯和声呐传感器等组成。
高清网络摄像机负责区域摄像,画面清晰度满足1080 P 高清标准,摄像距离满足60 m,焦距采取6 mm 到30 mm 可变焦距;绿色LED 补光灯功率60 W,水下补光范围60 m;摄像云台满足2 轴可运动,方位360°,俯仰-45°~45°;声呐传感器满足探测距离60 m,负责识别探测范围内的活动鱼群。 其他控制设备与摄像头安装在同一固定装置上,通过电缆从水下与附近发电机相连接,同时通过光缆与水上数据传输模块进行视频的实时传输。
数据传输模块使用4G 网络将水下视频转发到服务器, 此时监控中心可以通过访问服务器实时预览水下视频,并且可以通过4G 网络将控制中心发送的控制指令传输到相应的传感器设备。
根据笔者以前的实验结果,基于YOLO 的鱼群检测可以达到90%以上的检测精度,并保持30FPS 的检测速度,比传统鱼群检测方法有更好的检测效果。
该系统采用基于YOLO 的鱼群图像检测模型,实时处理由数据采集模块传输的视频,如图3 所示。 基于水下鱼群图像训练YOLO 模型,将输入的每一帧图像输入到训练好的模型, 输出检测结果以及目标数量。此时,获取数据库中存储的每分钟鱼群数量阈值,判断是否保存该帧图像。图像保存在服务器本地文件夹,并在数据库中生成一条记录。
图3 鱼群检测原理图
3.1.1 表设计
数据库表按照多个属性分开管理监控信息,包括监控硬件及其他相关设备信息、监控回放参数、监控截图存储以及信息报告等数据表。具体表格字段设计如下:
监控信息表:包含监控设备涉及的各类基础属性信息,见表1。
表1 监控信息表
视频截图数据表: 根据视频内检测到的目标数量,结合预设的阈值参数,触发截图程序,采用ffmpeg开源软件对回放视频进行某个符合条件的时刻进行截图,保存的数据结构见表2。
表2 截图数据表
视频回放数据表:用于存储视频回放参数,包括视频回放地址以及回放时间点,可以按照时间条件对数据查找与筛选,数据结构同表2 类似。
信息报告数据表: 根据数据库保存的数据信息,自动生成报表,并可以有选择的填写报告人(水产专家)的分析意见,报告的具体数据字段以及数据结构见表3。
表3 信息报告数据表
3.1.2 表关系
各个表之间的关联信息如图4 所示,根据监控的基础信息进而查找到相关联的数据信息,然后可以按照当日、月份、年份、年度进行统计分析。
图4 数据库关系图
根据系统的功能需求与设计原理图,鱼群探测系统网页端主要包含如图5 所示的三大功能模块。利用深度学习框架实时检测水下视频,当某一帧目标数量大于设置的阈值时候,从该节点保存视频,利用ffmpeg 截取图片存到服务器中, 并在数据库相应表格中产生一条记录。 此时,网页端可以查看历史存储记录以及数据统计,系统使用人员也可以根据数据生成相应的报告。
3.2.1 实时预览与视频回放
通过调用第三方平台接口获取播放参数,利用video.js 直接在网页中实现实时预览,并且可以随时修改监控参数,来调整实时视频的显示结果,包括摄像头焦距、补光以及曝光等;通过调整云台转速调整监控视角;通过设置每分钟或者每10 分钟鱼群数量阈值可以动态调整截取图片和保存监控视频的条件。 具体如图6 所示。
图5 网页功能结构图
图6 实时预览和监控参数设置
通过查询数据库获取回放视频节点列表,可以支持查询选定时间段数据, 并且显示对应时间段截图,如图7 所示。
图7 视频回放和截图轮播
3.2.2 数据查询统计
通过第三方接口取得的实时监控视频,在基于深度学习的目标检测框架下,较为准确的检测出每一帧图像中目标个数,通过预先设置的阈值,触发保存监控视频和截图的操作。 此时,图片存储到本地服务器上且在数据库中生成一条记录。 实时查看功能通过列表展示当日截取的所有图片数据并支持按照条件检索;月度数据默认柱状图显示当前月度截图的所有数据,支持按照月度进行查看并切换到表格查看每条数据的详细信息,如图8 所示;年度数据默认柱状图显示当年所有数据,并可切换到表格详情;历年数据则默认柱状图显示所有年份的数据统计结果。 所有数据均支持数据的导出功能。
3.2.3 信息报告生成
信息报告功能显示以往生成的所有报告,并按照报告的时间排序,包含报告的新增、编辑、查看详情以及删除等功能。 新增一个信息报告的时候,按照选定的信息报告类型和年份,自动统计当年的数据并更新到页面上,然后根据用户填写的数据生成一条记录存到数据库中,如图9所示。
图8 月度数据信息查询
基于深度学习框架,构建了一个实时的水下鱼群检测系统。 通过第三方平台接口获取水下监控视频,并结合深度学习目标检测方法,快速检测实时视频中目标的数量,根据预先设置的阈值触发截图与保存视频功能,并通过网页编程技术实现数据的展示与应用,从而实现鱼群高效地检测与跟踪,为渔业部门实时监管与信息化结合提供强有力的依据。在淀山湖水下鱼群检测应用中,系统鲁棒性强,对数据处理与存储效率较高。