【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

WriteUp 1年前 (2023) admin
217 0 0
【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

2022 CCF BDCI

第十届CCF大数据与计算智能大赛


第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束。大赛官方竞赛平台DataFountain(简称DF平台)将陆续释出各赛题获奖队伍的方案思路。本方案为【基于TPU平台实现人群密度估计】赛题的二等奖获奖方案,赛题地址:

https://www.datafountain.cn/competitions/583(戳底部“阅读原文”可直达)

【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路


获奖团队简介


团队名称:深藏blue

团队成员:深藏blue团队成员来自于天翼云科技有限公司智能边缘事业部大数据与AI产品线。团队成员包括周伟伟、黄宇生、林瑞玉,成员长期从事人工智能算法开发,在计算机视觉方向积累了丰富的经验。

所获奖项:二等奖


摘要


人群密度估计是计算机视觉中的一项重要任务,旨在同时识别各种情况下的任意大小的目标,包括稀疏和杂乱的场景。它主要应用于现实生活中的自动化公共监控,能够在公共安全管理、公共空间设计、数据收集分析等方面发挥重要的作用。 

“基于TPU平台实现人群密度估计”比赛致力于人群密度估计算法在算能TPU平台的落地,对于给定的预训练模型,通过优化预处理、模型推理方式、模型量化等,兼顾推理精度与推理速度。本赛题的难点在于精度和推理速度的平衡,对于给出的四个预训练模型,我们先通过同等输入大小和同等预处理下,分别比较FP32和INT8模型的综合分数,选择VGG作为后续模型;引入网格搜索的方法,进行最优参数区间确定;结合人工先验知识,确定最后的预处理方法和推理形式。与官方的基线模型相比,我们的方案取得了非常显著的综合提升,最终获得了B榜排名第二的成绩。


关键词


人群密度估计、TPU、算能


赛题分析


人群密度估计与计数是指对拥挤场景中人群分布及数量进行统计,对安全系统、交通控制等具有重要意义。

本赛题不需要参赛选手训练人群密度估计模型,给定4个预训练模型CANNet[1]、CSRNet[2]、MCNN[3]、VGG[4],选手需要通过实验自主选择预训练模型,在数据预处理、模型输入、模型量化等几个方面进行优化,兼顾推理精度和推理速度。算法推理过程需要在算能云空间中使用TPU卡实现,可选的模型格式包括FP32和INT8的BModel。

评测指标包括精度和速度两个方面:

在精度方面,通过Mean Absolute Error(MAE)、Root Mean Squared Error(RMSE)和Normalized Absolute Error(NAE)三个指标评估模型精度。

在速度方面,通过模型推理时间TIME评估模型性能,为数据集图片推理的平均时间,单位为s。

最终得分计算公式为:

【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

从分数加权公式可以看出,对于推理精度有多方位的考察,推理速度占据了较高的权重。

因此,在处理该赛题时不能一味追求精度或者速度,必须在两者之间取得平衡。


解决方法


我们认真分析了数据集与任务的特点,从数据处理、模型选取、量化方式、推理方式几个层面进行优化。


2.1 数据分析


【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

图1:测试图片


【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

图2:测试图片


【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

图3:测试图片


通过分析测试数据集的特点,发现存在着不同尺度、不同数量级人群密度的图片,如图1、图2和图3,人群密度相差巨大,大密度的图片尺寸往往也较大。 对于人群密度估计模型,能搞较好处理图1、图2这类目标面积较大的图片。由于卷积神经网络下采样作用,会使得原始图片上的区域在经过卷积后尺寸变小,图3中的人头区域将会丢失特征,导致无法获得准确计数,因此有必要将大尺寸图片进行分割后进行推理,同时,为保证高密度人群图片的推理效果,不适宜将图片缩放至统一尺寸,而应该缩放到一个区间内,使得原始尺寸较大的图片缩放后也有较大尺寸。

按照通用经验,先对数据集进行尺寸和宽高比分析,有助于确定模型的输入大小或者比例。

【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

图4:测试图片宽度直方图


【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

图5:测试图片高度直方图


【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

图6:测试图片宽高比直方图


由图4可知,大部分图片宽度集中在500-5000。由图5可知,测试图片的高度集中在4000以内。由图6可知,测试集的宽高比主要分布在1.5附近,因此,选择一个宽高比在1.5左右的模型输入大小,推理图片的缩放形变较小。


2.2 模型选择


本赛题提供了四个预训练权重CANNet、CSRNet、MCNN、VGG,无需训练模型。因此,必须先确定好预训练权重才能更好开展后续优化工作,为此我们采取一种非常直接的方法,即固定数据集、预处理方法、模型输入大小情况下,只更换预训练模型,来测试各个模型在测试数据集上的综合表现。对于本次实验,选用官方给定的10张带标签的图片进行分数计算。将图片的尺寸(H*W)缩放到(576,768)~(2048,2048),模型输入大小为(3,576,768),分别测试FP32和INT8模型的综合分数。由于提供的CANNet权重无法正常加载,故忽略该模型。


模型

FP32

INT8

CANNet

/

/

CSRNet

68.34

65.19

MCNN

169.76

161.49

VGG

186.74

177.64

表1:4个预训练权重在相同条件下的得分


通过表1可以得出VGG和MCNN均远高于CSRNet的得分,且VGG综合表现优于MCNN,因此选择VGG作为后续实验的预训练模型。


2.3 参数选择


在确定模型结构之后,需要确定模型输入大小。此外,根据先前的分析,需要将大图切割成小图再输入模型进行推理,因此,原始图片缩放范围也是一个重要的超参数。经过总结,确定以下参数可能会影响综合得分。


参数名称

FP32

模型输入大小

影响推理速度与精度

Batch Size

影响推理速度

图片缩放范围

影响推理数量和精度

FP32或INT8

影响推速度与精度

表2:影响综合得分的因素


由于将模型进行INT8量化需要一定时间,包含在参数搜索中将耗费较长时间,且根据先前模型选择实验,INT8综合分数通常低于FP32,因此在进行网格搜索时只考虑模型输入大小,Batch Size和图片缩放范围,后续确定超参数后再进行量化过程的优化策略。

对于模型输入大小,采取16的倍数,从112×112到576×768,选取几个有代表性的输入尺寸作为搜索范围。Batch Size从1到16,逐次乘以2。测试图片的宽度在500-5000,高度集中在4000以内,因此选择宽度最小值一半左右且为16倍数的位置作为最小搜索尺寸,即288。最大尺寸同样选择介于宽高最大值4000~5000一半的位置,选取2048这个值作为最大搜索尺寸。参数搜索范围如表3所示。


参数名称

作参数范围

模型输入大小

[H,W]

[112,112],[144,144],[144,192],[224,224],[288,384],[576,768]

Batch Size

[1,2,4,8,16]

图片缩放范围

[minH,minW,

maxH,maxW]

[224,224,768,768],

[288,384,1024,1024],

[288,384,2048,2048],

[432,576,1536,1536],

[576,768,2048,2048]

表3:网格搜索参数范围


使用以上参数在10张测试图片上进行实验,得到每组参数的综合分数。

在经过网格参数搜索后,可得到以下结论:

1. Batch Size对推理速度影响较小,Batch推理耗时跟单张图片推理几乎是线性关系,因此固定Batch Size为1。

2. 若模型输入大小一定,随着图片尺寸增加,精度提升,但是切割后小图数量增加导致推理次数增多,速度分降低更快。

3. 较小的模型输入大小对精度影响较小。

因此,最终选择较小的图片尺寸和较小的模型输入,即:将测试图片统一缩放到最小为288×384,最大为768×768的范围;模型输入大小固定为144×192;Batch Size固定为1。使用上述参数进行实验,基于FP32 BModel模型测试,即可获得较高综合分数。


2.4 模型量化


官方提供了一键量化命令 auto_cali对FP32模型进行量化,需要先生成lmdb数据集,推荐使用200张训练数据集进行校准。

我们尝试了两种方案准备lmdb数据集:

1. 直接使用200张训练数据集进行校准。

2. 将200张训练图片按预处理方式进行缩放并根据模型输入大小进行裁剪,得到更多数量的小图,并随机选取不同数量小图进行校准。

对于方案1和方案2,FP32转为INT8综合得分均有所降低,故最终放弃INT8的方案。受限于时间,未能进行更多的尝试。

最终,我们选择将图片统一缩放到最小为288×384,最大为768×768的范围,模型输入大小固定为144×192,Batch Size固定为1,FP32 BModel模型推理作为最终方案,在B榜获得了第二名。


比赛总结


本次比赛我们很快就确定了优化方向,通过分析数据和任务特点确定了可优化的参数和策略,使用网格搜索的方式很快确定了一组较好的参数,获得了显著提升。

通过该比赛了解到人群密度估计模型落地的困难点,针对任务特点设计优化策略,学习使用国产TPU进行量化和推理,使个人算法能力得到较大提升。但是,受限于时间,我们没有对INT8量化造成较大精度损失原因进一步分析,没有更加深入研究官方量化工具中的一些自定义参数,这也限制了分数的进一步提升。希望日后能更加深入理解和使用TPU的量化工具。


致谢


感谢主办方和承办方等各单位提供本次竞赛的平台和资源,在后续的工作中,我们将会更多支持国产框架和芯片,共同推动国内人工智能产业的发展。


参考


[1] Liu W ,  Salzmann M ,  Fua P . Context-Aware Crowd Counting: 10.48550/arXiv.1811.10452[P]. 2018.

[2] Li Y ,  Zhang X ,  Chen D . CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes[J]. IEEE, 2018.

[3]  Zhang Y ,  Zhou D ,  Chen S , et al. Single-Image Crowd Counting via Multi-Column Convolutional Neural Network[C]// 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2016.

[4]   Gao J ,  Lin W ,  Zhao B , et al. C^3 Framework: An Open-source PyTorch Code for Crowd Counting: 10.48550/arXiv.1907.02724[P]. 2019.


—End—


【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路
【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

戳“阅读原文”,速来参赛办赛~

原文始发于微信公众号(DataFountain):【二等奖方案】基于TPU平台实现人群密度估计赛题「深藏blue」团队解题思路

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...