写点什么

ModelArts AI Gallery 与 HiLens Kit 联合开发丨行人社交距离风险提示 Demo

发布于: 2021 年 02 月 02 日

作者:历天一


摘要:本 Demo 使用 YOLOv3_Resnet18 模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),然后计算所有检测到的人之间的相互“距离”。


前情提要


听到行人社交距离风险提示是不是觉得有点不太明白,简单来说,就是通过某一角度的视觉信息,判断行人的社交距离情况,让我们直接看视频来领会吧。


image


这是在华为 HiLens Kit 上部署推理保存的视频,通过计算行人间社交距离给出“High Risk” 或“Low Risk”的提示,下面来具体介绍一下。


社交距离检测介绍


本 Demo 使用 YOLOv3_Resnet18 模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),然后计算所有检测到的人之间的相互“距离”。这里要注意的是和现实生活中使用的长度单位来衡量距离不一样的是,在计算机视觉世界中使用的是“像素”,一种简单的方法是根据行人坐标来计算检测到的两个人的质心,也就是根据检测到的目标框的中心之间相隔的像素值作为计算视觉世界中的“距离”来衡量视频中的人之间的距离是否超过安全距离。


Demo 主要分为两部分:行人检测和社交距离计算,大体流程如下:


  1. 使用 YOLOv3_Resnet18 算法检测输入视频或视频流中的所有行人,得到行人坐标,并根据此计算位置信息和质心位置;

  2. 根据第 1 步的信息,计算所有检测到的行人的人质心之间的相互距离;

  3. 根据上一步计算得到的社交距离,对比预先设置的安全距离,从而计算每个人之间的距离对,检测两个人之间的距离是否小于 N 个像素,小于则处于安全距离,反之则不处于安全距离。


这里使用的是 YOLOv3_Resnet18 算法来进行行人检测,事实上,可替换为任何一种目标检测算法,只要输出行人坐标符合本 Demo 要求顺序即可,比如性能更为优良的 YOLOv4,甚至 YOLOv5 等等,值得一提的是在 PC 端的实现是基于最新的、训练和推理性能最佳的 YOLOv5-s 模型实现的,如果需要可以参考本文最下面参考部分的[[1]](https://github.com/ChargedMon... "https://github.com/ChargedMonk/Social-Distancing-using-YOLOv5") 或[[2]](https://github.com/Akbonline/... "https://github.com/Akbonline/Social-Distancing-using-YOLOv5")([1]比[2]更加详细具体,容易上手,推荐使用)。但 YOLOv5 是基于 PyTorch 实现的,不方便转换为 HiLens 需要的 om 模型使用,庆幸的是可以通过 PyTorch——>onnx——>om 来使用,这一点我正在尝试,也期待有优秀的同学加入进来。


image


上述的 YOLOv3_Resnet18、原版 YOLOv3_Darknet53 以及最新的 YOLOv5 算法都可以在 ModelArts AI Gallery 找到哦,不仅提供了预训练模型,同时也很方便使用,小白也能起送上手,奉上链接


YOLOv3_Resnet18 GPU 版本 TensorFlow:https://marketplace.huaweiclo...


YOLOv3_Resnet18 Ascend 910 版本 TensorFlow:https://marketplace.huaweiclo...


YOLOv3_Darknet53 GPU 版本 TensorFlow:https://marketplace.huaweiclo...


YOLOv3 Ascend 910 版本 TensorFlow:https://marketplace.huaweiclo...


YOLOv5 GPU PyTorch:https://marketplace.huaweiclo...


怎么样,是不是非常丰富,选择多多呀?可以试手一下哦,会发现使用起来也是很简单的,注意 ModelArts 和 OBS 花费哦。


本 Demo 选择的是第一个——YOLOv3_Resnet18 GPU 版本 TensorFlow,因为本 Demo 只需要对行人进行检测,所以选择了模型结构简单,训练和推理速度快的 YOLOv3_Resnet18,节省训练时间,也就是节省训练成本呀。在训练方面,使用了来自开源行人数据集整理的数据集,因为只有 person 这一个标签,相比于 COCO 数据集 80 个标签,训练和部署推理更加具有优势,这里奉上 AI Gallery 的数据集链接,没想到吧, AI Gallery 不仅有算法,还有数据集,满足你的一切需要,有没有哆啦 A 梦的口袋的感觉(我承认我有一点夸张)


Person-4192 数据集链接:https://marketplace.huaweiclo...


如果你还想训练包含其他类别的情况,比如 Person and Car,可参照如下。当然,一般来说,数据集越大,鲁棒性越好,这里的数据集较小,可以自行使用更大的数据集。


image


实操介绍


主要麻烦的部分是行人检测模型的训练,如果为了方便,可以使用基于 COCO 的预训练模型,在 GitHub 有很多。这里希望是从数据集准备开始,到订阅算法,完成训练,到 HiLens Studio 调试,并最终部署,体验下基于 ModelArts 和 HiLens Kit 的完整开发流程,因为以前介绍过,这里就不在赘述,详情可参考我的博文——开发教程 | 基于ModelArts与HiLens端云协同开发行人检测与跟踪方案,博文介绍的较为详细,如果有问题,可以联系我。值得注意的是这篇博文是介绍行人跟踪以及行人计数的,如果有兴趣的话,可以结合这篇博文与本博文,实现更加完善行人检测、跟踪以及社交距离检测的方案,相信在社交距离检测的基础上加入跟踪和多种人数统计方案会更加切合实用,性能更加强大。


对了,我把技能发布到技能市场了,名字是 Social-Distancing-using-YOLOv3-HDMI,审核通过后,大家就能够订阅使用了,技能市场汇集了官方和第三方开发的技能,能够高效便捷地将自己开发的技能分享给他人使用,而且从分享到他人订阅以及部署到 HiLens 使用,完全基于网络实现,非常方便,极大促进了技能的共享。


image


开发体验


整体基于 ModelArts 和 HiLens Stuio 1.5.0 开发,参考开源代码实现,很惭愧的是大部分内容都是人家的,自主创新性很少。不过整体开发还是很顺利的,从得到模型到在 HiLens Studio 调试完成来说,不到一个下午就能搞定了,这是极致效率的体现,这得益于在线 IDE HiLens Studio 的使用,作为一款线上 IDE,提供了开发,调试的完整功能,甚至可以在线运行调试,直接得到程序运行的可视化结果展示。同时提供了丰富的模板,基于模板开发,大大提高开发效率。


总的来说,仿佛在线有了一个自己的 HiLens Kit 一样,只要连接到网络,开发 HiLens Stduio 就能开发了,调试成功后还可以一键安装到自己的 HiLens Kit 上,让开发变成一件很爽的事情,而且 HiLens Studio 也在不断完善中,与我第一次使用最初版本相比,稳定性和性能都有了很大的提升,比如下图中红色剪头所指部分,就是后来添加的,方便开发者调试,相信研发人员也是付出了不少心血和努力,非常感谢。


ModelArts 也在飞快成长,开发环境除了最初的 NoteBook,也有了界面和功能更加完善的 Jupyter Lab,最新测试的在线切换硬件配置,可以进行 CPU 和 GPU,以及不同配置 CPU 和 GPU 的在线切换功能,这一点一滴地改变方便可开发者的使用,拉近了开发者与 ModelArts 的距离,相信 ModelArts 在未来会更加茁壮地成长。


注意的是,我是用的是 HiLens Studio 基础版,多人共用,所以有时候可能因为资源紧张,导致占用,从而运行出错,这时候可以通过创建官方案例模板运行来判断是否资源占用,一般来说,如果官方模板也运行报错,可能就是资源占用,可以考虑使用付费版,但需要额外费用哦。


下图是 HiLens Studio 的开发界面,有没有一种熟悉的感觉,和 VS Code 有些类似,这对熟悉 VS Code 的同学是一个福音哦。


image


YOLO 浅谈


YOLO 系列是经典的目标检测网络,在性能和速度上取得了较好的平衡,应用广泛。虽然原作者只做到了 YOLOv3,但在爱好者的努力下,后续发展了 YOLOv4, 已经发展到了最新的 YOLOv5(暂时称为 YOLOv5),注意 YOLOv5 的作者并没有发表论文,因此只能从代码的角度理解。


YOLOv4 在 YOLOv3 的基础上在网络结构和预处理等很多方面进行了很多的创新,融合了当时得到验证的很多 trick,性能得到了很大的提升。比如输入端采用 mosaic 数据增强,Backbone 上采用了 CSPDarknet53、Mish 激活函数、Dropblock 等方式,Neck 中采用了 SPPFPN+PAN 的结构,输出端则采用 CIOU_LossDIOU_nms 操作。


image


这里给出 YOLO V4 的网络结构图(图片来自网络):


image


YOLOv5 共有 s,m,l,x 四个模型,相同的数据集上,YOLOv5-s 模型训练和推理性能最佳,YOLOv5-x 模型 mAP 指标最佳。其结构其实和 YOLOv4 的结构还是有一定的相似之处的,但也有一些不同,这里给出 YOLOv5-s 的网络结构图:


image


下面简单介绍 YOLOv5 的部分改进,更多详情可参考[[3]](https://github.com/ultralytic... "https://github.com/ultralytics/yoloV5")和[4]


  1. 自适应 Anchors 计算


在 YOLOv3、YOLOv4 中,训练不同的数据集时,计算初始锚框的值是通过单独的程序运行的。但 YOLOv5 中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。


  1. CSP 结构


相比于 YOLOv4 中只有主干网络使用了 CSP 结构,YOLOv5 中设计了两种 CSP 结构,以 YOLOv5-s 网络为例,以 CSP1_X 结构应用于 Backbone 主干网络,另一种 CSP2_X 结构则应用于 Neck 中。


image


相关代码如下:


image


image


image


结语


基于 ModelArts 和 HiLens(在线 IDE HiLens Studio 和硬件 HiLens Kit )可以高效地从零开始完成一个项目的落地应用全流程,二者的无缝衔接大大提高了效率,但是真正的落地应用需要根据具体应用行业和场景实际分析,对症下药,并非如此简单,本 Demo 也是仅供学习使用,性能不做保证。不过相信随着 ModelArts 和 HiLens 的不断完善和发展,一切都会越来越好,汇集更多开发者,共建良好生态。


邮箱 tjulitianyi@163.com


参考


[1] https://github.com/ChargedMonk/Social-Distancing-using-YOLOv5


[2] https://github.com/Akbonline/Social-Distancing-using-YOLOv5


[3] https://github.com/ultralytic...


[4] https://mp.weixin.qq.com/s/LE...


本文分享自华为云社区《行人社交距离风险提示 Demo | 基于 ModelArts AI Gallery 与 HiLens Kit 联合开发》,原文作者:Tianyi_Li。  


点击关注,第一时间了解华为云新鲜技术~


发布于: 2021 年 02 月 02 日阅读数: 38
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
ModelArts AI Gallery与HiLens Kit联合开发丨行人社交距离风险提示Demo