不是Nvidia买不起,只是国产更有性价比!使用全国产CPU和GPU项目开发记录-训练篇


不是Nvidia买不起,只是国产更有性价比!使用全国产CPU和GPU项目开发记录-训练篇

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

点击上方“小白学视觉”,选择加”星标”或“置顶”
重磅干货,第一时间送达
作者丨Dcity
编辑丨极市平台
极市导读
本文介绍真实的客流统计算法从Nvidia环境往国产海光CPU+DCU进行迁移的训练过程,并验证了目标检测、行人重识别和多标签分类三个不同类型的任务,最后结果显示采用历史的训练代码,不做任何修改,就能完成整个训练!
2023年是作为AI领域从业者悲喜交加的一年,一方面是超级大模型带来的狂欢狂热,一方面是算力困境带来的无奈无助。甚至一度连消费级的Nvidia卡都要被禁,我们还能不能愉快地玩转人工智能深度学习了,说好的科研无国界呢!当然了,作为一名算法工程师,我们的使命就是解决技术和研发难题,自然不会坐以待毙。前面有了遥遥领先开路,于是我也在思考是否可以用国产替代呢,不是很痛的那种?
放眼望去,国产的AI软硬件近年也是风生水起、奋力追赶,到底哪家强,上手了才知道。本文本着工程师实事求是的精神,通过实际落地应用项目的迁移来记录国产方案替代的过程。这里介绍的是国产海光CPU+DCU的方案(不管是CPU还是AI加速器芯片都是国产的)。按照一般AI项目开发的流程,本文内容上分为训练篇和部署篇,方便的大家阅读理解。
在零售门店、大型商超和公共设施等场景下大都在出入口安装有监控摄像头,利用这些监控摄像头采用AI的技术方法进行客流信息统计是一类常见的需求。本文涉及的实战项目就是针对上述应用场景,算法应用具体包含的需求点是:
1)能够根据视频流实时统计门口的进入客流数量和出去客流数量(即同时记录出入两个方向的客流量);
2)能够实现客流去重,即频繁进出门口的客流需要在统计上去除重复;
3)能够实现特殊人员的筛选,比如门店工作人员、外卖人员、清洁人员等;
4)限制条件为不允许使用人脸信息和基于人脸的算法。(小伙伴们可以根据实际需求自己设计技术方案)
实现的一种技术方案大致如下:
对于俯视安装的摄像头拍摄到的画面,进行ROI设计,将画面分为门内区域(例如图中白色多边形)和门外区域(例如图中白色多边形以外),同时有一条虚拟的门线(例如图中的红线)。结合ROI区域和门线,可以判断客流运动在门店的进出的方向。采用目标检测器检测行人及头肩,并利用通用多目标跟踪器(比如ByteTrack(https ://github.com/ifzhang/ByteTrack))进行连续跟踪,然后根据跟踪轨迹及方向来对进出门口的人数进行统计。为进行人员过滤和去重,结合行人重识别方法和人员属性信息,进行判断。大致逻辑是人员从店门区域走到店内区域就是进店候选,通过过滤来判断是不是真的进店,通过去重判断是不是首次进店:
step1:人员进入店门区域,此时会维护一个长度为time_limit_before的入店前队列,队列中存放人员的位置box信息,再从入店前队列中取一张人员截图,该人员截图需满足没有与其他人员有重叠,或者整个过程中重叠的区域最小;
step2:当人员的box与店内区域有交集时,此时触发入店,保存此时刻的人员截图作为第二张截图;这时又会维护一个长度为time_limit_after的入店后队列;
step3:当time_limit_after这个队列长度达到time_limit_after时,选取此时的人员截图为第三张截图;
step4:使用获取到的三张图片,进行人员过滤与去重,首先如果人员的三张截图中有一张背面朝向的,或者三张里面没有正面朝向的,直接认为不是真正的入店客流并过滤掉;如果未被过滤掉,将三张截图的特征与当前人员库中的特征作比较,相似度高于阈值则去重,低于阈值则认为是真实客流,比对完成后将三张截图的特征入库。
从AI模型方面看,主要涉及到三个不同类型的模型:目标检测、行人重识别、多标签图像分类。对于CV方向的小伙伴们来说,这几类模型的技术不会陌生,能够实现的算法和模型结构也有很多的选择。因为是已有项目的迁移,我们没有采用最新的一些的模型技术方法,而是尽可能复用之前的训练工程代码。

从事深度学习开发的小伙伴们最痛苦的事情之一应该是环境搭建,即便是有文档,甚至源码,最基本的运行起来都绝非易事。海光DCU开发的相关文档和资源可以在他们的社区光合开发者社区(https ://developer.hpccube.com/)找到,下载拉取都很方便(不用受网络之苦)。

至此,环境搭建基本完毕,剩下就是训练工程代码所需要的一些python包,直接pipinstall(采用pip国内源安装,快速且无任何问题)。这可能是我们在从Nvidia迁移到众多国内外AI硬件,开始第一关———环境搭建过程中最简单最愉快的一次。
为了方便进行比较公平的对比,模型训练的工程代码完全复用项目上使用过的历史代码,训练数据和测试数据保持完全相同,并且保持所有超参一致,不修改任何一行代码。
作为对比的Nvidia环境机器配置是GeForceRTX1080Ti(实在是没有卡呀!)和Intel(R)Core(TM)i7-7700KCPU@4.20GHz,均是单卡真实训练。
1.目标检测模型训练
目标检测模型采用的是YOLOv5网络,具体使用的是轻量级的YOLOv5s,网络层没有进行大的修改,采用自定义的场景数据集,检测类别包括行人(person)和人头(head),训练轮次100+20,SGD优化器。训练速度上两种机器配置DCU和GPU基本一致,都在平均每秒4次迭代左右(4it/s)。
训练结束后的精度对比如下图所示。可以看出在测试集上的表现,两者相差大约2个百分点,尚可接受。这是在两种硬件环境下由完全相同的训练代码和设置条件下得出的。
从部分推理结果图显示来看,DCU和GPU训练出来的模型在推理时表现几乎一样,连预测的置信度都没有差异(如下图所示)。
2.行人重识别模型训练
行人重识别模型采用的是fast-reid网络,具体使用的轻量级的R34网络,特征向量512维,输入图像分辨率256x128,训练轮次120.训练速度上,GPU机器平均每次迭代0.65s(0.65s/it),DCU机器平均每次迭代1.34s(1.34s/it)。因为采用的是完全相同的训练设置,这里的速度差异应该是由于训练数据加载导致(两个机器的CPU核数不同,论单核的性能DCU机器的CPU应该比GPU机器采用的IntelCPU差一些,毕竟从主频上就差距较大,前者是2.9GHz,后者4.2GHz)。
训练结束后的精度对比如下图所示,可以看出在测试集上的表现,两者相差不到2个百分点,都还是不错的效果了。
从部分识别结果图来看还是符合预期的,能正确进行识别和区分。
3.多标签图像分类模型训练
多标签图像分类模型是采用paddlepaddle框架、PaddleClas实现。多标签分类模型的目的是对方便对人员属性进行区分,包含了性别(男女)、年龄段(儿童、青年、中年、老年、未知)、身份属性(普通客人、快递人员、穿制服工作人员、清洁工人等)、身体朝向(正面、背面、其他)。
具体实现是基于PaddleClas中的person_attribute,轻量级的PPLCNet网络进行改造。网络输入分辨率256x192,标签数量14,训练轮次100。训练速度上,DCU机器和GPU机器差异巨大,其中DCU训练的吞吐量约1410images/sec,GPU训练的吞吐量约194images/sec,尚不清楚差异的来源,因为两种环境的训练工程代码完全一致,没有任何的修改(对paddlepaddle比较熟悉的小伙伴可以去深究一下)。
训练结束后的精度对比如下图所示,可以看出在测试集上两者的差异在1个百分点之内,没有大的差别。
从一些识别结果样例图看,效果还是不错(不少场景下,截取到的行人图像质量较差)
本文重点阐述了真实的客流统计算法从Nvidia环境往国产海光CPU+DCU进行迁移的训练过程,验证了pytorch和paddlepaddle两种主流的深度学习框架,以及目标检测、行人重识别和多标签分类三种类型的深度学习任务,详细对比了NvidiaGPU和HygonDCU两种硬件环境下的训练结果。从使用体验上总体还是超出预期的,最难能可贵的是采用历史的训练代码,不做任何修改,就能完成整个训练,并且精度对比差异不大,这才是真的无痛平滑迁移!当然,此处进行的实验有限,不能说明太多问题,但是相信国产的AI软硬件在小伙伴们的共同努力下会越来越好,毕竟谁能一直忍受卡脖子呢!
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:前沿论文1000篇
在「小白学视觉」公众号后台回复:1000paper,即可下载最新的前沿顶会顶刊1000篇论文,涵盖:医学图像处理、目标检测、语义分割、扩散模型、大模型、自动驾驶、具身智能、超分辨率、图像去噪等多个领域。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三+上海交大+视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录