基于ResNet50模型的猪脸识别APP设计研究
2020-06-30冯明强曹冬颖李佳妮
冯明强 曹冬颖 李佳妮
摘 要: 為了帮助养猪场实现猪只精准管理,应用深度学习技术设计了一款猪脸识别APP。利用ResNet50神经网络模型对照片进行训练与预测,并以MUI框架和Django框架为依托开发APP。实验结果表明,在ResNet50模型基础上优化后的网络,对猪的面部照片有着较高的识别率。
关键词: 猪脸识别APP; ResNet50; 深度学习; MUI框架
中图分类号:TP311.5 文献标识码:A 文章编号:1006-8228(2020)06-46-04
Abstract: In order to help the pig farm to achieve accurate pig management, a pig face recognition App is designed by using deep learning technology in this paper. The ResNet50 neural network model is used to train and predict photos, combining with MUI framework and Django framework, a pig face recognition App is finally realized. The experiment results show that the optimized network based on ResNet50 model has a high recognition rate for pig's facial photos.
Key words: pig face recognition App; ResNet50; deep learning; MUI framework
0 引言
随着畜牧业不断发展,人们对于食物安全和食品质量的要求不断提升。养殖场为了满足集约化管理与精确测量的要求,需要进行更高效的牲畜识别管理。目前用于猪只身份识别的方法主要为RFID标签方案,但是此方案耗时长、成本高,耳标易丢失,且要对猪耳朵打洞,猪难以适应,对操作人员的安全也构成了威胁[1]。此外,在传统的猪只识别方法下,养殖户进行骗保的现象难以避免。
近年来,计算机视觉的飞速发展推动了深度学习技术在众多领域的广泛应用。卷积神经网络作为深度学习的一大经典网络,在图像识别上的表现比传统方法更加优秀。随着AlexNet、VggNet、GoogleNet、ResNet等[2]深层网络模型被相继提出、不断改进,网络模型的识别准确率越来越高,这同时带来了梯度消失和梯度爆炸的问题,而残差网络可以在一定程度上解决这个问题[3]。ResNet50[4]是一种易优化、计算负担小的残差学习框架。随着移动互联网技术迅速发展,各种APP凭借强大的实用功能愈发普及[5]。
本文介绍的猪脸识别APP利用ResNet50网络模型的训练结果,实现了对猪只的高精度识别。这款APP能够方便养殖户、保险公司等用户,减少养殖场进行猪只识别所耗费的人力、物力和财力,降低保险公司被养殖户骗取保险金的概率。
1 数据采集处理与网络模型训练
在深度学习中,网络模型的结构优劣是识别率高低的决定性因素,因此下面将分析猪脸照片在ResNet50网络模型下的准确率。
1.1 数据采集与处理
数据集来源于吉林省某地的一家养猪场,此场对猪只实行分栏管理。将摄像头安装在食槽上方,根据摄像头视角范围调整安装角度后,可保证一个摄像头能够拍摄到五头猪只吃饭时的脸部照片。由于猪圈不是完全处于室内,因此拍摄要考虑太阳光照强度,在上午和下午的适宜时间打开摄像头,拍摄期为三天。获得视频数据后,使用OpenCV完成对视频流的分帧,得到的每一张图片包含五头猪。可用两种方法获取到单张照片,一种是使用目标检测神经网络,另一种是使用标记工具。为了提高分割的准确率,本文采用labelImg工具,标记出每一张图片中较为清晰的猪脸,labelImg将每一张图片中的标签信息保存在对应的xml文件中,借助python对文件做相关操作,将每一张图片中标记出的猪脸裁剪为单张照片并保存到相应编号的文件夹。最后,统一各编号猪的数据集并按照3:1:1比例划分为训练集、验证集、测试集。
为了提高识别的精确度需要扩充数据集大小,在训练网络时,利用Keras中的数据生成器对原始数据集进行旋转等增强操作。
1.2 网络搭建与训练
在神经网络中,残差网络可以在不影响网络性能的前提下解决梯度消失和梯度爆炸这两个问题。残差网络通过加入shortcutconnections,变得更易于优化。ResNet50是一个性能优良的的残差网络模型,它包含49个卷积层和1个全连接层[6]。为了提高猪脸识别准确率,本文对ResNet50结构进行优化,在最后的全连接层后连接一个最大池化层,以0.25的概率随机丢弃特征,增加一层flatten层,最后连接一个全连接层。本文搭建的网络在Keras平台上运行,keras是一种使用Python语言的深度学习框架,具有良好的封装性,隐藏实现细节,便于搭建、测试网络。
在Resnet50残差网络模型下,对比分析不同数量级的学习率对验证集正确率的影响,可以得到如下结论:
⑴ 学习率lr在过大的时候(如图1.lr=1e-3),损失函数难以收敛,导致误差较大,验证集的准确率在80%附近剧烈波动。
⑵ 学习率lr在过小的时候(如图3.lr=1e-5),可以看出损失函数在逐渐收敛,但是收敛速度太慢,在训练轮数到达40轮时loss值仍旧在1.0以上,而验证集准确率由于损失函数值的影响,只到达72%左右。
⑶ 当选择学习率lr=1e-4(如图2),则损失函数值收敛比较迅速,在40轮左右时,已经降到0.5左右,而准确率也已经到达了92%左右。
通过以上分析我们最终选择学习率lr=1e-4。
2 APP总体设计
本款APP设计主要分为四个模块:登录注册模块、天气气温模块、猪只信息修改模块和照片识别模块(如图4所示)。登录注册模块实现用户的身份验证,确保不同养猪场的信息安全。天气气温模块能够获得今日的实时天气。鉴于气温对猪的生长发育和繁殖力等方面均有一定影响[7-8],故获取气温可以便于养殖户根据不同的气温情况对猪圈的室温、通风情况进行调整。信息修改模块方便养殖户在猪的成长过程中能够实时地更新猪的最新信息。照片识别模块则对用户上传的照片进行分析识别,并且展示猪只所对应的详细信息。
同时,为了适应“高内聚低耦合”的设计思想,将神经网络模型的训练与识别和手机端APP进行分离,把对运行性能具有较高要求的模型训练与识别部署到服务器当中去,借助计算机网络使得APP与服务器能够进行交互,前后端的总体设计如图5所示。
3 APP功能实现
在移动端,为了使其拥有更好的跨平台性和维护简单性,本文采用了由DCloud推出的混合APP前端开发框架—MUI框架。MUI框架具有轻量级、仿原生UI、跨平台、易上手等特点,同时也克服了以往Hybrid APP开发的页面白屏、浮动元素抖动、下拉刷新不流畅等问题[9]。在服务器端,考虑到本文搭建的神经网络模型使用了基于python语言的keras框架,故选择python的Web框架—Django。Django框架具有url设计简洁、管理界面自动化、可扩展性强大等特点。Django自身所具有的MTV架构也大大的简化了后端的逻辑开发。
在整个APP框架当中,根据关键技术进行划分,系统主要包含了三个模块:数据交互请求模块,图像识别模块和数据存储访问模块。
3.1 数据交互技术模块
在MUI官方文档中说明了网络交互的API,mui封装了常用的Ajax函数,支持GET、POST请求方式,在数据传输时支持多种格式的数据类型。本猪脸识别APP开发均采用了JSON格式,因為JSON格式是一种轻量级的数据交换格式,具有占用网络资源小,与编程语言无关等优点,同时对电脑而言,解析和生成JSON格式的数据也具有较高的效率。
3.2 图像识别模块
在图像识别模块主要有两大步骤:
⑴ 通过网络请求传输照片。
⑵ 利用训练好的模型进行预测。
在传输照片时将图片转化成base64编码,base64是一种常用的传输8Bit字节码的编码方式,常用于传递较长的标识信息。因为利用base64编码图片后,得到的数据是无法被人识别的,所以可以同时实现对图片数据的加密(如图6)。
在进行预测时,利用在训练神经网络时保存好的权重参数模型(即保存的.h5文件),就可以得到待测试图片对应所有已有模型的one-hot编码,进一步得到上传的图片的样本标签,再根据此标签从数据库当中获取对应的猪只信息发送回前端。
3.3 数据存储访问模块
将用户信息与猪的信息存储在Mysql数据库当中,而Django服务只需要对配置文件进行配置就可以使用自身带有的数据库访问组件对数据库进行操作。也正是因为框架本身对数据库操作的封装,使得编程者不必关心数据库定义语言和操作语言,大大降低了操作的难度与出错率。Django自身还带有admin后台管理,只需要在终端进行用户创建操作和在admin.py文件里注册需显示的类信息以及自定义显示样式即可。管理员能够在网页端对数据库数据直接进行增、删、改、查的操作。
猪脸识别APP的主要功能实现如图7-10所示。
4 结束语
本文通过对具有良好性能的ResNet50网络模型进行学习研究,设计开发了一款界面简洁,操作简单的猪脸识别APP。此款APP能够在不需要标签的情况下,对猪进行识别,降低了养殖成本。实验表明:Resnet50模型对猪脸照片有着较高的识别率,准确率在92%左右。此外,在有适合的权重配置文件时可以直接应用于其他动物的识别,有着较好的扩展性。在后续研究中,将进一步优化网络模型,从而获得更高的识别率,同时扩展APP功能,提高APP的实用性。
参考文献(References):
[1] 秦兴,宋各方.基于双线性卷积神经网络的猪脸识别算法[J].杭州电子科技大学学报(自然科学版),2019.39(2):12-17
[2] 王卫民,唐洋,张健,张轶秋.基于卷积神经网络特征融合的人脸识别算法[J].计算机与数字工程,2020.48(1):88-92,105
[3] 肖雅敏,张家晨,冯铁.基于多窗口残差网络的单图像超分辨率重建[J].计算机工程:1-11[2020-02-28].https://doi.org/10.19678/j.issn.1000-3428.0057224.
[4] HE K, ZHANG X, REN S,et al. Deep residual learning for image recognition[C]//Proceeding of the IEEE Conference on Computer Vision and Pattern Recognition,2016:770-778
[5] 高国弘,缑晓辉,高恺宁.基于MUI前端框架绘制天气预报APP[J].电脑编程技巧与维护,2019.10:56-60
[6] 王恒,李霞,刘晓芳,徐文龙.基于ResNet50网络的乳腺癌病理图像分类研究[J].中国计量大学学报,2019.30(1):72-77
[7] 韩君,靳伟霞.天津民俗文化的数字化读物APP设计研究[J].包装工程,2017.38(20):179-183
[8] 姚建国,夏东.气温对猪繁殖力的影响[J].动物科学与动物医学,2000.2:25-27
[9] 谭良溪.浅谈气温对猪生长育肥的影响及对策[J].湖南畜牧兽医,1998.3:2-3