随着数字化转型的深入,工作方式和地点发生了变化。幸运的是,在一些国家,疫情似乎已接近尾声。全球各地的公司在决定是否返回办公室时,跟踪办公室的占用率变得尤为重要。Atos,作为全球数字化转型的领导者,拥有超过10万名员工,正在利用计算机视觉和Roboflow自动化统计办公楼的进出人数。通过这样做,Atos使公司能够对其客户的办公室内外人员流动进行强有力的、一致的分析。该视觉模型还连接到办公室已有的安全摄像头,确保实施过程简单。最后,自动化这个过程减少了与手动计数和记录相关的成本。
Atos的系统在生产中的一个例子。想要看更长的视频片段,请观看下面的视频。此外,值得注意的是,虽然在这个背景下Atos正在记录COVID安全的出入口,但跟踪人流对于体育赛事、实体零售等也有重要的意义。
构建一个系统来匿名统计办公室的入口和出口。当Atos的开发者开始构建一个跟踪办公室占用率的系统时,他们知道需要考虑许多因素,包括:需要多少视频来训练模型?数据应该如何组织和准备?模型的准确性如何?模型能否识别出一个人以及在视频帧中跟踪他们的数量?系统应该运行在什么硬件上?它会有多快?系统如何确保个人隐私和网络安全?
借助Roboflow工具的力量,Atos在不到60天内就为客户端演示准备了一个工作生产系统。这在很大程度上要归功于使用了一个端到端的计算机视觉平台:一个帮助开发者组织、注释、预处理、训练、部署和监控其模型在生产中的持续成功的产品,以实现持续改进。
“端到端”到底意味着什么?开发、部署和优化计算机视觉模型曾经是一个复杂、痛苦的过程。有了Roboflow,寻求使这项技术民主化,这意味着首先消除认为阻碍普通人探索和实施的障碍。
值得注意的是,Atos项目上的开发者在.NET和软件工程方面有经验,但这将是他们首次涉足机器学习和计算机视觉。有了为软件工程师构建的计算机视觉工具,专注于这个项目的开发者能够迅速构建一个准确且强大的生产系统。
在逐步进行之前,让先看一个更长的片段,以了解系统在生产中的运行情况:Atos的办公室占用跟踪器的工作片段。注意在帧的右上角,系统在任何时候都在跟踪上下的人数。此外,系统正在记录FPS(每秒帧数),以证明它正在实时运行。围绕人们的框表示模型正在找到个体,相关的百分比是模型对其预测的信心程度。
由于Atos计划在边缘运行系统,所有视频将在当地进行分析,无需任何外部网络访问。模型还将被训练为只理解构成人的像素形状——而不是识别任何一个人的特定身份。所有计数都是匿名的:模型知道人是什么,而不是人是谁。
数据收集和组织。为了构建一个定制模型,Atos知道他们需要从模型将在生产中运行的条件下收集数据。由于Atos计划利用Roboflow的主动学习,他们能够用仅有的800张图像部署一个成功的初始模型。这800张图像中的每张都被注释了围绕图像中人物的边界框。
Atos还利用图像增强来增加样本数据集的大小和多样性。具体来说,Atos通过变化光照、缩放、对比度等生成了5倍多的训练数据。
在计算机视觉中,数据增强并不是新事物,但最近数据增强已经成为最先进的建模技术的前沿。YOLOv4,一个新的最先进的图像检测模型,使用了各种数据增强技术来提高其在COCO上的性能,COCO是一个流行的图像检测数据集。
模型开发和部署到NVIDIA Jetson Nano。一旦数据集完全准备好,Atos就用Roboflow Train训练了一个模型。因为Atos是在现实世界中识别人,团队使用了从COCO数据集开始的迁移学习。换句话说:Atos使用了模型在其他上下文中对人的图像学到的所有知识作为新模型在他们的图像上微调的起点。这加速了模型训练并提高了准确性。
Atos将模型部署到了一个NVIDIA Jetson Nano上。下面的视频展示了如何将模型部署到Jetson Nano上:Atos还尝试使用Microsoft Azure Custom Vision进行模型训练和部署。Atos发现与Roboflow开发出的系统相比,Azure的系统有三个关键差异:模型准确性、模型速度和开发者体验。
使用Microsoft Azure训练出的模型与Atos用Roboflow训练出的模型表现相似。在逐帧比较中,两个模型都成功地识别出了人。然而,用Roboflow训练出的模型(下图右)在其预测中表现出比用Azure训练出的模型(下图左)更高的信心水平。
当涉及到速度时,两个训练出的模型都达到了生产所需的速度性能。Atos利用了一个巧妙的技巧,以确保在受限的计算边缘设备上实现高帧吞吐量:他们从视频流中每10帧采样一次,这使得系统能够快速运行以跟上人体运动。在上图的比较中,请注意Azure模型的输出大约是10 FPS,而Roboflow模型的输出大约是8.6 FPS。
最后,当涉及到开发者体验时,Atos发现使用Roboflow有显著优势。Roboflow Train模型能够在Jetson Nano上只用三行代码运行。相比之下,Custom Vision的模型需要许多格式转换才能在Jetson Nano上工作。该模型以ONNX格式下载,该格式与Nano上可用的Jetpack版本不兼容。与Roboflow模型相比,部署Azure模型需要几天的配置时间。此外,由于Roboflow是端到端的,任何未来的数据集和模型改进都可以无缝地整合到未来的部署中。
生产细节:隐私、主动学习和显示。如上所述,系统被设计为在NVIDIA Jetson Nano上完全在边缘运行。这意味着默认情况下,被分析的视频不会被外部访问。此外,模型将被训练为识别构成人的像素,而不是学习任何一个人的特定身份。因此,所有模型预测都是完全匿名的。
一旦团队有了可接受的初始模型,他们编写了自定义逻辑,以逐帧记录检测,以跟踪视图中的对象。这确保了一旦在一帧中找到一个人,他们就会在后续帧中被记录(只要边界框在重叠上相似)。请注意,在示例媒体中,帧的中心有一条黑线。当一个边界框从南到北穿过这个帧时,“Down”被记录,当一个边界框从下到上穿过时,“Up”被记录。
最后,团队考虑了如何整合主动学习,以确保模型能够持续表现良好。主动学习意味着监控模型性能,并继续从生产条件中收集数据,以便系统不断改进。在这种情况下,包括添加逻辑以保存模型信心低于给定阈值的给定匿名帧,然后(在客户同意的情况下)使用Roboflow Upload API自动将该帧添加回数据集,以供未来的注释、训练和重新部署。
就这样!一个在边缘实时运行的生产就绪的占用计数器。