基于深度学习的鱼病防治APP教学实践系统设计

2024-05-15 13:21冼远清江颖龙初庆柱彭小红
实验室研究与探索 2024年3期
关键词:鱼病病防治模块

冼远清,江颖龙,初庆柱,彭小红

(广东海洋大学a.数学与计算机学院;b.水生生物博物馆,广东湛江 524088)

0 引言

课堂教学是大学教育的重要组成部分[1]。在新工科背景下,将实际工程应用与理论知识紧密结合是课堂教学高质量发展的内在要求。近年来,人工智能技术迅猛发展,被广泛应用于人脸识别、表面缺陷检测、农业虫害识别等领域[2-4]。实验教学环节中引入人工智能技术,将有利于提升大学课堂教学效果。

移动编程技术是计算机类专业的核心课程,教学内容由理论教学和实验教学组成。传统的基于活动(activity)、布局(layout)、碎片(fragment)、内容提供者(content provider)、服务(service)、广播接收器(broadcast receiver)等知识点的实验教学方式,无法达成工程实践能力的培养目标,同时也缺少与人工智能技术相结合的实验教学内容。

针对移动编程技术教学中存在的问题,基于成果导向教育(outcome-based education,OBE)理念[5],引入CDIO(构思(conceive)-设计(design)-实现(implement)-运作(operate))教学模式[6],以Android和YOLOv5s为核心技术,将传统基于知识点的实验教学模式向以目标成果为导向的实验教学模式转变,实现教学过程的持续改进,确保达成培养工程能力的目标,具体实验教学模式对比如图1 所示。

图1 传统的实验教学模式和基于CDIO的实验教学模式对比

从图1 看出,基于OBE 理念设计的CDIO 实验教学模式,以实现基于YOLOv5s的鱼病防治APP项目开发为目标成果,反向设计实验教学过程,培养学生的创新精神,实现“做中学,学中做”的主动式实践方式,强化工程综合能力的培养,提升教学效果。

1 项目构思(conceive)—系统功能与技术选型

1.1 系统功能

学生开发团队通过文献调研、市场调研等方式,汇总各种实际需求,并对需求进行充分研讨,以实用、快捷为目标,确定鱼病防治APP的核心功能。

图2 展示了一个具体案例,核心功能模块包括注册登录、鱼病识别、鱼病问答、鱼病百科、个人中心。鱼病识别模块是核心技术部分,将人工智能技术与移动平台技术衔接,为用户提供拍照上传、疾病识别和防治建议功能。鱼病百科实现了不同鱼病的百科知识展示功能,鼓励用户发扬“我为人人”的奉献精神,参与鱼病百科知识不完善条目的编辑。鱼病问答则提供了一个鱼病专家和养殖户沟通的渠道,养殖户发布鱼病问题,APP把问题自动或指定分配给专家进行解答。后期,还将实现鱼病专家和养殖户的直接联系功能。

图2 系统功能

1.2 技术选型

(1)Android系统。Android系统在移动互联网中占据重要地位,是谷歌公司推出的开源移动操作系统。Android系统基于Linux 内核设计,系统软件堆栈分为5 层,分别是应用程序层、Java 应用程序接口框架层、运行时及原生C/C ++库层、硬件抽象层和Linux 核心层[7]。

Android 平台被广泛应用于物联网设备、移动设备、穿戴设备等。基于Java 语言、Kotlin 语言开发Android项目,编译并打包成APP应用程序,方便下载安装。

(2)YOLOv5s。卷积神经网络在计算机视觉任务中发挥重要作用,以Faster-RCNN 为代表的两步检测算法和以YOLO、SSD 等为代表的一步检测算法成功应用于目标检测任务[8]。YOLO系列深度神经网络属于实时目标检测算法,可以在一次前向传递中同时检测出图像中的多个目标,并以速度快、精度高等优点受到广泛关注。

YOLOv5s是一种检测速度快、准确度高的深度神经网络,网络结构由输入模块、骨干网络模块、特征融合模块和预测输出模块4 个部分构成,采用Focus 切片操作模块、卷积-归一化-激活函数(CBL)模块[9]、跨阶段部分(CSP)网络[10]、空间金字塔池化(SPP)网络[11]、特征金字塔网络(FPN)[12]、路径聚合网络(PAN)[13]等技术提升特征提取和融合能力。YOLOv5s属于轻量级的目标检测算法,适合部署到资源受限的移动端设备。

(3)MVVM 模式。MVVM(Model-View-ViewModel)是一种软件架构设计模式,也是一种简化用户界面的事件驱动编程方式[14]。MVVM 由MVC(Model-View-Controller)模式发展而来,实现程序与数据的逻辑解耦,其核心是ViewModel 层,负责转换Model 中的数据对象,使得管理和使用数据变得更容易。

MVVM与MVC 的最大区别在于MVVM 实现了View和Model 的自动同步。当Model 的属性改变时,对应View层的显示会自动改变,无须手动操作文档对象模型(DOM)元素改变就可实现View的显示。

(4)JSON 数据解析。JSON(JavaScript Object Notation)独立于具体编程语言和平台,是一种轻量级的文本数据交换格式[15]。作为服务器和客户端进行交互的数据格式之一,与可扩展标记语言(XML)数据交换格式相比,JSON比XML更小、更快、更易解析。

2 项目设计(design)—深度神经网络和APP设计

2.1 YOLOv5s鱼病检测算法

YOLOv5s深度神经网络实现图像的端到端检测,用户只需要将图像输入,经过网络推理后立即获得检测结果。YOLOv5s网络结构如图3 所示。

图3 YOLOv5s网络结构

YOLOv5s不仅采用了马赛克数据增强技术,还采用了自适应图像缩放技术,提升了输入端的数据多样性。特征提取骨干网络由Focus、CBL、CSP和SPP 4 个模块共同构成。

特征融合颈部模块采用了FPN 和PAN 组合的结构形式,进一步对检测目标多尺度融合,强化目标的特征多样性。预测模块采用了完整交并比(CIoU)作为编辑框的损失函数,并采用非极大值抑制技术对检测的目标框进行筛选,增强对目标的检测能力。CIoU损失函数计算式为

式中:RIoU为目标框和预测框的交并比;b为预测中心坐标的参数;bgt为真实目标边界框中心的参数;ρ 为b和bgt之间的欧氏距离;c为真实框和预侧框最小外接矩形对角线长度;v为长宽比;α为非负平衡系数。

2.2 APP设计

智能鱼病防治APP 的系统架构包括底层基础设施层、平台层、软件应用层、用户层,如图4 所示。用户层面向Android、iPhone OS、鸿蒙等3 种不同操作系统的用户,选定其中一种作为实现对象。

图4 系统架构

智能鱼病防治APP的开发采用前后端分离模式,前端人员负责注册、登录、鱼病图像展示、防治知识等用户界面(UI)的设计以及activity功能的实现,后端开发人员负责服务器端架构搭建、数据库设计等工作。该系统采用轻量级OKHttp 框架技术与服务器进行网络通信。

2.3 数据库设计

将MySQL 作为该APP 的后台数据库,并利用关系规范化理论对数据库中的数据表进行优化设计,消除数据操作中可能存在的插入异常、删除异常、更新异常、数据冗余等关键问题。数据库中数据表的依赖关系由主外键控制,确保数据库中数据的一致性和完整性,如图5 所示。

图5 数据库核心表局部逻辑结构关系

针对鱼病防治系统数据库设计了用户表、鱼病问答表、鱼病百科表、鱼病识别表、收藏表、浏览足迹表等数据表。鱼病识别表实现了鱼病识别的核心功能,存储了鱼病名字、鱼病紧急程度、鱼病图片、鱼病图片上传者、鱼病防治建议等相关数据。用户表存储用户名、身份、密码、公司、专业等信息,并通过用户表的uid 字段与鱼病问答表、鱼病百科表、鱼病识别表相关字段进行主外键关联,保证数据的一致性。

3 项目实现(implement)—深度神经网络训练和APP实现

3.1 开发环境搭建

在Windows 10 环境下搭建了Android 开发平台,将PyTorch作为神经网络训练的框架技术,最终部署到Apache服务器,系统主要开发软件如表1 所示。

表1 系统核心开发软件配置

3.2 数据集构建

通过养殖场实地拍摄和网络爬虫的方式采集图像数据,收集了白点病、赤皮病、腹水病、溃疡病、烂鳃病、水霉病、鱼鲺病等7 种常见鱼病图像,如图6 所示。

图6 常见鱼病示例

利用LabelImg 软件对数据图像进行标注,形成了811 张图像的鱼病数据集,并命名为GDOU-FD,按照8∶1∶1的比例随机划分了训练集、验证集、测试集。

3.3 YOLOv5s训练

利用迁移学习思想,将经过大型图像识别数据集COCO预训练得到的权值文件作为YOLOv5s 网络训练的初始权值文件,提升网络的预测效果并加快网络的收敛速度。根据鱼病数据集GDOU-FD 的类别数量,设计YOLOv5s.yaml网络配置文件,核心参数如表2 所示。

表2 YOLOv5s 网络配置核心参数

其中,anchors 是通过对GDOU-FD 数据集的锚框进行聚类后得到的数据。设置鱼病数据集存放路径和具体鱼病标签,修改训练文件的超参数,如迭代次数epochs、学习率lr、批处理图像量batch-size、初始权重参数位置weights等,执行代码train.py 脚本文件完成训练,并根据训练的情况行微调。

3.4 APP实现

鱼病防治APP实现由UI和逻辑代码两部分构成,UI由XML 语言编写,逻辑代码部分由Java 语言实现。

UI设计主要以海洋风格为主题,蓝色为主色调,配以鱼类图像,风格清新,用户能够在愉悦的视觉体验中使用鱼病防治系统。用户使用特定功能前必须在平台登录、注册账号才能进行下一步操作,登录页面和注册页面如图7 所示。

图7 登录和注册页面

逻辑代码部分主要在Android项目文件的Java文件夹对应的activity.java 文件进行编码,实现APP 系统功能。页面之间的跳转主要通过Intent 对象实现,并完成页面数据的传输,还通过广播接收器、Toast 等对象完成与用户的信息交互。代码编写过程中,还需要通过AndroidManifest.xml 文件设置APP 的网络访问权限、读取安全数字卡(SD)权限、启动页面等关键信息,保证APP的正常运行。

4 项目运作(operate)—部署测试和答辩路演

4.1 部署测试

4.1.1 部署

(1)部署权值文件。利用YOLOv5s 模型对鱼病数据集进行深度神经网络训练后得到权值文件,并需要将权值文件部署至移动端才能进行识别。完整的权值文件部署过程如图8 所示。

图8 部署流程

为加快推理速度,利用工具包onnx-simplifier 将best.onnx文件进行简化处理。随后,需要修改bestsim.params 文件数据,并将该文件最后3 个Reshape值修改为0=-1。

将best-sim.params 和best-sim.bin 文件拷贝至Android 系统assets 目录下并修改名字为yolov5s.params和yolov5s.bin。最后,修改Android 系统jni 目录下yolov5sncnn_jni.cpp 文件,将其中的class_names数组修改为数据集标签定义的类别名称,完成权值文件部署工作。

(2)部署Apache 服务器。使用计算机端模拟服务器功能。查看计算机端IPv4 地址并使移动端与计算机端处于同一个局域网下,移动端请求的地址为计算机端IPv4 地址;将计算机端防火墙暂时关闭,并注释Apache 文件夹中httpd.conf 文件的“Require all denied”项。之后,启动ApacheMonitor.exe完成服务器管理。

4.1.2 测试

选取鱼病识别模块和鱼病百科模块为研究对象,进行功能性测试。

(1)鱼病识别模块。疾病识别模块是智能鱼病防治APP的核心功能,用户在识别页面中可使用本地相机拍照,或是从本地相册中选取一张照片进行识别。检测过程和结果展示页面如图9 所示。

图9 检测过程和结果展示页面

系统得到识别结果后将详细信息返回给用户,显示鱼病图像的类别以及发生的概率,同时给出病情特点和诊治建议。

(2)鱼病百科模块。用户可以在百科知识模块中检索数据库中已有鱼病信息和防治方法,管理员可以通过服务器向用户推送鱼病相关知识,如图10 所示。

百科知识页面中,用户可获取服务器的推送信息。单击推送信息后转到百科详情页面,查看鱼类疾病详情。

4.2 答辩路演

实际教学过程中,将学生分成4~6 人的开发小团队,鼓励跨宿舍、跨班级、跨性别协同工作,采用项目经理负责制统筹安排开发团队工作,共同完成项目构思、设计、实现、运作等教学环节。其中,项目路演是实践教学的重要环节,重点培养学生的展示、演讲、思辨能力。实验报告撰写环节则采用分工合作的方式,团队成员将分工完成书面材料的撰写,由队长完成团队整体报告,同时应按照学校规定的报告格式撰写。

答辩以学生团队队长参与评分的方式进行,考察实验项目报告书和实践情况2 个部分,共计100 分。其中,实验项目报告书考察选题质量(10 分)、结构内容(20 分)和报告格式(10 分)等,实践情况考察由技术选型(15 分)、流程功能(15 分)、界面设计(10 分)、展示答辩(20 分)组成。

5 教学效果

该实践的内容涉及知识面广、综合性强,要求学生掌握前端、后台、数据库、移动端、深度神经网络等技术的综合应用,对学生综合素质培养有很大的推进作用。通过实践教学,学生熟练掌握了Android 的开发流程、YOLOv5s的训练、服务器端部署等过程,将科研项目引入到实践中,极大地提升了学生的学习信心,培养了学生的实践创新能力。人工智能技术的引入,激发了学生对人工智能技术进一步学习拓展的兴趣。

以信管1203-4 班级为实验班级,基于该实验设计和课程引导,该班级学生申请了4 项大学生创新创业训练项目,参加省级竞赛获奖28 人次,并有13 人加入了学校各类技术创新创业团队。

6 结语

融合Android 和人工智能技术进行工程实践开发,基于OBE理念设计、引入CDIO教学模式,符合新工科建设对创新型人才的培养要求。该模式与科研热点-人工智能技术紧密连接,以鱼病防治为实际应用场景,既有先进理论学习,又有新技术加持,还能锻炼演讲、思辨能力,全方位满足学生的学习需求。该模式使得学生参与积极性高、获得感强,提升学生的工程实践能力和创新能力,为学生进一步走向科学研究、创新创业打下良好基础。

未来,课程组将进一步优化教学环节,消除和减少实践中一些非智力性环节,更着力于培养学生的科技创新能力。

猜你喜欢
鱼病病防治模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
水产养殖中鱼病的防治措施分析
禽病防治把握“宜”“忌”
鱼病肆虐,4000万打水漂!洪湖龙口有水产人在行动
震撼!屈老师第六期渔医培训班座无虚席,“一滴水诊断鱼病”新增内容惊艳全场
要注重防控2019年春季鱼病的再度暴发
夏季到 奶牛肢蹄病防治要跟上
对牛口蹄疫病防治的探讨
猪的饲养管理及猪病防治