CCF BDCI | 算能赛题决赛选手说明论文-03

news2024/11/26 23:25:57

基于TPU平台实现人群密度估计∗

ChaMd5-AI

唐晶
机械工程&博士二年级
 华中科技大学
中国-武汉
 j_tang@hust.edu.cn

团队简介

唐晶,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平台,模型量化,遗传算法,参数优化

1. 引言

随着人工智能和计算机视觉技术的不断发展,现有深度学习对算力的要求日益提高,基于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平台的性能进行了深入的分析,提出了基于遗传算法的参数调优策略进行参数的优化,实现了较好的边缘部署效果。

2. 方法

2.1 不同Backbone粗分析

     

图1:MCNN网络结构

首先我们对MCNN进行了粗略的分析,其是一种多个卷积神经网络支路构成的种群密度估计网络,但是TPU平台适合的是大batch和大输入输出的网络模型的。同时我们考虑到MCNN网络提出时间较早,因此首先排除了它。之后我们研究了CANNet的基本结构,CANNet使用多个接收场大小获得的组合特征来进行上下文学习,进而实现高精度人群密度估计,这个在本任务中也不太适合。因此最终我们选定CSRNet和VGG作为研究对象,构建粗评价指标来进行最终的选择。

图2:CANNet网络结构 

2.2 粗评价指标

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融合构建了粗评价指标。

  (1)

基于这个评价指标,我们最终选定主办方提供的VGG模型作为最终我们的优化目标模型。

2.3 精评价指标

选定VGG模型后,我们需要对模型进行量化操作,为此我们需要对多个超参数进行优化。为了实现更为有效的超参数优化,我们构建了精评价指标来进行模型的综合性能评估。不同于粗评价指标里我们只考虑率模型的速度性能,在精评价指标里我们还将模型的准确率作为重要的评价指标。

此处为了更好的评价模型的真实精度,我们首先使用大尺度图像和大尺度输入训练一个精度较高的模型,之后以这个模型作为伪真值模型,用来评估模型精度。此处我们使用MSE作为评价指标,将参数调优后的模型与伪真值模型的推理结果进行对比,最终实现了模型精度的评估。

我们将MSE和粗评价指标进行融合,最终构建了精评价指标,并以改指标作为遗传算法的适应度函数,依据该适应度函数来进行最优参数的寻找。

 (2) 

2.4 遗传算法的构建

遗传算法模拟一个人工种群的进化过程,通过真实世界中进化相关的机制,在每次迭代中都保留一组候选个体,重复此过程,种群经过若干代进化后,理想情况下其适应度达到近似最优的状态。自从遗传算法被提出以来,其得到了广泛的应用,特别是在函数优化、生产调度、模式识别、神经网络、自适应控制等领域,遗传算法发挥了很大的作用,提高了一些问题求解的效率。此处我们使用遗传算法进行最优参数查找模型的构建,其总体流程如图4所示,最终实现了最优参数的查找。

图4:遗传算法流程 

遗传算法具有很强的鲁棒性和全局优化能力,它最大的优点是在寻优过程中,只使用目标函数(适应度函数),而不采用梯度和其他的辅助信息,其寻优过程也是从解空间点集出发,直到全局最优.

(1)编码

遗传算法的编码就是解的遗传表示,它是应用遗传算法求解问题的第1步,遗传算法的编码方式有很多种,我们采用格雷码(Gray Code)对个体进行编码。这种编码方式便于进行交叉、变异等遗传操作,有利于提高遗传算法的局部搜索能力。

(2)适应度函数

在遗传算法中使用适应度函数来度量群体中各个个体在优化计算中能达到或接近于达到最优解的优良程度。适应度较高的个体遗传到下一代的概率就较大,而适应度较低的个体遗传到下一代的概率就相对小些,对于不同的问题,适应度函数的定义方式不同

(3)选择、交叉及变异操作

遗传算法有3个基本操作:选择、交叉和变异、选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙,选择体现了达尔文的适者生存原则、交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体,新个体组合了父辈个体的特性。交叉体现了信息交换的思想,变异操作首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机改变二进制编码中的值。变异为新个体的产生提供了机会·

此处我们设置进化代数为200,种群规模为35,交叉概率为0.4,变异概率为0.2,在整个训练过程中种群的适应度函数变化如图5所示。可以看到在整个算法迭代过程中,适应度函数的值不断下降,最终实现了

图5:适应度函数变化曲线

我们抽取了100个输出进行可视化查看模型的效果,最终的结果显示改变参数的模型大体上可以保持比较好的性能,因此可以在精度上进行一些舍弃,进一步提升模型的速度性能。

图6:测试集输出 

3 总结

综上所述,本文对不同的种群密度估计模型在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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频实时自然美颜, 无惧素颜上镜

华为HMS Core 视频编辑服务依托自身AI技术的核心优势,在最新版本HMS Core 6.8.0中上线了全新的视频美颜功能,能对指定图片或视频中的人脸实现磨皮、美白、大眼、瘦脸的美颜效果,适用于直播、相机、视频剪辑、图片处理等场景中,打造…

cubeIDE开发, stm32的GPIO原理、cubeMX配置及底层源码实现分析

一、GPIO介绍 1.1 GPIO 简述 GPIO(General purpose input/output,通用型输入输出),一个引脚可以用于输入、输出或其他特殊功能,PIN脚依现实需要可作为通用输入(GPI)或通用输出(GPO)或通用输入与…

鑫磊股份开启申购:资产负债率较高,实控人控制企业借款高企

1月10日,鑫磊压缩机股份有限公司(下称“鑫磊股份”,SZ:301317)开启申购,发行价格20.67元/股,市盈率58.65倍。据贝多财经了解,鑫磊股份将在深圳证券交易所创业板上市。 本次上市,鑫磊…

LinuxC—进程

进程 1 进程标识符pid 基本概念 类型pid_t,是一个有符号16位整数,进程号是顺次向下使用(fd是优先使用当前可用最小的) shell中的ps命令能够查看当前系统的进程信息快照 相关函数 getpid(2)获取当前进程的进程号 /* Get the process ID of the calling…

中断处理程序

文章目录前言前置知识中断概念中断分类实验操作实验一实验二实验三前言 博客记录《操作系统真象还原》第七章实验的操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容: 编写中断处理程序( 操作 8259A 打开中断&…

2023年浙江食品安全管理员考试真题题库及答案

百分百题库提供食品安全管理员考试试题、食品安全管理员考试预测题、食品安全管理员考试真题、食品安全管理员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、多选题 1.餐具清洗消毒水池与以下哪些水池应分开&#xff…

机器学习— —导入数据

DAY1集成开发环境原始数据展示主要函数介绍data.iloc()函数dataset.iloc[0]dataset.iloc[:,:-1]dataset.iloc[:,3]dataset.iloc[1:3,1]可执行代码导入结果展示我的写在最后集成开发环境 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境,提供高级的代…

如何搭建Python环境和安装Pycharm

1、 搭建Python的基础环境 Anaconda简介 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些…

【Kotlin】标准库函数 ② ( run 标准库函数 | run 函数传入 Lambda 表达式作为参数 | run 函数传入函数引用作为参数 )

文章目录一、run 标准库函数1、run 函数传入 Lambda 表达式作为参数2、run 函数传入函数引用作为参数Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin 类型都可以调用这些函数 ; 一、run 标准库函数 1、run 函数传入 Lambda 表达式作…

Odoo丨5步轻松实现在Odoo中打开企微会话框

文章目录一、前言二、实现方案三、接口调用步骤一、前言 企业微信作为一个很好的企业级应用发布平台,尤其是提供的数据和接口,极大地为很多企业级应用提供便利,在日常中应用广泛! 最近在项目中就遇到一个与企业微信相关的场景开…

商标异议解读

商标异议解读《商标法》第三十五条规定,对初步审定公告的商标提出异议的,商标局应当听取异议人和被异议人陈述事实和理由,经调查核实后,自公告期满之日起十二个月内做出是否准予注册的决定,并书面通知异议人和被异议人…

Python初次实现MapReduce——WordCount

前言 Hadoop 本身是用 Java 开发的,所以之前的MapReduce代码小练都是由Java代码编写,但是通过Hadoop Streaming,我们可以使用任意语言来编写程序,让Hadoop 运行。 本文用Python语言实现了词频统计功能,最后通过Hadoo…

Redis从青铜到王者,从环境搭建到熟练使用

一、常见的非关系型数据库NOSQL分类NOSQL类型主要数据库产品类型特色K-V键值对存储类型Redis、Memcached使用key可以快速的查询到value,Memcached可以支持String类型的值value,Redis支持的值的数据类型很多如:String\set\hash\sortset\list等…

1月重磅福利——Softing在线培训课程上线

尽管有标准化和界面友好的工具,但车辆诊断的复杂性仍需要或多或少的专业知识支持,其具体取决于应用领域和要求。无论是初学者还是高级工程师,我们都很乐意为您日常遇到的问题提供相关支持,并就车辆诊断、ODX和OTX标准以及工具的使…

LeetCode 179. 最大数

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 179. 最大数,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 179. …

01Hashmap并发问题-ConcurrentHashMap-线程安全集合类-并发编程(Java)

1 概述 线程安全类可以分为3个大类: 遗留的的线程安全集合Hashtable,Vector使用Collections装饰的线程安全集合,如: Collections.syncronizedCollectionCollections.syncronizedListCollections.syncronizedMapCollections.sync…

Linux系列文章 —— vim的基本操作(误入vim退出请先按「ESC」再按:q不保存退出,相关操作请阅读本文)

系列文章目录 文章目录系列文章目录前言一、vim的基本概念二、vim的基本操作1.退出vim编辑器2.进入vim编辑器3.模式功能及切换三、vim命令模式命令集1.光标移动2.查找字符3.复制粘贴删除4.撤销、重做与重复做5.插入模式6.保存与退出7.环境修改四、总结1.vim的三种基本模式2.vim…

springboot之webmvc和webflux浅析

webmvc和webflux作为spring framework的两个重要模块,代表了两个IO模型,阻塞式和非阻塞式。 1、webmvc webmvc是基于servlet的阻塞式模型,一个请求到达服务器后会单独分配一个线程去处理请求,如果请求包含IO操作,线程…

车载以太网 - DoIP时间参数 - 06

时间参数在所有的协议定义中都无法被忽略的一块重要部分,之前的CAN&CANFD诊断协议总,ISO 16765就有相关的诊断时间参数的定义;在DoIP中,也有同样的时间参数定义,不过他是放在ISO 13400 - 2中,今天我们一起来看下这一块的内容。 ISO 13400原文文档 中文释义 时间参数定…

北大硕士LeetCode算法专题课-基础算法之排序

接连上篇:北大硕士LeetCode算法专题课---算法复杂度介绍_骨灰级收藏家的博客-CSDN博客 冒泡排序 冒泡排序(Bubble Sort)是一种很原始的排序方法,就是通过不断地交换“大数”的位置达到排序的目的。 因为不断出现“大数”类似于水…