基于深度学习病鸡识别系统开发∗
∗大学生创新创业计划项目(201911305038);蚌埠学院应用型科研项目(2020YYX13)
在笼养鸡养鸡场,病鸡的实时自动识别和检出,是目前养鸡业界急需解决的问题,主要原因在于以下两个方面:①我国家禽养殖业由于恶劣的劳动环境和较高的劳动强度,导致劳动力成本居高不下;②病鸡具有体效应,如果病鸡不能及时识别并检出,会迅速在鸡中扩散,导致大面积生病的现象,不仅造成了严重的经济损失,而且带来了食品安全等公共卫生问题[1]。因此,利用基于深度学习的计算机视觉技术代替人工监控,实现养鸡场病鸡的实时识别与鸡情监控,对缓解养鸡场劳动力短缺,加强疫情控制,提高养殖业自动化水平,实现智慧养殖具有重要意义。
健康鸡的鸡冠颜红润,纹理均匀,鸡眼圆而有神,而病鸡鸡冠颜异常,干燥且凹凸不平,鸡眼半闭或全闭[2]。基于传统机器视觉的病鸡识别研究,主要包括通过鸡冠关键点及其移动[3]利用支持向量机进行病死鸡判断;通过对鸡冠图像颜改变,眼睛状态变化和特征的提取,鸡脚个数计数及其行为[4-5]进行病鸡识别。基于深度学习的病鸡识别方法研究很少,在细粒度分类领域利用深度学习模型进行不同鸟类的分类研究取得了积极的成果。
基于深度学习技术的图像分类和目标检测技术近年来飞速发展,出现了很多高效的模型。如在图像分类ImageNet 大赛中,在2014年提出的VGGNet [6]在当年的竞赛中得到了冠军;2015年提出的ResNet [
7]在图像定位、检测和分割中均取得了较好的名次,以及随后提出的轻量化模型MobileNet 、基于神经架构搜索的NASNet 等,皆广泛地应用于深度学习的骨干网络并进行工业部署。基于深度学习的视觉目标检测技术主要有R-CNN [8]系列二阶段目标检测算法,YOLO (you only look once )、SSD (sin⁃gle shot multibox detector )系列等单阶段算法。SSD 模型采用Faster R-CNN 算法中的锚框(anchor )策略,为提高模型的准确性和实时性,提出了SSD 模型的改进算法,如DSSD (Deconvo lutional Single Shot Detector )[9]、FFSSD (Feature Fused SSD )[10]算法等,使得目标检测精度提高的同时速度也达到实时。
1数据采集与分析
鸡的数据采集在某笼养白羽鸡养鸡场进行实时采集,数据采集场景如图1所示。使用工业相机从鸡栏的侧上方进行现场拍摄,拍摄距离为800mm ,由于病鸡数量少,且生病后会被人工及时检出,所以在养鸡场工人进行现场巡检时,遇到病鸡随即进行多角度拍摄采集多张图片,再将病鸡检出,共采集了80只病鸡的图片。采用Labelimg 图像标注软件进行图像标注,主要标注了整鸡目标,以及鸡头和鸡身等局部目标,对每一个鸡进行病鸡和健康鸡的标签标注。
图1笼养鸡场景
由于每章图片中包含了多只鸡,且病鸡和健康鸡数据的严重不均衡,病鸡与健康鸡的视觉特征差异细
微,远小于鸡的姿态、背景和光照因素导致的视觉差异,所以必须采用数据扩增的方法增加病鸡数据量,除了采用多角度拍摄病鸡图片外,还对病鸡图片进行水平翻转来增加数据量。每个病鸡平均采用3角度拍照再水平翻转,最终制作的数据集包含了病鸡样本数为80×3×2=480个,挑选了正常鸡样本量480左右,作为本课题的训练、验证样本。
2模型设计与训练
病鸡识别模型由目标定位网络和分类网络组成如图2所示,图上部为基于SSD 单阶段目标检测网络的语义区域定位网络,
丁琛琛
倪金鑫
陈永欢
陈章宝(蚌埠学院电子与电气工程学院,安徽蚌埠233030)
Development of Sick Chicken Recognition Based on Deep Learning 摘要:基于深度学习的养鸡场病鸡视觉识别和鸡情监控是人工智能在养殖产业的典型应用,是智慧养殖的关键技术之一。根据笼养鸡
养鸡场的场景分析,进行图像数据采集和标注,制作了病鸡识别数据集;提出了多区域融合的病鸡识别模型,先用目标检测网络SSD 模型对鸡及其身体区域进行定位,融合这几个区域的特征,再用CNN 网络进行病鸡分类识别;模型在服务器端进行应用部署。在养鸡场现场实验研究中,该系统可以实现整鸡及其区域的精确定位和病鸡的实时识别。
关键词:病鸡识别;深度学习;目标检测;图像分类
Abstract 押Visual recognition and monitoring of sick chickens in farms based on deep learning is a typical application of artificial intelligence in the breeding industry熏and is one of the key technologies of intelligent breeding.In this paper熏according to the scene analysis of cage chicken farm熏the image data acquisition and labeling are carried out熏and the disease chicken recognition data set is made.A multi region fusion model of sick chicken recognition is proposed.Firstly熏the object detection network SSD model is used to locate the chicken and its body region熏and then the features of these regions are fused熏and then the sick chicken recognition are carried out by CNN network.The model is applied in the server side.In the field experi⁃ment of chicken farm熏the system can realize the accurate positioning of whole chicken and its regions and real-time recog⁃nition of sick chicken.
Keywords 押sick chicken recognition熏deep leaning熏object detection熏image
classification
基于深度学习的病鸡识别系统开发
48
《工业控制计算机》2021年第34卷第1期
图像下部为多区域特征融合的CNN病鸡识别网络。定位网络利用改进的SSD目标检测模型定位鸡的位置,以及鸡的头部和鸡的身体的具体位置,分类网络首先提取前景目标,利用边框约束和几何约束获取单只鸡的整体和两个区域(鸡头和鸡身),进行区域映射提取三个区域的特征图,利用卷积网络进一步提取三个区域的特征,通过融合各区域深度特征进行病鸡分类识别。
图2病鸡识别模型设计
2.1模型设计
SSD模型是一个单阶段目标检测模型,其特征提取部分采用VGG16网络,并将最后的两个全连接层改成两个卷积层,在VGG16网络之后又连接了多个不同尺度的卷积层。在目标检测对多个网络层的特征图进行目标检测,分别使用Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2这六个网络的输出特征图进行预测输出。
SSD目标检测采用了多尺度特征图(Feature Map),卷积网络特征图在采用stride=2的卷积或者pooling后特征图越来越小,比较大的浅层特征图来用来检测相对较小的目标,而小的深层特征图可以检测大目标,浅层卷积层对对象的边缘更感兴趣,可以获得较小目标的细节信息,而深层网络对复杂的语义特征更感兴趣。
在特征图的每个位置预测K个检测框(bbox),对于每一个bbox,预测C个类别得分,以及相对于真实框的4个偏移量值,这样总共需要(C+4)×K个预测器,则在m×n的特征图上面将会产生(C+4)×K×m×n个预测值,进行目标的分类(本文为三个类别)和边框回归。最终获得8732个box,然后我们将这些box 送入NMS模块中,获得最终的检测结果。
损失函数分为两部分,目标类别的Confidence loss损失,生成框Default box与检测框的位置回归损失。位置回归则是采用Smooth L1loss损失函数,Confidence loss是典型的softmax loss损失函数。
通过SSD进行对象(鸡)和两个局部区域(鸡头和鸡身)的检测,再利用边框约束和几何约束修正检测出的对象和局部区域,抽取同一只整鸡及其两个局部区域,进入下一步的分类网络进行病鸡的分类识别。
分类网络的各区域特征提取采用VGG16网络,该网络总共有16层、13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,再采用pooling,再重复两次三个512个卷积核卷积后,再pooling,最后经过三次全连接。
将三个区域的特征级联融合为一个特征向量,再通过两个全连接层进行二分类(健康鸡或病鸡)。可以采用softmax或者sigmoid函数实现。Sigmoid函数用于二分类神经网络的输出层,softmax函数适用于多分类或二分类,采用“one_hot”编码,本文模型采用softmax函数作为网络的输出层。2.2模型训练
实验软硬件配置为Intel志强E3-1231V3服务器、NA⁃VIDIA GeForce GTX TITAN X显卡、Ubuntu16.0464位操作系统、PaddlePaddle深度学习框架。
本文首先训练定位网络,在训练分类网络,SSD模型采用预训练模型,定位出目标区域,分类输出为鸡(chicken)、鸡头
(head)和鸡身体(body)。分类识别网络实现各区域特征融合和分类训练,分类输出为病鸡和正常鸡。
在目标检测训练过程中,首先要确定训练图片中的Ground truth(真实目标)与先验框来进行匹配,到
与其IOU最大的先验框,该先验框与其匹配,能匹配的框为正样本(目标),不能匹配的框为负样本(背景)。由于正样本的数量远小于负样本,真负样本及其不平衡,对于剩余的未匹配先验框,若某个Ground truth的IOU大于某个阈值(一般是0.5),那么该先验框也与之进行匹配,一个先验框只能匹配一个Ground truth,如果多个round truth与某个先验框IOU大于阈值,那么先验框只与IOU 最大的那个先验框进行匹配。在本文病鸡数据集上进行各语义部件的定位和识别训练。训练过程中的参数优化方法皆为随机梯度下降法,首先选择较高的学习率,随着训练的进行不断降低学习,直至损失不再降时停止训练。
训练模型在验证集上的实验效果表明,鸡头的识别率和召回率皆最高,综合评价模型定位和区域识别效果F1指标达到93%左右,说明定位和识别模型效果较好。目标区域的检测效果如图3所示。
图3模型检测效果图
病鸡分类网络训练中,首先提取三个特征区域(chicken、head、body)映射特征图,分别用VGG19卷积网络提取区域分类特征,级联融合3个区域的特征向量,经过两级全连接层,最后用softmax函数实现病鸡分类。模型训练中,VGG16网络采用通过ImageNet预训练模型初始化网络参数,采用交叉熵损失函数,adam优化算法;学习率根据验证结果手动调整,调整原则为设置初始学习率为0.001,损失值衰减过慢,增加学习率过小,损失值增加,则降低学习率,训练时还要考虑过拟合问题,直到损失值不在减小为止。训练模型最终收敛,在验证集上的实验效果表明,多区域融合特征的分类效果较好。
猿模型推理与部署
模型在养鸡场的落地实施采用百度飞浆(Paddle Paddle)全场景、全平台、高性能工业级模型推理与部署方案,针对不同平台不同的应用场景进行了深度的适配优化,做到高吞吐、低时延,保证了飞桨模型的即训即用和快速部署。飞浆模型部署适配X86CPU、NAVID GPU芯片、NVIDIA Jetson、百度Edge Board 等平台,支持Linux、Windows、Mac OS等操作系统,可用C
语49
(上接第47页)
information processing systems熏2012熏25穴2雪
[7]Wang Yani熏Wu Zhendong熏Zhang Jianwu熏et al.A robust dam⁃
aged fingerprint identification algorithm based on deep learn⁃ing [C ]∥2016IEEE Advanced Information Management熏Com⁃municates熏Electronic and Automation Control Conference 穴IM⁃CEC雪熏Xi'an熏2016押1048-1052
[8]Ruxin Wang熏Congying Han熏Tiande Guo.A novel fingerprint
classification method based on deep learning [C ]∥201623rd
未识别的网络
International Conference on Pattern Recognition 穴ICPR雪熏Can⁃cun熏2016押931-936
[9]L N Darlow熏B Rosman熏Fingerprint minutiae extraction using deep learning [C ]∥2017IEEE International Joint Conference
on Biometrics 穴IJCB雪熏Denver熏CO熏2017押22-30
[10]D E Hamdi熏
I Elouedi熏
A Fathallah熏et al.Combining Finger⁃
prints and their Radon Transform as Input to Deep Learn⁃
ing for a Fingerprint Classification Task [C ]∥201815th In⁃ternational Conference on Control熏Automation熏Robotics and
Vision 穴ICARCV雪熏Singapore熏2018押1448-1453
[11]Sabour S熏Frosst N熏Hinton G E.Dynamic routing between
capsules 眼C演//Advances in Neural Information Processing Systems 30.NY押Curran Associates Inc熏2017押3856-3866[12]Lin T Y 熏Dollár Piotr熏Girshick R 熏et al.Feature Pyramid Networks for Object Detection [C ]∥2017IEEE Conference
on Computer Vision and Pattern Recognition穴CPR雪熏2017
[13]He K熏Zhang X熏Ren S熏et al.Deep Residual Learning for Im⁃
age Recognition 眼C演//IEEE Conference on Computer Vision
&Pattern Recognition.IEEE Computer Society熏2016[14]Hu J熏Shen L熏Albanie S熏et al.Squeeze -and -Excitation Net⁃
works眼J演.IEEE Transactions on Pattern Analysis and Machine Intelligence熏2017熏42穴8雪押2011-2023
[收稿日期:2020.11.26]
言、C++、Python 进行应用开发。飞浆模型推理和部署全景图如图4所示。
图4模型推理与部署
在模型准备阶段,采用百度飞浆深度学习框架进行模型设计和训练。飞桨是国际领先的端到端开源深度学习平台,集深度学习训练和预测框架、模型库、工具组件和服务平台为一体,拥有兼顾灵活性和
高性能的开发机制、工业级的模型库、超大规模分布式训练技术、高速推理引擎以及系统化的社区服务等五大优势,致力于让深度学习技术的创新与应用更简单。X2Paddle 工具支持将Pytorch /Tensorflow /Caffe 等其它深度学习框架训练得到的模型,转换至飞浆模型并进行部署。
PaddleSlim 是飞浆框架的一个子模块,主要用于模型压缩的工具库。在PaddleSlim 中,不仅实现了目前主流的网络剪枝、量化、蒸馏三种压缩策略,还实现了超参数搜索和小模型网络结构搜索功能。随着国家强有力的推进5G 移动网络的发展,更多的移动应用和智能终端将快速占领消费者的生活,深度学习模型在各种消费者智能终端的高效部署已成为重要的需求,这就需要我们根据终端环境对现有模型进行压缩优化。
模型部署阶段,飞浆提供了服务器端、移动端、IOT 嵌入式硬件端、网页等多平台的推理部署方案。Paddle Inference 为核心框架推理引擎,适用于模型算法复杂,对硬件要求较高的场景,Paddle Serving 为服务化部署框架,实现模型在服务器端的快速部署;Paddle Lite 为轻量化推理引擎,适用于模型较小、资源较少的Mobile 和IoT 端侧的多种平台的轻量化高性能部署;Paddle.js 是Web 前端部署的推理引擎,在浏览器中运行深度模型的框架,适用于小模型、迟延要求较低的场景。
病鸡识别模型通过定位模型和识别模型的二阶段网络,适用于中大型养鸡场进行病鸡识别和鸡情监控场景,模型强调高精度效果,弱化推理速度,所以采用在企业私有服务器端进行模型部署的方案。Pa
ddle Serving 服务化部署框架支持两种预测服务方式,一种是通过RPC 进行通信,一种是通过HTTP 进行
通信,本文采用RPC 预测服务的部署。Paddle Serving 部署在Linux 环境上,RPC Client 端在Ubuntu18上部署,在其它系统上或者不希望安装Serving 模块的环境中仍然可以通过HTTP 服务来访问Server 端的预测服务。在Client 端机器上安装Client 模块。确定数据集格式,定义读取器,划分训练集和验证集,模型训练后保存预测模型,以及包含Client 端和Server 端的配置文件,定义远程PRC 客户端,调用PRC 服务进行预测,测试模型效果。源结束语
基于深度学习的病鸡识别方法明显优于传统视觉中人工设计特征和分类模型的效果,模型在现场的实验效果与验证集实验效果一致。实验结果表明,该模型能够适应了在养鸡场景的现场部署,后续工作可以延伸到病鸡种类识别、鸡情监控等业务场景,也可以扩展到其它养殖业中。
参考文献
[1]张毅,王幼明,王芳,等.我国禽流感研究进展及成就[J ].微生物学通报,2014,41(3):497-503
[2]夏季.外观识别病鸡的六要素[J ].养殖天地,2005(9):30-33
[3]彭彦松.基于支持向量机的养鸡场死鸡检测方法研究[D ].镇江:江苏大学,2010
[4]李亚硕,毛文华,胡小安,等.基于机器视觉识别鸡冠颜的病鸡检测方法[J ].机器人技术与应用,2014(5):23-25
[5]毕敏娜,张铁民,庄晓霖,等.基于差信息多彩模型的黄羽鸡快速分割方法[J ].农业机械学报,2016,47(12):51-57
[6]Karen Simonyan ,Andrew Zisserman.Very Deep Convolutional Networks for Large-Scale Image Recognition眼C演∥International Conference on Learning Representations.2015押441-422[7]K He熏X Zhang熏S Ren熏et al.Deep Residual Learning for Im⁃
age Recognition 眼C演∥International Conference on Computer
Vision and Pattern Recognition熏2016押907-918
[8]Ren S Q熏He K M熏et al.Faster R-CNN押towards real-time
object detection with region proposal networks 眼J演.
IEEE
Transactions on Pattern Analysis and Machine Intelligence熏2017熏39穴6雪押1137-1149
[9]Chengyang FU熏Wei Liu熏Ranga A熏et al.DSSD押Deconvolu⁃tional single shot detection眼J演.arXiv押1701.06659.2017
[10]Guimei CAO熏Xuemei XIE熏Wenzhe YANG熏et al.Feature -fused
ssd押fast detection for small objects眼J演.arXiv押1709.05054.2017
[收稿日期:2020.10.17
]
基于深度学习的病鸡识别系统开发
50