基于TPU平台实现人群密度估计∗
ChaMd5-AI
唐晶
机械工程&博士二年级
华中科技大学
中国-武汉
[email protected]
唐晶,2001年生,本科毕业于华中科技大学机械卓越工程师班,现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。以第一作者在IEEE SENS J发表论文1篇,授权发明专利1项,实用新型专利1项,软件著作权1项。在申发明专利1项,在投论文3篇。2018年主持“复杂环境非接触式物流分拣系统”项目,获得华中科技大学启明学院副院长、点石创校校长刘玉教授和麻省理工学院前客座科学家轩建平教授等多名业界专家正面强力推荐,并与京东达成初步合作意向。2021年主持“三维即时成像设备”项目,项目受到移动云首席科学家钱岭教授正面评价和转发,被推荐加入中国移动星辰合作伙伴计划,孵化武汉真触科技有限公司。获得2022年“移动云杯”算力网络大赛叉车周界行人检测专题第一名,2022 天池BMW Hackthon工业质检赛道第二名等多个算法比赛top名次。博士在读期间获得创新研究院资助,享受创新研究院特殊津贴。
本文首先分析了不同计算平台所展现的不同特性,之后从模型FLOPs和访问量的角度深入研究了不同网络结构对于TPU平台计算的影响,基于这样的分析最终选定了本次比赛的backbone。之后我们介绍了一种基于遗传算法进行参数搜索进而在TPU平台进行模型量化参数优化的方法,最终实现了高精度高计算效率的基于TPU平台的人群密度估计模型。在本次比赛中得分252.13655917,最终排名第三。
TPU平台,模型量化,遗传算法,参数优化
随着人工智能和计算机视觉技术的不断发展,现有深度学习对算力的要求日益提高,基于CPU/GPU平台的计算已经不足以有效地完成模型的训练和推理,因此TPU计算平台应运而生。TPU平台是一种针对专门张张量计算的算力平台,其通过使用张量处理单元的方式对大批次数据和卷积神经网络进行了高度优化,并具有最高的训练吞吐量。
人群密度估计是计算机视觉中的一项重要任务,旨在同时识别各种情况下的任意大小的目标,包括稀疏和杂乱的场景。它主要应用于现实生活中的自动化公共监控,能够在公共安全管理、公共空间设计、数据收集分析等方面发挥重要的作用。本文针对人群密度估计任务在TPU平台的落地进行了深入的研究,我们摒弃了传统的单纯基于模型FLOPs进行速度预估的方案,从模型FLOPs和访问量的角度深入分析了比赛主办方提供的四个模型 [1-4]对于TPU平台计算的影响。我们继承了RegNet [5]中关于Network Activations的概念综合考虑计算不同网络的网络卷积层输出的tensor大小之和,并将输出的tensor大小看作模型进行推理时需要从显存中读取的feature blob的大小,近似可以认为是访存数据量的大小。用这个值和模型FLOPs构建粗评价指标,基于评价指标,最终我们通过固定多个超参数计算评价函数值得方式选定了VGG-all_ep_466_mae_105.8_mse_504.4_nae_0.933.pth作为本次比赛的基准模型,并基于此模型进行更细致的参数优化。
在具体的参数优化过程中,为了更好的实现该模型在TPU平台上的效果,我们对模型进行了量化处理,将模型转化为了fp32bmodel形式,能够更好的在边缘侧构建推理应用。而在具体的量化过程中,我们首先使用一个大尺度的模型进行更为精确有效的种群密度估计,之后引入经典的遗传算法[6]针对进行参数寻优和微调,将这个更为精确有效的种群密度估计值作为真值,用于不同参数的模型个体的评价,构建精评价指标。基于精评价指标,最终实现了高性能高效率的边缘侧量化模型。
总的来说,本文的方案对TPU平台的性能进行了深入的分析,提出了基于遗传算法的参数调优策略进行参数的优化,实现了较好的边缘部署效果。
图1:MCNN网络结构
首先我们对MCNN进行了粗略的分析,其是一种多个卷积神经网络支路构成的种群密度估计网络,但是TPU平台适合的是大batch和大输入输出的网络模型的。同时我们考虑到MCNN网络提出时间较早,因此首先排除了它。之后我们研究了CANNet的基本结构,CANNet使用多个接收场大小获得的组合特征来进行上下文学习,进而实现高精度人群密度估计,这个在本任务中也不太适合。因此最终我们选定CSRNet和VGG作为研究对象,构建粗评价指标来进行最终的选择。
图2:CANNet网络结构
CSRNet中使用了一种新型的dilated convolution代替max-pooling, convolution, upsampling,实现了更快的密度估计效果,也给最终评价指标的构建带来了一定困难。
图3:CSRNet中支路比较
此处我们引入了两种评价指标,一种是模型的FLOPs,一种是RegNet中的Network Activations。原因在于低的FLOPs不一定代表着很低的推理时间。比如在实际的实验中我们可以发现, EfficientNet- B3的FLOPs不到ResNet50的一半,但是在边缘侧推理速度却是ResNet50的两倍。这是因为其大量使用了depth-wise的方法,这会使得模型的吞吐量上升,这在GPU上是很致命的。因为GPU相对于TPU显示了更好的灵活性和可编程性的不规则计算,更适合于小批量和非matmul计算。在这种情形下会收到比较大的访存带宽限制,使得模型把大量的时间浪费在了从显存中读写数据上,进而导致推理时间急剧增大。而在TPU上,这样的“用空间换时间“的方法更适合,但是考虑到具体的带宽限制,此处我们也需要进行一定的评估。
综上所述,我们最终选用大权重的FLOPs和小权重的Network Activations进行融合。为了使得两个指标的尺度一样,避免某个指标占比过大,我们将所有的FLOPs和Network Activations进行归一化,最后基于这两个指标的反sigmoid融合构建了粗评价指标。
基于这个评价指标,我们最终选定主办方提供的VGG模型作为最终我们的优化目标模型。
选定VGG模型后,我们需要对模型进行量化操作,为此我们需要对多个超参数进行优化。为了实现更为有效的超参数优化,我们构建了精评价指标来进行模型的综合性能评估。不同于粗评价指标里我们只考虑率模型的速度性能,在精评价指标里我们还将模型的准确率作为重要的评价指标。
此处为了更好的评价模型的真实精度,我们首先使用大尺度图像和大尺度输入训练一个精度较高的模型,之后以这个模型作为伪真值模型,用来评估模型精度。此处我们使用MSE作为评价指标,将参数调优后的模型与伪真值模型的推理结果进行对比,最终实现了模型精度的评估。
我们将MSE和粗评价指标进行融合,最终构建了精评价指标,并以改指标作为遗传算法的适应度函数,依据该适应度函数来进行最优参数的寻找。
遗传算法模拟一个人工种群的进化过程,通过真实世界中进化相关的机制,在每次迭代中都保留一组候选个体,重复此过程,种群经过若干代进化后,理想情况下其适应度达到近似最优的状态。自从遗传算法被提出以来,其得到了广泛的应用,特别是在函数优化、生产调度、模式识别、神经网络、自适应控制等领域,遗传算法发挥了很大的作用,提高了一些问题求解的效率。此处我们使用遗传算法进行最优参数查找模型的构建,其总体流程如图4所示,最终实现了最优参数的查找。
图4:遗传算法流程
遗传算法具有很强的鲁棒性和全局优化能力,它最大的优点是在寻优过程中,只使用目标函数(适应度函数),而不采用梯度和其他的辅助信息,其寻优过程也是从解空间点集出发,直到全局最优.
(1)编码
遗传算法的编码就是解的遗传表示,它是应用遗传算法求解问题的第1步,遗传算法的编码方式有很多种,我们采用格雷码(Gray Code)对个体进行编码。这种编码方式便于进行交叉、变异等遗传操作,有利于提高遗传算法的局部搜索能力。
(2)适应度函数
在遗传算法中使用适应度函数来度量群体中各个个体在优化计算中能达到或接近于达到最优解的优良程度。适应度较高的个体遗传到下一代的概率就较大,而适应度较低的个体遗传到下一代的概率就相对小些,对于不同的问题,适应度函数的定义方式不同
(3)选择、交叉及变异操作
遗传算法有3个基本操作:选择、交叉和变异、选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙,选择体现了达尔文的适者生存原则、交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体,新个体组合了父辈个体的特性。交叉体现了信息交换的思想,变异操作首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机改变二进制编码中的值。变异为新个体的产生提供了机会·
此处我们设置进化代数为200,种群规模为35,交叉概率为0.4,变异概率为0.2,在整个训练过程中种群的适应度函数变化如图5所示。可以看到在整个算法迭代过程中,适应度函数的值不断下降,最终实现了
图5:适应度函数变化曲线
我们抽取了100个输出进行可视化查看模型的效果,最终的结果显示改变参数的模型大体上可以保持比较好的性能,因此可以在精度上进行一些舍弃,进一步提升模型的速度性能。
图6:测试集输出
综上所述,本文对不同的种群密度估计模型在TPU平台上的适配进行了深入的研究,从模型FLOPs和吞吐量的角度提出粗评价指标进行模型类别的选择。构建了伪真值模型用于评价模型的准确率,并基于该准确率和粗评价指标构建模型的精评价指标,最终实现了模型的参数调优。
感谢ChaMd5战队队长M对AI小组的大力支持,感谢本次比赛中的相关工作人员的悉心答疑。
[1] Zhang, Yingying, et al. "Single-image crowd counting via multi-column convolutional neural network." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[2] Liu, Weizhe, Mathieu Salzmann, and Pascal Fua. "Context-aware crowd counting." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[3] Gao, Junyu, et al. "C^ 3 framework: An open-source pytorch code for crowd counting." arXiv preprint arXiv:1907.02724 (2019).
[4] Li, Yuhong, Xiaofan Zhang, and Deming Chen. "Csrnet: Dilated convolutional neural networks for understanding the highly congested scenes." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[5] Schneider, Nick, et al. "RegNet: Multimodal sensor registration using deep neural networks." 2017 IEEE intelligent vehicles symposium (IV). IEEE, 2017.
[6] Mirjalili, Seyedali. "Genetic algorithm." Evolutionary algorithms and neural networks. Springer, Cham, 2019. 43-55.