基于OpenCV的深度学习目标检测与跟踪
2018-02-14柯研刘信言郑钰辉
柯研 刘信言 郑钰辉
摘要:目标检测和跟踪在工业应用中占有较大的比重,通过目标识别技术,可以快速准确的检验产品的一致性,降低工人劳动强度,提高企业效益,本文主要介绍了一种开源的计算机视觉库——OpenCV,OpenCV中集成的模块能够减少开发人员工作强度。本文对OpenCV中用于目标检测和跟踪的模块,和这些模块的算法基础进行了简要的介绍,本文还将对OpenCV中提供的DNN深度神经网络模块的相关内容和算法框架进行简要的介绍。
关键词:OpenCV;DNN;目标检测与跟踪
中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2018)10-0000-00
人类获取信息的主要途径有听觉、视觉、触觉等,视觉是最直接、最有效的获取信息的途径。本文介绍了一种广泛使用的计算机开源视觉库——OpenCV。OpenCV作为一种计算机视觉库,可以让计算机像人类一样获取图像的信息,让冰冷的机器更加智能化。OpenCV中提供了多种集成了各种算法的模块,开发人员可以利用这些模块轻易开发出需要的程序。OpenCV中既包含了一些传统的图像处理方法,随着神经网络的普及,也集成了相关的深度网络算法。
计算机视觉是通过计算机相关的算法,模拟出生物视觉功能的学科。通过图像设备获取图像,传入计算机进行处理,获得图像中有用的信息。传统的图像识别方法,主要是先通过提取一些特征点,然后再通过数学统计模型表示图像,最后通过图像匹配的算法对图像进行识别,再次过程中,需要人工指定相关参数和方法。近年来发表的多篇论文[2]已经指出,未来图像的处理方向会以基于神经网络的模型来进行研究。深度神经网络由于其层次多,复杂性高,能够处理获得图像中更加复杂的特征信息。与传统方法相比,深度神经网络的表现能力更加优异,能够表示更加复杂的函数关系。训练完成的神经网络,不需要人为的输入某些值来优化结果,可以自动完成图像学习和检测,自己训练自己,得到更精准的结果,同时也减少了人工劳动。
1 深度神经网络
DNN全称为深度神经网络[3],是多层神经网络结构。深度神经网络由感知机发展而来,结构上与多层感知机(MLP)极其相似,结构上二者都拥有输入层、隐藏层、输出层。多层感知机也称为人工神经网络,实际只含有一层隐层节点的浅层模型。感知机模型是机器学习中的一种浅层学习模型,深度神经网络是更复杂更深层次的深度学习模型。
深度神经网络与RNN循环神经网络结构、CNN卷积神经网络不同的是,深度神经网络是一个更多层的全连接神经元结构,每层之间的节点之间做全连接,整个神经网络结构包含了多种已知的神经网络结构层,如卷积层、池化层、GRU等,将不同的神经网络融合使用,真正达到了深度神经网络的更深的深度,使得在应用中更容易达到最优解。
2 目标检测与跟踪
目标检测使用图像序列单帧信息或者静态图像,依据先验知识、或者显著等特性找到某些感兴趣的区域。目标跟踪仅用于连续的图像序列,根据已有目标的位置,在后续帧中找到最佳匹配位置,更侧重于目标的匹配上,形成目标的运动轨迹。目标跟踪依赖于目标检测,必须先定位目标位置,才能进行目标跟踪。多数情况下目标跟踪的第一帧由人工指定,也有通过目标检测进行全自动跟踪。但是目标检测需要对整张图像全局进行搜索,目标跟踪只对上一帧图像中的目标进行搜索,目标跟踪的速度明显快于目标检测。当一张图像出现多个与目标相似的图像时,目标检测很容易检测出相似值,在视频等连续多帧的图像序列中,目标检测很容易出现误差,所以常用目标跟踪以提高速度。
在OpenCV中提供了如下的几个目标跟踪与检测的算法:
2.1基于SIFT特征匹配的对象检测
SIFT,即尺度不变特征变换,是一种局部特征描述子,可在图像中检测出关键点,特征稳定,在图像旋转、尺度变换、亮度时有保持不变性,对视角变换、噪声也有一定程度的稳定性。SIFT分为以下几个步骤:建立尺度空间,寻找极值;寻找关键点准确位置与删除弱边缘;关键点方向指定;关键点描述子。
建立尺度空间,寻找极值:构建图像高斯金字塔,求取差分,发现最大与最小值在每一级,构建的高斯金字塔,每一层根据求和的值不同,划分等级。搜索图像上的所有位置,通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点,寻找极值。
寻找关键点准确位置与删除弱边缘:通过Hessian矩阵特征值实现删除弱边缘,小于阈值的自动舍弃。
关键点方向指定:通过计算每一层对应图像的梯度,根据给定的窗口大小,计算每个高斯权重。然后建立36个直方图Bins,寻找最高值对应的Bin,大于80%最大值的Bin保留。通过这种操作实现了旋转不变性,提高了匹配时候的稳定性。
关键点描述子:在每个关键点周围的邻域内,通过在一定范围内设定的值,测量图像局部的梯度,计算结果表示允许的局部形状的变形和光照变化。
2.2基于SURF特征匹配的对象检测
SURF(Speeded Up Robust Features)改进了SIFT的特征提取和描述方式,通过一种更高效的方式提取和描述目标特征。SIFT算法的优点是但是SIFT实时性不高,对提取边缘光滑的特征点能力弱。SURF基于积分图计算、快速提取关键点,具有尺度、光照不变性,快速的描述子匹配的特性。SURF的基本思想是:构建Hessian矩阵,生成目标的所有能够用于提取特征的兴趣点;构建尺度空间;特征点定位;特征点主方向分配;生成特征点描述子;特征点匹配。
2.3 HAAR特征人脸檢测
HAAR特征是一种常用算子,用来描述图像的特征,多用于人脸检测、行人检测等目标检测。特征模板内只有白色和黑色两种颜色矩形,HAAR特征值反映了图像的灰度变化情况。例如人脸的一些明亮深浅比较大的区域的特征,可以通过矩形特征进行简单的描述,但矩形特征只会描述一些简单的图形结构,复杂的结构不能进行描述。HAAR的基本特征可以划分为三类:边缘特征、线性特征、点特征。
3 DNN模塊简介
在深度神经网络大火的今天,OpenCV也不甘落后。在OpenCV的发行版中提供了DNN模块,但是开发人员想要使用该模块的全部功能,还需要下载DNN模块的相关扩展库。OpenCV的DNN模块可以实现多数计算机视觉的应用。OpenCV的DNN模块功能强大,提供广泛的支持,支持目前开发工作上流行的tensorflow、caffe、pytorch深度学习库,支持LSTM、CNN、RNN等网络层,也包含了Alexnet、GoogleNet、VGG等模型。
与其他深度学习网络框架不同的是,OpenCV的DNN模块是前馈网络,不能进行训练,开发过程中直接加载调用已经训练好的模型,实现图像的预测分类等功能。但在编写检测层代码时仍需要分层编写。
接下来介绍几个OpenCV中常用的DNN对象检测网络:
3.1 SSD对象检测网络
SSD对象检测网络,或称单目标多窗口检测器[4]。SSD是基于卷积神经网络的一种网络结构,是第一个基于深层网络的对象检测器,相比于R-CNN、Fast-RCNN,SSD的准确性更高,实时性的预测速度表现更好。
SSD的网络架构以VGG-16为基础,因为VGG-16拥有高质量的图像分类和迁移学习的能力。SSD对VGG-16进行了调整,删除了VGG-16中的图像分类,添加了额外的卷积层,减小图像尺度,增加图像深度,在更小的规模内保留了更多的图像信息。SSD网络的核心思想是分层提取目标图像特征,只对图像的分层进行特征提取的操作,并对边框信息一次进行回归分类。
3.2 YOLO对象检测网络
对象检测网络上分为两种:两步法、一步法。基于图像分类加上滑动窗口的方式对象检测是两步法的代表,两步法先进行卷积神经网络的操作,再使用一个滑动窗口标注,但是这种方法太慢,预测一些感兴趣的区域,计算量比较大,导致性能差,无法进行实时预测。
YOLO的一步法,对图像每个区域只计算一次。YOLO先将图像分为13x13的目标框,每个方格细胞负责预测5个目标框,输出的置信度数值,告诉每个目标框包含某个对象的可能性是多少,不会直接输出检测的目标是什么,而是目标框形状的契合程度,相似度越高,目标框就越粗。YOLO只对图像进行一次计算,没有进行池化和全连接层操作,大大减少了计算时间。
4 结语
良好的课扩展性和强大的可扩展性,使得OpenCV现在已经用于广泛的工业生产之中,越来越多的手机客户端软件也是基于OpenCV开发的。本文简单介绍了OpenCV中科院直接用于生产的方法,OpenCV仍然有一些框架值得开发者进行二次开发和研究,扩展库中的方法仍然存在科院提升的地方以提高准确性、实时性。OpenCV中DNN模块可以方便的实现基于神经网络的目标检测与追踪,这样也使得OpenCV能够与当前流行的深度学习框架融合,开发出更好的应用。此外想要实现OpenCV中以外的功能,仍需研究人员自行开发。
最后感谢我的导师郑老师给我提供了这次学习交流的机会,让我可以与业界精英交流学习,解决了我对深度学习和图像处理方面的许多疑惑。
参考文献
[1]毛星云.OpenCV3编程入门[M].北京:电子工业出版社,2015.
[2]李卫.深度学习在图像识别中的研究及应用[D].武汉:武汉理工大学,2014.
[3]白亚龙.基于深度神经网络的图像识别系统的研究与改进[D].哈尔滨:哈尔滨工业大学,2014.
[4]陈立里,张正道,彭力.基于改进Single Shot MultiBox Detector的实时检测方法[J/OL]. 激光与光电子学进展:1-12[2018-10-29].
Deep Learning Target Detection and Tracking Based on OpenCV
KE Yan,LIU Xin-yan,ZHENG Yu-hui
(Nanjing University of Information Science and Technology, Nanjing Jiangsu 210044)
Abstract: Target detection and tracking occupy a large proportion in industrial applications. Through target recognition technology, product consistency can be quickly and accurately tested, labor intensity is reduced, and enterprise efficiency is improved. This paper mainly introduces an open source computer vision library— —OpenCV, the integrated modules in OpenCV can reduce the developer's work intensity. In this paper, the modules for target detection and tracking in OpenCV, and the algorithm basis of these modules are briefly introduced. This paper also briefly introduces the related content and algorithm framework of DNN deep neural network module provided in OpenCV.
Keywords: OpenCV; DNN; target detection and tracking