周文萱 胡龙桃 张敏 方宇涛 李欣钰
摘 要: 针对常见动物识别的问题,提出了一种基于YOLO的识别分类系统。通过搭载linux系统的树莓派完成实施检测运行的识别程序。利用YOLO算法进行目标物体检测,其单个神经网络能够在一帧图像中直接预测边界边框(bounding box)和分类概率(classified probability),最后根据输入图像来输出动物物种的识别结果。其识别准确率针对鸟类可达94.61%,狗类为90.60%,牛类为79.03%。
关键词: 物种图像识别; 动物识别; YOLO; 神经网络; 树莓派
中图分类号:TP319 文献标志码:A 文章编号:1006-8228(2019)03-22-04
Design of YOLO-based small animal recognition system
Zhou Wenxuan, Hu Longtao, Zhang Min, Fang Yutao, Li Xinyu
(School of Optoelectronic Information and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
Abstract: To solve the problem of species identification and population identification of small animals, a recognition and classification system based on YOLO (You Only Look Once) is proposed in this paper. The recognition program is implemented on a Raspberry Pi with Linux system, and YOLO is used as the detection framework. The single neural network can directly predict the bounding box and the classified probability in a frame image, and output the animal recognized according to the input image. The accuracy rate of identification is 94.61% for birds, 90.60% for dogs and 79.03% for cattle.
Key words: species image recognition; animal identification; YOLO; neural network; Raspberry Pi
0 引言
近年来,机器视觉越来越多的用于人类的交通、物流和安防等方面,其在代替人工重复机械的特征识别等方面发挥着重要的作用。但是自然环境、物种研究等领域的图像识别却并不多见,随着深度学习的发展,国内外有很多学者使用卷积神经网絡进行图像识别。HuangYue[1]等使用CNN算法进行汽车图标识别,提高了识别的精度和系统的稳定性。王福建[2]等设计了车辆信息检测和识别系统,其设计了不同颜色的识别,使得分类更加细化。但是传统的算法都普遍存在一个问题,那就是检测识别速度慢[3-6],计算量大不适合小型化。而Redmond提出的YOLO(you only look once)算法,能在保证识别精度的同时,提升运算效率,加快检测速度[7]。
针对机器视觉需要较大的处理系统和繁琐的框架配置等问题,本文利用搭载linux和YOLO框架的树莓派设计了小型便携的物种识别系统,该系统成本低可以大范围普及使用,兼顾智能算法识别与低功耗小巧的双重优点,为产品普及提供了理论论证和数据支持。
1 YOLO神经网络识别算法
YOLO(You Only Look Once)算法,是一种端到端卷积神经网络,常用于目标物体检测与识别。该算法将目标检测视为目标区域预测与类别预测的回归问题,采用单个卷积神经网络直接从图像中预测目标边框和类别概率。YOLO的主要特点是快速检测和较高的准确率。YOLO直接将一张整图应用到网络中去,以便更好地区分目标和背景;同时,与其他目标检测识别方法将目标检测划分成区域预测和类别预测等多个流程相比,YOLO将区域预测和类别预测整合在一个网络中,从而提高检测速率[5,8]。其检测模型如图1所示。
该算法将待检测图像划分为一个S×S的网格,并且假设识别目标的中心落在某个网格内,则该网格负责检测此目标[7-11]。与此同时每个网格预测B个目标窗口,每个目标窗口负责5个参数的计算:目标的中心坐标(x,y)、宽度(width)、高度(height)和置信概率(confidence):
⑴
式中:Pr(Object)为此网格中存在目标的概率,表示该网格内预测目标中心坐标位置的准确性,也就是测量在特定数据集中检测相应物体准确度的一个标准。
如果网格内不存在目标物体,则其Pr(Object)的值为0,(Intersection Over Union)为目标预测窗口与真实窗口的重叠度,是一个位置定位精度的概率。
在最后进行结果预测时,每个类别通过上述条件类别概率和目标置信度的乘积得到该类别的置信分数:
⑵
综上所述,经过一系列的运算输出了一个维度为S2的向量,再将该高纬度向量进行筛除,将低于阈值的值去除掉,利用NMS算法进行迭代-遍历-消除的过程;最终只留下置信分数最高的输出。
2 基于YOLO的树莓派识别系统
本文设计的搭载在树莓派上的基于YOLO算法的识别系统可以完成常见动物识别的工作[9]。对于细节和精度一直是图像识别的难点,所以在识别动物有良好伪装的情况下,准确率大大降低。但在一般情况下,还是能将目标物体与背景区分开,并且能给出目标物体的中心坐标和边框。
当检测到包含有目标物体后,将其目标区域内的目标物体特征提取出来,用已经训练好的分类器进行分类识别,从而完成动物和物种识别分类的工作。
本文使用具有强拓展的卡片电脑树莓派作为运算平台,图像采集使用IMX2619原装800万像素摄像头,并且在最新stretch版精简了无用的功能。并且采用Pascal VOC2012数据集目标系统,使用其训练好的模型,在去除掉无用的分类后,可以针对:鸟bird、,猫cat、牛cow、狗dog、马horse、羊sheep这六种常见的动物进行识别[10]。
本文运行系统为raspiberry-stretch版,ARM架构的双核CPU,主频800MHz,未使用CUDA和GPU核心,且已经部署好OPENCV、TensorFlow和Darknet框架。由于其运算能力和内存都不足,故进行了量化模型的操作。
神经网络的节点和权重最初是存储为32位的浮点数。量化模型最简单的一个做法就是通过存储每一层最小和最大的值来压缩文件的大小,接着压缩每一个浮点数为8位整型。这样文件的大小就减少了75%。部分代码如下所示:
curl-L"https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen
.pb.tar.gz" |
tar -C tensorflow/examples/label_image/data -xz
bazelbuildtensorflow/tools/graph_transforms:
transform_graph
bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=tensorflow/examples/label_image/data/inception_v3_2016_08_28_frozen.pb \
--out_graph=/tmp/quantized_graph.pb \
--inputs=input \
--outputs=InceptionV3/Predictions/Reshape_1 \
--transforms='add_default_attributes strip_unused_nodes
(type=float, shape="1,299,299,3")
remove_nodes(op=Identity, op=CheckNumerics)
fold_constants(ignore_errors=true)
fold_batch_norms fold_old_batch_norms
quantize_weights quantize_nodes
strip_unused_nodes sort_by_execution_order
3 系统测试和试验结果
经过一系列准备工作和框架部署,为了验证本文提出的基于YOLO算法的识别系统[11-14],采用自己制作的数据集进行测试,通过编写网络爬虫程序从中国动物图片网爬取了大量的动物图片,作为测试集使用。随机抽取其中图片如图3所示。
如图3所示,四种数据集的测试集部分目标图像已经被标注出,其目标区域中心坐标和长宽已经保存[13],在此不再赘述。
本文为了简化人工工作量,进行人工校验实行分数据集测试和校验,分为鸟类、狗、牛和人四类数据集,其中人数据集为无关集,用来测试模型的误检测率。其检测结果如表1所示。
通过上述检测可知,鸟类和狗类数据集的检验正确率达到了90%以上,牛类数据集的测试准确率仅为79.03%。对于牛类数据集测试发现,基于人类良好的视觉经验可以在褐色背景识别出牛类,但是对于机器来说,对于目标物体的识别在有不明显背景色区分的情况下很难做出良好的判断,导致正确率不高。对比其他两类验证数据集,牛类的数据集中,如印度地区给牛身装扮了很多首饰的图片,也有泥泞背景中牛腿被泥水遮挡和不完整等情况的图片,这类图像的目标识别区域误检率和漏检率比较高,容易对整个系统的监测造成误差。另一方面,训练样本数目太少,且深度学习算法中多维特征的提取维度不够多,所以需要更多的样本。样本模型的数量太少不足以对于整体数据样本进行描述,因此其泛化能力不够,对于差异较大的图像预测不准的概率较大[15]。人类的数据集作为不存在其分类特征文件,故理论检测为0,但经过数据集的查验,发现部分图片有和宠物同框的现象,所以检测结果也有部分识别到。同时该检测结果运行十分缓慢,由于系统内存不够,实验是分多次做的,最后统一计算出结果。
针对上述系统误差的分析结果,还可以采用如下改善方法。
⑴ YOLO中每个Grid有30维其中8维是回归box的坐标,二维是box的confidence,还有20維的类别,要在此基础上增加基于HOG的局部特征和颜色提取等多维度的特征。
⑵ 损失函数设计的优化,让预测坐标(x,y,w,h),confidence和classification这三个方面达到最优的平衡,最基础的yolo采用sum-squared error loss方法将坐标权重和分类误差视为同等重要显然是不合理的,需要增加坐标预测的权重,将其loss weight赋予更大的值[16]。
⑶ 目标待识别物体大小不同的预测处理中,小的bounding box中预测的框线偏一点其偏移loss很大,所以采取将box的长和宽取平方根代替原本的长和宽,其对于小box(狗类和鸟类)的偏移,loss小的多,从而提高了其准确率[17]。
4 试验结论
本文设计了一种基于YOLO算法的小型化的识别检测跟踪系统,利用YOLO算法中tiny-model可以极大地减少cpu占用,从而提升其处理效率。经检验其识别率较好,但是精度有待提高。本研究主要研究和部署了基于ARM架构的YOLO深度学习分类器,并对于网络爬取的不同类型图片进行目标检测识别。其综合检测识别率为89.04%。树莓派微型卡片电脑可以运行该系统,可以扩展成为带有图像识别功能的监控探头,对于以后发展的智能监控探头,提供了理论验证的依据。
同时对于默认的YOLO-tiny算法中的前期特征提取和部分权重配置提出了增改的建议,但是增加维度会造成运算量呈几何数量增长导致效率低下问题还需进一步解决,要平衡好效率与准确率。
本文在ARM架构部署了YOLO和darknet的开源神经网络,并且实现了一套图像输入-识别-分类的检测系统,将传统工作站运行的复杂神经网络进行简化,为低功耗便携式移动图像识别设备提供了可靠的理论验证。
参考文献(References):
[1] Huang Y, Wu R, Sun Y, et al. Vehicle Logo Recognition
System Based on Convolutional Neural Networks With a Pretraining Strategy[J]. IEEE Transactions on Intelligent Transportation Systems,2015.16(4):1951-1960
[2] 王福建,张俊,卢国权等.基于YOLO的车辆信息检测和跟踪
系统[J].工业控制计算机,2018.7:89-91
[3] Dlagnekov L, Belongie S. Recognizing cars[J]. Ecologi-
calModelling,2005.113(13):71-81
[4] 邱道尹,张红涛,刘新宇等.基于机器视觉的大田害虫检测系
统[J].农业机械学报,2007.38(1):120-122
[5] Redmon J, Farhadi A. YOLO9000: Better, Faster,
Stronger[J],2016:6517-6525
[6] 李彦冬,郝宗波,雷航.卷积神经网络研究综述[J].计算机应用,
2016.36(9):2508-2515
[7] 魏海坤.神经网络结构设计的理论与方法[M].国防工业出版
社,2005.
[8] 魏星.基于SVM的山体滑坡灾害图像识别方法[J].电子测量
技术,2013.36(8):65-70
[9] 李亮,丁万山.基于ARM的纸币号码识别系统[J].电子测量技
术,2008.31(10):68-72
[10] 程曦,吴云志,张友华等.基于深度卷积神经网络的储粮害
虫图像识别[J].中国农学通报,2018.34(1):154-158
[11] 王宇宁,庞智恒,袁德明.基于YOLO算法的车辆实时检测[J].
武汉理工大学学报,2016.38(10):41-46
[12] 严晓波.基于单镜头的车辆检测与跟踪方法研究[D].贵州民
族大学,2018.
[13] 潘蓉,孙伟.基于预分割和回归的深度学习目标检测[J].光学
精密工程,2017.25(10s):221-227
[14] 刘尧.基于深度学习的气泡水平尺自动矫正系统设计[D].浙
江大学,2018.
[15] 李天剑,黄斌,刘江玉等.卷积神经网络物体检测算法在物
流仓库中的应用[J].計算机工程,2018.44(6):176-181
[16] 张春玉,黄知红.一种有效的基于卷积神经网络的车辆检索
算法[J].科技创新与应用,2018.13.
[17] 乐国庆.基于车载视觉系统的目标检测优化算法研究[D].北
京交通大学,2017.