APP下载

基于Core ML的智能植物健康检测App的设计与实现

2021-11-28吴学谦李韵邓晓军

电脑知识与技术 2021年30期
关键词:图像分类机器学习

吴学谦 李韵 邓晓军

摘要:针对用户在养殖家庭植物因缺乏养殖经验而频频失败等问题,采用平台最新的机器学习技术,设计并实现一款基于平台集植物识别、健康检测、疾病预防多功能一体的App。通过大量植物图片数据集的训练,机器学习训练准确性达到73%,训练有效性达到65%,测试准确性达到72%,总体识别精准率在70%左右。系统能准确并高效地实现植物分类识别、植物相关信息获取以及植物健康检测功能,帮助用户更好地认识身边的植物,成为公众科学科普的有效手段。

关键词:Core ML;机器学习;图像分类;植物检测

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2021)30-0013-04

开放科学(资源服务)标识码(OSID):

植物与人类的生存环境息息相关。园林植物为城市增添了新的景色,具有美化环境的作用。植物叶片的光合作用能净化空气,蒸腾作用增加空气湿度,有效地调节和改善环境小气候。一份由70多个国家250名科学家和专家撰写的联合国报告警告称,地球环境已遭到严重破坏,人类健康正受到越来越大的威胁。需要大力改善环境保护工作,到21世纪中叶,亚洲种植植物、合理利用土地资源都是绿色基础设施建设的重要一环。普通居民也可以通过种植植物的方式对人类生活环境做出自己的一份努力。

在家庭生活中不仅为了践行低碳生活理念,也为提高居室生活环境质量,绿色植物家庭养殖的想法逐渐流行。而大多数家庭没有专业的养殖经验,年轻的工作人群也没有充足的时间学习照料植物,植物养殖变成为一个难题。而国内植物智能领域软件市场中并没有找到行之有效的解决方案,目前基于人工智能技术植物类App主要存在以下问题:

1) 解决植物养护管理的应用较少。

2) 大多数应用仅关注于植物识别。

3) 绝大多数不能帮助判断植物健康。

针对上述问题,设计一款能帮助用户关注植物健康状态并提供疾病预防方案的App已经凸显。系统采用Core ML机器学习技术实现植物分类识别和植物健康检查功能,以“简洁、方便”为目标,通过轻松拍照的方式获取植物健康评分并生成健康日记,帮助用户更好地关注植物生长状态及趋势。

1 系统架构

系统架构采用MVC架构模式。MVC架构设计模式即模型-视图-控制器(Model-View-Controller, MVC),是iOS應用程序中最常见的架构,是由模型、视图和控制器三个部分组成[1]。模型即概念,是应用程序的数据表示,通常使用结构体或类来保存业务对象,是与用户界面无关的部分;视图即用户窗口,是应用程序用户可以看到并与之交互的对象,视图对象是重用且灵活的;控制器即通道,是应用模型和视图的桥梁,使用模型中的数据更新视图,在用户与视图交互时更新模型[2]。

系统架构的详细设计如图1所示,模型包括植物信息、文章信息、植物疾病信息,抽象并封装了相应的数据和操作,以供视图的查询和更新需要。视图包括植物卡片视图、文章卡片视图、瀑布流对象视图等,用于渲染App的各级界面,模型与视图之间是一对多的关系,通过控制器与模型交互,执行查询或是更新指令。控制器包括主页控制器、瀑布流控制器、植物分类识别控制器、健康分类检测控制器,理解用户与视图之间的交互信息,并将之标准化为业务事件提供给模型,促使模型对程序动作进行输出,最终选择某个视图来更新用户数据。

2 关键技术

2.1 机器学习

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能[3]。自20世纪80年代以来,机器学习作为实现人工智能的途径,相关领域的研究工作发展很快。机器学习不仅在基于知识的系统中得到应用,而且在模式识别、计算机视觉、语言识别、统计学习、自然语言处理等方面大放异彩。

2.2 Core ML框架

Core ML可以将众多机器学习模型类别整合到开发者的应用中。Core ML通过利用CPU、GPU和神经网络引擎,同时最大限度地减小内存占用空间和功耗,来优化设备端性能。由于模型严格地在用户设备上,因此无须任何网络连接,这有助于保护用户数据的私密性和App的响应速度。Core ML支持使用计算机视觉框架(Vision)分析图像,使用自然语言框架(Natural Language)处理文本,使用语音框架(Speech)将音频转换为文本,以及使用音频识别框架(Sound Analysis)来识别音频中的声音。系统主要使用Core ML框架和计算机视觉框架(Vision)来实现植物分类识别和植物健康检测功能。开发者通过Python爬虫工具和手动筛选从百度图库,PPBC 中国植物图像库,植物数据通,中国自然标本馆,花百科网站中合法下载植物数据图片[4]。在植物分类识别中,需要由示例和标签组成的训练数据,涵盖30种常见家庭养殖植物:生石花、冰玉、菊花、玫瑰、薄荷、滴水观音等,示例对应的标签是植物名。

2.3 迁移学习

开发者可以使用迁移学习工具来帮助完成机器学习,迁移学习是指采用现有的预训练模型并针对自己的数据对其进行自定义,将现在模型的知识迁移到新模型中[5]。Create ML和TuriCreate是苹果公司提供的迁移学习工具,为了实现植物分类识别,开发者利用Create ML工具选择图像分类(Image Classification)任务,Turi Create选择图像分类器工具包和已准备好的植物图片数据集进行迁移学习。进行10次迭代循环训练得到植物分类的自定义模型,可以得到训练准确性能到达73%,训练有效性能达到65%,测试准确性能到达72%。总体植物识别精准率在70%左右。当运行TuriCreate图像分类器时,会将任务分解成以下步骤:

1) 在大型通用数据集上创建CNN分类器,例如ImageNet,具有1000个类型和120万张图片。这些模型被研究人员训练过,可以有效使用。

2) CNN中每一层的输出可以视为每张图片有意义的向量表示,从任务中的每张图片上的输出层的上一层提取这些特征向量。

3) 创建一个新的分类器,将这些特征作为自己任务的输入。

步骤1重用于很多不同的问题,一旦完成就无须再更改。即使在你没有足够的数据量来创建深度学习模型的情况下,通过上述步骤执行的结果也无须调整参数,并且拥有更快的训练速度和不错的性能。该想法最早由Donahue等人提出[6],并已成为创建图片分类器模型的最佳方法之一。

当使用迁移学习时,需要选择一个用于特征提取的基础模型。可供使用的两个基本模型是SqueezeNet和VisionFeaturePrint_Screen。数据集的几乎所有训练时间都是模型从图像中提取特征所花费的时间。这些包括低级边缘、中级形状和特定高层的特征。提取特征后,Create ML 只花费相对较少的时间来训练逻辑回归模型,将植物图像分成30 类。类似于将一条直线拟合到散点,但在 2,048 个维度而不是两个维度。对于每个输入图像,VisionFeaturePrint_Screen模型生成一个包含2,048个数字的列表,这些数字在高层次上代表图像的内容。如图2所示,Create ML使用这2,048个数字作为逻辑回归模型的输入,Create ML不是在具有150,000个特征的图像上训练一个难度大的模型,而是在VisionFeaturePrint_Screen提取的2,048个特征上训练一个更简单的模型。

2.4 逻辑回归

Create ML训练的求解器是逻辑回归分类器,是一种常见的机器学习模型。逻辑回归的基本步骤:

1) 构造hypothesis函数。

2) 构造损失函数J。

3) 通过损失函数J最小化求目标函数的各个参数。

逻辑回归的hypothesis函数可以认为是一个线性回归方程的结果经过sigmoid函数得到的结果,线性回归方程可以用如公式(1)所示。

sigmoid函数如公式(2)所示,该函数又称逻辑函数:

将公式(1)通过逻辑函数转化得到的概率即是hypothesis函数。

函数<表示样本被预测为正例1的概率,可以得到样本被预测为正例和负例的概率如公式(4):

公式(4)可以合并为一个公式如(5)所示:

对预测结果的概率表示公式(5)取似然函数,得到如下的似然函数:

由于上式涉及连乘法,对其取对数函数得到对数似然函数如公式(7):

求最大值使用梯度上升法,对似然函数加个负号,通过求等价问题的最小值来求原问题的最大值,利用公式(7)和(8)联立求得损失函数J如公式(9)所示:

损失函数等价于公式(10)的形式。

利用梯度下降法求参数θ的更新式,推导如公式(11)所示:

θ为最终更新式,α为学习率,求出θ更新过程:

3 系统实现与测试

3.1 植物分类识别功能

开发人员使用Create ML迁移学习工具建立图像分类任务,分类器训练30种植物图片数据集,得到PlantImageClassifier.mlmodel机器学习模型文件并整合在应用中,通过Core ML和Vision框架来实现植物分类识别功能。相机拍照植物或者上传植物图片进行植物分类识别,将检测出的植物的名称及其他相关信息以文字的形式呈现给用户,图3a、图3b和图3c分别展示了对薄荷、菊花和龟背竹进行拍照检测的结果界面,均符合实际照片输入。

开发人员对植物分类识别功能进行了测试,测试的数据如表1所示,数据表明,检测时间与图片像素成反比,置信度与图片像素成正比,即图片越清晰,检测的时间便越短,检测的准确率便越高。这里的置信度指的是检测结果同所检测对象的实际情况一致的概率。

3.2 植物健康检测功能

植物健康检测功能同样使用与植物分类识别功能构建共性的方法。针对30种植物的每一种植物,收集其常见的植物疾病图片数据集。以菊花健康检测为例,收集数据集的分类包括白粉病、黑斑病、枯萎病、锈病和健康,利用Create ML工具建立菊花图片疾病分类任务,判断待测菊花图片与哪种标签分类下的特征相关性更强。从图4中得到菊花图片健康置信度为68%,锈病为28%,黑斑病1%,白粉病1%,因此可以推断菊花暂时处于健康状态,可能患有菊花锈病。根据图片健康检测的结果给植物进行健康分数的评估,提供疾病预防方案,使用户更好地评估植物生长健康状态。

在拍照或者上传植物照片获取植物分类结果后进一步查看植物健康报告,跳转页面期间分别调用相应植物的健康检测模型,将对植物进行植物健康评分和提供防治方案。图5a、图5b和图5c分别展示了对菊花、龟背竹和桂花进行植物健康检测的结果,给出的评分分别是100、60、85,基本符合对实际输入植物图片的生长健康状态的判断。

开发人员对植物健康检测功能进行了测试,测试的部分数据如表2所示,数据表明植物疾病检测结果与实际结果匹配程度在85%左右,能较好地评估植物生长健康状态。

4 結语

系统以践行种植植物环保理念为出发点,针对人们在家庭植物养殖因缺乏养殖经验而频频失败等问题,设计并实现一款基于iOS系统的AI智能植物健康检测App,系统设计目标明确。在系统编码实现阶段,不仅使用iOS原生开发技术,还运用了最新的机器学习技术,如在植物分类识别与健康检测中使用到了迁移学习、多分类逻辑回归、神经网络等知识,通过Create ML工具生成解决问题所需的机器学习模型。在检测系统功能方面符合预期目标,经过大量的测试和验证,完成了一定程度上的优化,目前已在AppleAppStore上架,为用户提供下载服务。

参考文献:

[1] 胡辉.IOS环境下使用MVC模式进行App开发的设计思路探索[J].数字技术与应用,2015(6):204,206.

[2] 王亚坤,郑祥盘.基于iOS和百度AI的车牌识别系统设计与实现[J].闽江学院学报,2020,41(5):58-66.

[3] 李昊朋.基于机器学习方法的智能机器人探究[J].通讯世界,2019,26(4):241-242.

[4] 许展慧,刘诗尧,赵莹,等.国内8款常用植物识别软件的识别能力评价[J].生物多样性,2020,28(4):524-533.

[5] 李亚丽,王敏,李静.迁移学习的研究现状[J].时代教育,2014(9):222.

[6] 牛伯浩.基于深度学习的植物病害检测算法研究及系统实现[D].银川:宁夏大学,2019.

【通联编辑:朱宝贵】

猜你喜欢

图像分类机器学习
基于数据挖掘的图像分类算法
基于云计算的图像分类算法
基于词典与机器学习的中文微博情感分析
基于锚点建图的半监督分类在遥感图像中的应用
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
机器学习理论在高中自主学习中的应用