基于智慧校园的行人轨迹分析系统设计与实现

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。

《------往期经典推荐------》

项目名称
1.【基于空间众包的动态物流配送路径智能规划系统】
2.【卫星图像道路检测DeepLabV3Plus模型】
3.【GAN模型实现二次元头像生成】
4.【CNN模型实现mnist手写数字识别】
5.【fasterRCNN模型实现飞机类目标检测】
6.【CNN-LSTM住宅用电量预测】
7.【VGG16模型实现新冠肺炎图片多分类】
8.【AlexNet模型实现鸟类识别】
9.【DIN模型实现推荐算法】
10.【FiBiNET模型实现推荐算法】
11.【钢板表面缺陷检测基于HRNET模型】

摘要****

ABSTRACT****

第1章 绪论****

1.1 研究背景

1.2 国内外进展

1.3 研究内容和论文结构

2.1 深度学习与卷积神经网络中的基本概念

2.2 经典卷积网络模型

2.2.3 dropout与批量归一化

2.3 本章小结

第3章 行人轨迹 检测算法****

3.1 目标检测中的基本概念

3.2 Caffe框架

3.3 YOLO算法

3.4 Faster R-CNN算法

3.5 本章小结

第4章 试验仿真与性能分析****

4.1 试验准备

4.2 YOLO算法实现行人轨迹检测

4.3 Faster R-CNN算法实现行人轨迹检测

4.4 本章小结

第5章 总结与展望****

5.1 本文总结

5.2 工作展望

参考文献********

致谢****

摘要


行人轨迹检测是目标检测的子类,其要做的是在给定图像中找出所有行人轨迹并给出它们的边界框,是智能交通系统与行人轨迹驾驶技术中最基础也是最重要的部分。从安全性与有用性的角度来讲,行人轨迹检测器需要具有非常高的检测准确度并能完成实时处理。

本文首先介绍了深度学习与卷积神经网络的基本概念,之后在此基础上详细叙述了Faster R-CNN与YOLO两种典型目标检测框架的流程,最终分别用这两种框架实现了行人轨迹检测。试验使用的行人轨迹数据集从PASCAL VOC数据集中提取,行人轨迹数据集中包含了自行车、公交车、小汽车、摩托车与火车这5类行人轨迹目标。基于深度学习编程框架Caffe的定制版本,试验实现了Faster R-CNN与YOLO两种目标检测算法并完成了行人轨迹检测。试验使用梯度下降法训练卷积神经网络,使用同一测试集进行测试。

在测试集上,基于Faster R-CNN实现的行人轨迹检测算法mAP为83.68%,检测速度为9.7FPS,基于YOLO实现的行人轨迹检测算法mAP为70.3%,检测速度为80.7FPS。根据试验结果,基于Faster R-CNN实现的行人轨迹检测算法检测准确率较高,但检测速度相对较慢,基于YOLO实现的行人轨迹检测算法已经达到了实时处理的标准,但对小而密的小汽车目标检测效果较差。

关键词:深度学习;卷积神经网络;行人轨迹检测;Caffe

ABSTRACT****

Vehicle detection is a subclass of object detection. What vehicle detection needs to do is to find all vehicles in a given image and give their bounding boxes. This is the most basic and important part of intelligent transportation systems and automatic drive. From the viewpoint of safety and practicality, vehicle detectors need to have a very high detection accuracy and can realize real-time processing.

This article first introduces the basic concepts of deep learning and convolutional neural networks. After that, it clarifies how Faster R-CNN and YOLO which are two typical kinds of object detection frameworks work, and finally uses these two frameworks to implement vehicle detection. The vehicle data set used in the experiment was extracted from the PASCAL VOC data sets. The vehicle data set contained five types of vehicle objects: bicycle, bus, car, motorbike, and train. Using the customized version of the deep learning programming framework Caffe, the experiment implements Faster R-CNN and YOLO and then completes the vehicle detection. The gradient descent method was used to train the convolutional neural network, and the two vehicle detectors are tested on the same test set.

On the test set, the mAP of vehicle detection algorithm based on Faster R-CNN is 83.68%, and the detection speed is 9.7 FPS. The mAP of vehicle detection algorithm based on YOLO is 70.3%, and the detection speed is 80.7 FPS. According to the results of this experiment, the detection accuracy of vehicle detection algorithm based on Faster R-CNN is high, but the detection speed is relatively slow. The vehicle detection algorithm based on YOLO has met the requirement of real-time processing, but has a poor detection performance on cars which are small and dense.

Key Words: Deep Learning, Convolutional Neural Network, Vehicle Detection, Caffe

第1章 绪论****


1.1 研究背景****

当今时代,网络信息技术的高速发展、5G的大幅度普及、摄像头等信息数据采集常态化,智慧校园成为了高校信息化建设的重要方向之一。智慧校园集成了物联网、大数据、云计算和人工智能等前沿技术,实现了对校园资源的数字化、网络化、智能化管理。在信息化智慧校园的建设中,行人轨迹分析作为一个重要功能,具有重要的研究和应用价值。

行人轨迹分析主要依赖于视频监控和大数据分析实现。视频监控技术是指通过部署在校园内的摄像头,实时捕获行人的运动轨迹,采用YOLOv3这一深度学习算法。而大数据分析技术则是负责对采集到的数据(包含视频、截图)进行处理、分析和挖掘,提取出有价值的信息。

而随着深度学习的发展,行人轨迹分析的准确性、效率及实时性也得到了显著提升。深度学习算法能够进行自动学习并提取出数据中的轨迹特征,实现对行人的识别和分析。同时,云计算技术的普及,数据的存储、计算和共享也变得更加便捷和高效。为行人轨迹分析提供了有力的保障。

实际需求依据:行人轨迹分析系统的设计是基于智慧化校园生活的实际需求。通过对校园内行人的监测和分析,可以帮助大家更好地了解校园中行人的活动规律并提供人群密度预警和出行建议等信息,优化大家对校园资源的使用,提升校园的安全性和便利性。

技术可行性依据:在已有的视频监控技术(如:海康威视)和大数据分析技术(YOLOv3+卷积神经网络等),设计并实现行人轨迹分析系统是可行的。同时,随着深度学习技术的发展和云计算技术的广泛应用,系统的准确性和效率也可以得到进一步提高。

隐私保护依据:在设计和使用行人轨迹分析系统时,必须严格遵守隐私保护原则。应编写《行人轨迹分析系统使用隐私协议》,向大家说明对行人信息的采集和使用目的以及用途。同时应该采用安全可靠的数据库保存数据。并严格依照《*个人信息保护法》确保对信息的合理合法采集使用。依照要求对数据进行保存以及操作日志的备份,防止数据泄露和被滥用。

可扩展性和可维护性:随着技术的不断革新需要满足未来业务需求变化,设计应该具备良好的可扩展性和可维护性。在需要时,能够便捷地添加新的功能模块、优化算法,适应不断变化的业务环境和需求。

随着“智慧校园”建设的飞速发展,对完善现代化校园中智慧精准的联动,互联网以及硬件设备等的建设的需求亟待解决。随着校园 WIFI 的无缝覆盖,校园内教室、路口等关键位置高清监控摄像头的完善部署以及智能移动设备的全面普及,面对监控摄像头和无线路由等硬件设备所采集的海量数据,传统的基于行人轨迹追踪、目标检测所实现的软硬件、数据可视化管理系统已经无法满足智慧校园对校园师生日常学习和生活进行深入分析的需求。譬如基于师生位置信息的人群密度预警、出行建议、自习室选择建议等功能。****

本次课题要求设计、开发一套“基于智慧校园的行人轨迹分析系统”的软件。通过该题目的设计过程,可以初步掌握软件系统的开发原理和开发方法,得到软件工程的训练,提高解决计算机领域复杂工程问题的能力。锻炼个人工作及应用能力。

行人轨迹检测要做的是在给定图片中定位所有的行人轨迹,这要求计算机不仅能在各种物体中辨别出行人轨迹,还要能给出正确的边界框信息。为了在实际场景中引入行人轨迹检测技术,我们一定确保行人轨迹检测器拥有非常高的检测正确率,此外,我们还需要不断降低检测所消耗的时间以满足实时检测的要求。

综上所述,研究行人轨迹检测很有现实意义。

1.2 国内外进展****


1.2.1 目标检测算法****


行人轨迹检测作为目标检测任务的子类,其进展与目标检测的进展息息相关。目标检测方法按是否使用人为设计的特征可以分为两类:传统方法与基于深度学习的方法。

传统的目标检测算法主要研究的是特征的提取与分类,Viola和Jones使用Haar特征与Adaboost算法实现了实时的人脸检测[1],法国研究人员Dalal发觉HOG特征与SVM分类器格外适用于行人检测[2]。这些传统方法大致遵循以下流程:使用滑动窗口的方法猎取目标候选窗,然后在每一个候选窗上提取Haar、HOG等人为设计的特征,之后将所提取的特征输入到SVM等分类器中推断该候选窗是否为检测目标。传统的目标检测方法的准确度并不能满足实际使用的需求,主要是因为使用的特征为人工设计的特征,这些特征对目标的表征能力不强,是低等级的特征。此外,传统的目标检测方法需要对不同的任务设计不同的特征,同一特征对不同目标的表征效果相差较大。

表示学习可以让机器自动地发掘原始数据中的特征,而深度学习作为一种表示学习则可以通过组合简洁的低等级特征表达复杂的抽象特征,与传统手工设计的特征相比,深度学习学习到的特征具有更强的表征能力。因此,自2006年Hinton提出深度学习的概念后,随着图形处理单元的使用以及大型图像数据库的出现,深度学习被广泛应用到图像处理、语音识别、自然语言处理等诸多领域,且均取得了令人瞩目的效果。

卷积神经网络是专门为图像处理设计出来的一种深度神经网络,在基于深度学习的目标检测方法中被广泛使用。基于深度学习的目标检测方法又可以分成基于区域提议的方法与基于回来的方法。

基于区域提议的深度学习目标检测方法主要由R-CNN系列框架组成。在2013年,Ross Girshick提出了R-CNN框架[5],R-CNN框架使用选择性搜索方法猎取目标候选窗,再将用卷积神经网络提取的特征送入SVM中进行分类。R-CNN首次将卷积神经网络用于目标检测,极大的提高了目标检测的精确度。在2014年ImageNet大赛目标检测任务上,何凯明、任少卿团队提出的SPP-Net[6]取得了第二名的成绩,SPP-Net使用金字塔池化层解除了卷积神经网络需要固定输入尺寸的限制,此外,SPP-Net还将选择性搜索方法获得的候选窗映射到特征图上,这样只需提取一次卷积层特征,大大减少了特征提取的时间。2015年,Ross Girshick引入了SPP-Net的工作,提出了基于RoI池化层的Fast R-CNN框架[7],Fast R-CNN的亮点在于使用了多任务的损失函数,将边界回来输出并联到卷积神经网络的分类输出上,这进一步提高了目标检测的平均准确度。同一年,任少卿、何凯明与Ross Girshick合作提出了Faster R-CNN框架[8],这个框架使用区域提议网络代替选择性搜索算法猎取目标候选窗,这不仅提高了生成目标候选区的质量,还减少了候选窗生成的时间,加速了目标检测的速度。

相比于基于区域提议的方法,基于回来的深度学习目标检测方法省去了候选窗提取的步骤,直接在整张图片的多个位置上进行边界回来与目标分类。在2016年IEEE国际计算机视觉与模式识别会议(CVPR)上,Joseph Redmon等人提出了名为YOLO[12]的目标检测算法,YOLO将图像分成的网格,在每个网格单元上预测目标的边界框以及目标的置信得分。同年,在欧洲计算机视觉国际会议(ECCV)上,Wei Liu等人提出了SSD目标检测算法[13],SSD在来自不同卷积层的多个特征图上进行预测,可以在低分辨率的图像上取得较好的正确率。由于不需要进行区域提议,基于回来的方法的速度远远快于使用区域提议的方法,但这些方法的检测准确度要低于基于区域提议的方法。

1.2.2 行人 检测算法****


行人轨迹检测算法同目标检测算法类似,同样可以分为传统的方法与基于深度学习的方法。在传统的行人轨迹检测算法中,中国科学院大学的Zheng Wei使用精心设计的strip特征在行人轨迹检测上取得了不错的效果[3]。而在深度学习的基础上,高丽大学的Won Jae Lee使用可视化手段从卷积神经网络内提取了行人轨迹的优质特征,之后使用Adaboost分类器对提取的特征进行分类以此实现行人轨迹检测[4],这种方法使用与传统方法类似的流程,只是将传统手工设计的特征替换成用卷积神经网络提取的特征,这种方法表明卷积神经网络提取的特征更有效。

基于深度学习的行人轨迹检测算法还可以通过修改现有的目标检测算法实现。用使用区域提议方法的目标检测框架实现的行人轨迹检测[9][10][11]均取得了非常高的检测准确度,但只有在昂贵的高性能GPU上进行处理时,这些方法才能到达较高的检测速度,这还远不能满足实时处理的要求。

1.2.3 深度学习****


因为用于目标检测的数据量比较少,所以基于深度学习的目标检测方法通常都会使用监督预训练初始化所用的卷积神经网络[5]。监督预训练类似于迁移学习,先用分类数据集训练卷积神经网络,用于分类的图像数据集含有数量更多、质量更高的带标记图像,之后,将训练好的卷积神经网络的输出层替换为用于检测的结构,保留低层卷积层的权重,用目标检测的数据集再次训练。使用监督预训练能有效提高算法检测的准确率。因此,卷积神经网络结构的选择对检测器的性能有非常大的影响。

卷积神经网络最早由Lecun提出[14],被成功应用于手写数字识别。在2012年后,卷积神经网络开始大放异彩,各种结构的卷积神经网络不断刷新ImageNet大赛分类任务的记录。2012年Krizhevsk等人提出的AlexNet[15]使用dropout方法减少过拟合并使用ReLU激活函数加快训练速度;2014年Simonyans等人使用3x3的小卷积核加深了网络的深度,提出VGGNet模型[16];2015年,谷歌团队提出的GoogLeNet模型使用Inception模块加深了卷积神经网络的宽度和深度[17],何凯明团队在ResNet[18]中提出残差学习的概念,解决了网络退化的问题。以VGG16、GoogLeNet以及ResNet等为基础网络的目标检测算法取得了比较优异的检测结果。

1.3 研究内容和 论文结构****


1.主要设计内容及思想

(1) 人数信息,对校内可监控到的区域进行人数统计,没有摄像头覆盖的区域,使用定位API获取手机位置信息来进行人数统计。

(2) 绘制实时校园热力图,通过位置及当前位置的人数来绘制实时校园热力图

(3) 绘制行人轨迹图,通过跨摄像头的目标检测技术、定位技术进行精确到建筑、楼层、教室的高精度行为轨迹图绘制;

(4) 建立基于学生位置信息的可视化个性信息推送平台。根据智慧校园数据分析结果,推送区域人群密度预警,推送校园内的出行交通工具选择建议及其最佳路线规划等出行信息,方便出行规划。

2.解决的关键问题

(1) 如何从路由后台管理系统网站爬取校园网的用户信息及摄像头视频流采集,并安全的存储及合法的使用数据。

(2) 通过什么方式实现用户管理、满足各级权限需求。

(3) 如何动态实现校园热力图及绘制行人轨迹图。根据什么做个性化推送

拟采用的技术方案(整体架构如技术架构如图1所示):

(1) 使用Django框架实现服务端的开发;

(2) 采用定位API获取手机位置信息;

(3) 使用YOLO目标检测算法实现对视频流截屏的目标检测;

(4) 使用Tensorflow深度学习框架实现校园热力图模块。

图1 技术架构图

2.工作流程

根据园区各建筑、楼层、房间、路口摄像头行人检测算法得到的人数信息,绘制实时校园热力图;根据学生用户的实时位置信息,绘制行人轨迹图;通过对比园区实时热力图数据和系统当前登录的学生用户的运动轨迹图数据,可以实现人群密度预警、出行建议等信息的推送等,整体系统工作流程如图2所示。

图2 系统工作图
第2章 深度学习与卷积神经网络****

深度学习包含了多种神经网络模型,如卷积神经网络与循环神经网络,在行人轨迹检测领域,最常用的深度学习模型为卷积神经网络。本章首先介绍了深度学习与卷积神经网络的基本概念,包括卷积神经网络的基本结构与训练方法,之后选择性的介绍了一些经典的卷积神经网络以及改善卷积神经网络性能的算法。

2.1 深度学习与卷积神经网络中的基本概念****


深度学习的概念由Hinton在其2006年发表的论文中提出,实际表现为多层的神经网络,神经网络是研究人员受生物大脑神经元启发研究而成。深度学习包含了多种神经网络结构,如卷积神经网络、循环神经网络、深度置信网络等,而在行人轨迹检测所属的目标检测研究领域内,卷积神经网络被最为广泛地运用。****

2.1.1 卷积神经网络的基本结构****


图2-1卷积神经网络基本结构

卷积神经网络由多种层级模型堆叠而成,常见的层级模型包括输入层、卷积层、激活层、池化层、全连接层以及输出层,图2-1展示了卷积神经网络的基本结构。卷积神经网络以输入层为始,以输出层为终,输入层与输出层之间的层级又被称为隐蔽层。在卷积神经网络中,每一层会对前一层的输出进行处理并输出结果,其中,卷积层处理的对象与输出的结果常被称为特征图,特征图与输入的图像对应,由多维数组确定。

1、输入层

卷积神经网络的输入为数字图像。数字图像由若干个像素组成,可以表示成多维数组形式,图像的分辨率决定了数组的行数与列数,数组中元素的位置与数值代表了对应像素的位置与强度。RGB彩色图像可由三维数组外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传分辨率的RGB彩色图像,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,二维数组中第m行第n列处的元素值确定了图像外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传中的整数值。输入层会对输入图像进行一些基本的处理,如对像素强度进行归一化、改变图像的分辨率等。

2、卷积层

卷积层由若干个卷积核组成,卷积核可以看成是滤波器,可以表示成三维数组,起着特征提取的作用。记第l层卷积层的卷积核个数为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,卷积核的深度一定与输入特征图的深度相同,因此在谈及卷积核尺寸时常常忽略深度信息,简洁记为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,此外,每个卷积核还会有一个额外的加性偏置外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传大小的特征图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,在卷积计算前,卷积层首先会对特征图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,记填充后的特征图为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传大小的数组,之后根据公式:

(2-1)

进行卷积计算,得到特征图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传表示同一卷积核多次卷积计算间的步长。明显,特征图的尺寸为:

(2-2)

式中,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传都是属于卷积层的超参数。

3、激活层

激活层的作用是引入非线性元素。卷积神经网络实质上是描述了输入X到输出y的映射关系:

(2-3)

从式(2-1)可以看出,卷积层只进行了线性运算,当只堆叠卷积层时,网络的输出为线性运算的组合,仍是输入的线性表示,这样的网络没有拟合复杂非线性映射的能力,因此,卷积神经网络引入了激活层。激活层堆叠在卷积层或全连接层后,几乎每层卷积层后都跟着激活层,当计算网络层数时,只记带权重或参数的卷积层与全连接层,因此当谈及第l层激活层时,指的时跟在第l层卷积层或全连接层后的激活层。激活层的超参数为激活函数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传中的每一个元素做计算,输出特征图由公式:

(2-4)

计算得到。常用的激活函数有sigmoid函数、tanh函数与ReLU函数,图2-2展示了这三种激活函数的图像。

图2-2 三种常见的激活函数

4、池化层****

池化层又称下采样层,其作用是减少特征图的高度与宽度,所以池化层并不会改变特征图的深度。池化层跟在已激活的卷积层后,但不是所有的已激活的卷积层后都有池化层。池化层的超参数为池化尺寸外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传、运算跳动的步长外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。平均池化输出的为:

(2-5)

可以看出,平均池化计算的是特征图确定区域内的平均值。最大池化与平均池化类似,只是提取的是特征图确定区域内的最大值。池化层输出特征图的尺寸由式:

(2-6)

确定。

5、全连接层

全连接层由若干个神经元组成,当全连接层的输入为特征图时,首先会将特征图转换成一维向量再进行处理,全连接指的是每一个神经元都会与输入向量的所有元素连接。记第l层全连接层有外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,大小为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传由公式:

(2-7)

计算得到,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传大小的向量。

6、输出层

卷积神经网络的输出层输出网络预测的最终结果,输出层本质上可以是卷积层或全连接层。对分类输出如推断目标的类别,常用softmax函数处理输出层的结果,使其满足随机变量概率分布的要求。对回来输出如预测目标边界框的位置与大小,常直接使用线性激活。

卷积神经网络的前馈计算为输入数字图像到输出层输出的一次完整运算。

2.1.2 深度学习中的训练与测试方法****


深度学习是机器学习的一种方法,机器学习是指不通过显示编程的方式让机器具有学习的能力,所谓学习,就是让机器从已有数据中拟合输入输出关系并能给出新数据的输出预测,当已有数据中包含输出信息时,这种机器学习被称为监督学习,否则是非监督学习。在目标检测研究领域,常用的深度学习算法为监督学习。因此,当准备用于目标检测的数据集时,不仅需要收集作为学习输入的原始数字图像X,还要知道该图像中目标的类别、对应目标的边界框的位置坐标和边界框的长宽大小,这些预先准备的的输出被称为标签,用y表示。

损失函数描述了深度学习模型预测值与标签值的差别,常用的损失函数有平方差函数:

(2-8)

与对数似然函数:

(2-9)

式中,m为输入样本的数量,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传为第i个样本模型的预测值。为了减小网络预测与真实标记值的差别、让模型从数据中拟合输入输出关系,需要优化损失函数,减少损失函数的数值,常用的优化方法为梯度下降法。

对于卷积神经网络,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的梯度,根据公式

(2-10)

对权重外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传进行更新,在实际运用时会使用向量化的计算方法共享运算,减少计算时间。式中,为学习率,代表了每次梯度下降的比例。学习率是一种超参数,它的取值需要仔细调试,如果学习率取值过大,损失可能会发散,使得网络预测的结果变差,如果学习率取值过小,则损失收敛过慢,浪费计算资源。

由于卷积神经网络中权重数量很多,当训练数据量不足时很简单产生过拟合,过拟合指的是网络模型能对训练集中的图像有较好的预测效果,但当向网络中输入新数据时,网络预测的预测效果较差,为了减少过拟合,可以为损失函数增加权重衰减项,以平方差损失为例,更新后的公式为

(2-11)

式中,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是矩阵的Frobenius范数。

为了评估深度学习算法的性能,正常会把数据集分成训练集、验证集与测试集,训练集用于训练网络权重,验证集用于选择超参数,测试集用于推断模型效果,验证集有时也会并入训练集以增加数据量。当数据量较少时,训练集、验证集与测试集的比例通常为,在深度学习时代,数据量爆炸增长,如ImageNet1000分类数据集有百万级的数据,此时,只需分出几千张图片用作测试即可。

记训练集的数据量为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传需要在计算所有样本的损失后才会更新一次,虽然使用向量化的计算方法可以共享部分计算,但权重更新一次的耗时相对较高。随机梯度下降法指的是训练的每次迭代只会向卷积神经网络中输入一个样本,这样权重能非常快的更新,但需要注意的是,样本的差异性会使损失上下波动较大幅度,而且没有使用向量化运算,学习训练集所有样本一轮会花费更多时间,训练效率低。小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷选择,使用小批量梯度下降法,首先要确定批大小,批大小常取16、32、64等值,训练集会根据批大小被分成若干组,每次训练时输入一组,这么做可以使用向量化的运算方法,学习所有样本一轮速度较快,而且权重也能较快的得到更新。由于深度学习领域数据量大,批量梯度下降法与随机梯度下降法劣势明显,故小批量随机梯度下降法被广泛使用,此外,在深度学习领域,小批量梯度下降法也会被称为随机梯度下降法,但需要指出批大小的值。

在小批量梯度下降法中,为了缩小数据集不同组间的差异,常使用指数加权滑动平均算法对每次迭代计算的梯度进行修正,修正后的梯度下降法公式为

(2-12)

式中,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的初始值为0,在梯度下降法的每次迭代中更新,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传上,表示平滑数据时所取的范围,动量系数越大,平滑的范围越广,常取0.9。

2.2 经典卷积网络模型****


卷积神经网络中有相当多的超参数,如层级模型的堆叠方式、卷积层的层数、每层卷积核的大小等,这些超参数的选择对网络的性能有很大的影响,而另一方面,卷积神经网络参数数量较多,训练耗时长,通过交叉验证集选择超参数又比较困难。因此,了解一些典型的高性能卷积神经网络很有意义。典型的卷积神经网络结构有AlexNet[15]、VGGNet[16]、GoogLeNet[17]与ResNet[18],本节主要介绍VGGNet与GoogLeNet,VGGNet与GoogLeNet分别是2014年ILSVRC分类项目中的第二名与第一名。

2.2.1 VGG网络****


图2-3 VGG16网络结构

VGG网络使用了5层池化层将卷积层分为5级,同一级内的卷积层卷积核数目相同,到下一级卷积层卷积核个数翻倍,直到变为512为止。所有的卷积核大小都为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传大小的卷积核大幅加深了卷积神经网络的深度,常用的VGGNet共有16个带参数的卷积层与全连接层,被称为VGG16,图2-3展示了VGG16的网络结构。

2.2.2 GoogLeNet网络****


GoogLeNet由Google公司提出,大写的L用于致敬最为经典的卷积神经网络LeNet-5。GoogLeNet主要特点是多次使用了Inception结构,Inception结构如图2-4所示。Inception结构是基于多尺度处理的理念设计而成的,包含了外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传大小的最大池化层,计算前都进行了填充处理以保证各层输出特征图的高宽一致,在外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的卷积层前、池化层后都额外增加了的卷积层以减少输入特征图的深度,这有助于减少计算量。Inception结构使得卷积神经网络的宽度与深度都得到了提升。

图2-4 Inception结构

表2-1 GoogLeNet网络结构

表2-1展示了GoogLeNet网络的结构,网络总共有22层,表中的“depth”栏目指明白带参数的层,“1x1”、“3x3”、“5x5”栏目分别指明白Inception结构中外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传卷积核数目,“pool”栏目指明白Inception结构中池化层后用于维度约减的卷积核数目。

2.2.3 dropout与批量归一化****


除了使用经典的网络结构外,还可以使用一些算法提升卷积网络的性能,这些算法包括dropout与批量归一化。

dropout是一种减少过拟合的方法[19],对全连接层起作用,使用dropout需要确定舍弃比例,在训练的每一次迭代中,全连接层中的每一个神经元以舍弃比例随机从全连接层中删去,不对前层参数的梯度做奉献也不计算这个神经元参数的梯度,dropout算法简化了神经网络,减轻了网络过拟合的程度。

批量归一化[20]是一种归一化方法,在激活层前、卷积层或全连接层后进行计算,以全连接层为例,记一批图像中第i张图像在全连接层的输出为一外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,批大小为m,批量归一化的计算为:

(2-13)

式中,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传均为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是需要学习的参数。可以用批量归一化对网络的每一层进行归一化,能加速网络的训练并提升网络的性能。

2.3 本章小结****


本章首先介绍了卷积神经网络的结构模型,主要包括卷积层、池化层、激活层等,之后介绍了梯度下降法以及梯度下降法的一些改变方法,通过梯度下降法以及计算梯度的链式法则,网络中的参数会不断改变以拟合训练集输入图像与标记间的映射关系,最终简洁介绍了VGGNet与GoogLeNet这两种典型的卷积神经网络结构以及dropout与批量归一化这两种网络优化方法。

第3章 行人轨迹 检测算法****


基于深度学习的目标检测算法中大量使用了卷积神经网络,而行人轨迹检测算法可以通过修改目标检测算法实现。本章首先介绍了目标检测中的基本概念,包括评估目标检测器性能的指标,之后介绍了一种深度学习编程框架Caffe,最终介绍了YOLO与Faster R-CNN两种目标检测方法的基本原理并在行人轨迹检测应用下对其作了修改。


3.1 目标检测中的基本概念****


目标检测要做的是在给定图像中找出待检测目标的位置并给出目标的边界框,通常边界框由中心像素坐标与高h、宽w确定。我们将两个边界框之间的相交部分与相并部分的面积之比称为交并比IoU。

非极大值抑制NMS往往是目标检测系统的最终一步,其目的是滤除重叠的预测边界框,具体流程为:将所有预测边界框按目标得分从大到小排序,取出第一个边界框,计算其与剩余边界框的IoU值,设一阈值外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的预测边界框,之后取下一个边界框陆续上述步骤,直至筛选完所有边界框,留下的边界框即为最终的检测结果。

表3-1 二分类混淆矩阵

在二分类问题中,可以根据分类结果与真实标签的关系将所有样本分为四类:真正例、假正例、真反例与假反例,可由表3-1所示的二分类混淆矩阵确定。而查准率与召回率作为一种推断系统性能的指标,可由各类样本的数目计算得到,如式:

(3-1)

查准率反映了系统预测为正的样本中实际为正的比例,召回率反映了实际为正的样本中预测为正的比例。可以通过提高置信得分的阈值提升查准率,在这种情况下,只有置信得分非常高的样本才会被判为正例,与此同时,许多置信得分相对较高的实际正例会被判为反例,这会降低召回率,因此,查准率与召回率是一对矛盾值。

在目标检测领域内,同样可以使用回来率与查准率评估目标检测器的性能。设置一个阈值外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,那么这个预测的边界框样本被记为假正例,如果外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传但真实类别与检测出的类别不同,这个样本就被记为假正例,正常取0.5。对于同一类检测目标,如果将检测器在测试集上的所有预测边界框样本按置信得分从大到小排序,依次从头开始进行采样,采样的点数递增,采样点数的增加体现了当前目标分类阈值的减少,记测试集所有图像中真实边界框的数量为N,用TP记采样的边界框中真正例的个数,用FP记假正例的个数,通过公式:

(3-2)

计算每次采样结果的召回率与查准率,并依此绘制查准率-召回率曲线,可以通过计算曲线下的面积得出这一类别的平均查准率AP,通常使用所有类别AP的平均值mAP以评估目标检测器的检测准确度。式(3-2)中的N为标记为正的所有样本数量,是真正例与假反例数量的和,因此式(3-2)与式(3-1)并无本质区别。

除了mAP值外,评估目标检测算法性能还有另一个指标,检测速度。可以使用目标检测系统每秒处理的图像张数表示检测速度,检测速度常常与检测准确度不可兼得,需要从中取得平衡。

3.2 Caffe框架****


Caffe框架的全称为Convolutional Architecture for Fast Feature Embedding,是一种C++语言实现的深度学习框架,由加州大学伯克利分校的博士生贾清扬开发实现。Caffe框架基于BSD 2许可协议开源,由伯克利人工智能研究中心与社区开发者共同维护。除了C++版本外,Caffe还提供了Python与MATLAB的接口。CUDA是由Nvidia公司提供的计算平台,对数值计算作了高性能的优化,由于Caffe还使用了CUDA,因此,当在Nvidia公司的GPU上运行Caffe时效率会比在CPU上运行Caffe更高。

由于Caffe是开源的,计算机视觉的研究者们大多都基于伯克利人工智能研究中心发行的Master分支使用C++语言实现了定制版的Caffe。虽然Caffe的版本各异,但它们都遵循同一架构。Caffe实现深度学习算法需要构建网络Net与网络求解方法Solver。Net定义了网络的结构、输入输出以及损失函数,由层次模型Layer堆叠而成,Net的输入可以是lmdb数据库形式也可以从文本文件猎取数字图像位置直接读取,批大小在输入层处定义,需要注意的是,Caffe框架将损失函数看做是层级模型,其底层为网络输入的标签层与网络输出的预测层,最终的网络模型会以特定格式写入到prototxt文件中,由于Net的中网络的输入是固定的,因此,训练网络与测试网络需要生成两个prototxt文件。Solver定义了网络的求解方法,主要包括损失函数优化方法的选择、优化方法相应的参数、学习率的调整策略、迭代次数、权重的保存等,Solver的内容也会被写入到prototxt文件中。当配置好Net与Solver后,Caffe会帮助完成网络的训练。Caffe以blob的形式传递与存储数据,在卷积神经网络中,blob表现为四维数组,n是批大小,k、h、w分别为特征图的深度、高度与宽度。

Caffe框架的核心文件是由高效的C++语言与CUDA编写的,这使得Caffe的速度较快,此外Caffe还支持开源协议并提供了易使用Python与MATLAB接口,因此,Caffe在深度学习研究领域中被广泛使用。

3.3 YOLO算法****


YOLO算法是一种效率优先的目标检测算法,它并没有使用区域提议方法而是直接在输入图像上进行目标边界框的预测,因此,YOLO算法的检测速度相对较高。****

YOLO算法会将图像划分成外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传为相对于网格单元左上角归一化的偏移坐标,w、h为边界框的宽、高相对原始图片宽、高的归一值,置信度的值为目标的概率与真实边界框同预测边界框IoU的乘积,体现了网格单元对边界框含有目标的可能性与边界框正确性的确定程度,因此x、y、w、h和置信度的值都落在区间[0, 1]上。考虑到网络会对每个网格单元输出预测值,故网络的最终输出被设置成维的张量。

训练YOLO算法时,所优化的代价函数为:

(3-3)

式中,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传为第i个网格中目标相应边界框的5个标定值,如果该网格不负责检测目标,则这5个值为0,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传值则为网络输出的预测值,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传则代表了第i个网格中是否包含检测目标。因为大面积的边界框比小面积的边界框对边界长宽误差更具有鲁棒性,为了减少大面积边界框较大长宽值引起的误差,提升小面积边界框较小长宽值引起的误差,代价函数对w与h的值取了平方根。因为不包含目标的网格单元的比例更多,为了提升网络对目标的敏感程度,使用了超参数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传提升边界框坐标值引起的损失。

测试时,对网络做前馈计算,YOLO算法总共生成了外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传滤除较低值,保留确定目标类别置信度得分较高的那些边界框并使用非极大值抑制猎取最终的边界框预测结果,具体流程由流程图3-1表示。

为了将YOLO算法用于行人轨迹检测,需要对框架进行一些修改。对于全卷积网络实现的YOLO算法,输出层的输出的特征图大小为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传为行人轨迹的类别数。在生成训练网络用的lmdb数据库文件时,也需对不同类别对应的标记数值做出修改。

图3-1 YOLO算法应用时的检测流程

3.4 Faster R-CNN算法****


Faster R-CNN算法由区域提议网络与目标检测网络两个网络构成,这两个卷积神经网络的低层卷积层是共享的。

区域提议网络是一个全卷积网络,以任意大小的图像为输入,输出若干个感兴趣区域以及这些区域的目标得分。当共享的卷积层部分输出特征图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,对VGG16而言,这一层卷积层应有512个卷积核,这一层卷积层起着滑动窗口的作用,会将外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传区域转换成一个较低维度的特征向量。区域提议网络会对每个特征向量预测k个感兴趣区域以及每个区域的目标得分,即有4k个确定感兴趣区域位置与大小的回来输出以及2k个感兴趣区域是否包含目标的二分类输出,实际使用两层并行的外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传卷积层输出的每个特征向量对应了输入图像中的一个像素位置,这个位置由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传区域的中心点确定,当准备区域提议网络训练数据时,以这些特征向量对应的像素为中心,确定k个区域,每个区域有确定的面积与高宽比,这些区域被称为anchor区域,与图像中任意目标标记的真实区域之间的IoU值最大或者是超过0.7的那些anchor区域被标记为正例,与图像中任意目标标记的真实区域之间的IoU值小于0.3的那些anchor区域被标记为不含有目标的反例区域,其余的区域不用于训练区域提议网络。实际上,Faster R-CNN中外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,每个输出位置对应的这9个区域由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传三种长宽比一一确定。训练区域提议网络时,首先

上一篇:Python——域名信息查询


下一篇:Windows 11在conda虚拟环境中安装cuda、cudann