摘要:本 Demo 应用 YOLOv3_Resnet18 模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),而后计算所有检测到的人之间的互相“间隔”。
前情提要
听到行人社交间隔危险提醒是不是感觉有点不太明确,简略来说,就是通过某一角度的视觉信息,判断行人的社交间隔状况,让咱们间接看视频来体会吧。
这是在 华为 HiLens Kit 上部署推理 保留的视频,通过 计算行世间社交间隔 给出“High Risk”或“Low Risk”的提醒,上面来具体介绍一下。
社交间隔检测介绍
本 Demo 应用 YOLOv3_Resnet18 模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),而后计算所有检测到的人之间的互相“间隔”。这里要留神的是和现实生活中应用的长度单位来掂量间隔不一样的是,在计算机视觉世界中应用的是“像素”,一种简略的办法是依据行人坐标来计算检测到的两个人的质心,也就是依据检测到的指标框的核心之间相隔的像素值作为计算视觉世界中的“间隔”来掂量视频中的人之间的间隔是否超过平安间隔。
Demo 次要分为两局部:行人检测和社交间隔计算,大体流程如下:
- 应用 YOLOv3_Resnet18 算法检测输出视频或视频流中的所有行人,失去行人坐标,并依据此计算地位信息和质心地位;
- 依据第 1 步的信息,计算所有检测到的行人的人质心之间的互相间隔;
- 依据上一步计算失去的社交间隔,比照事后设置的平安间隔,从而计算每个人之间的间隔对,检测两个人之间的间隔是否小于 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 来应用,这一点我正在尝试,也期待有优良的同学退出进来。
上述的 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,可参照如下。当然,一般来说,数据集越大,鲁棒性越好,这里的数据集较小,能够自行应用更大的数据集。
实操介绍
次要麻烦的局部是行人检测模型的训练,如果为了不便,能够应用基于 COCO 的预训练模型,在 GitHub 有很多。这里心愿是从数据集筹备开始,到订阅算法,实现训练,到 HiLens Studio 调试,并最终部署,体验下基于 ModelArts 和 HiLens Kit 的残缺开发流程,因为以前介绍过,这里就不在赘述,详情可参考我的博文——开发教程 | 基于 ModelArts 与 HiLens 端云协同开发行人检测与跟踪计划,博文介绍的较为具体,如果有问题,能够分割我。值得注意的是这篇博文是介绍行人跟踪以及行人计数的,如果有趣味的话,能够联合这篇博文与本博文,实现更加欠缺行人检测、跟踪以及社交间隔检测的计划,置信在社交间隔检测的根底上退出跟踪和多种人数统计计划会更加切合实用,性能更加弱小。
对了,我把技能公布到技能市场了,名字是 Social-Distancing-using-YOLOv3-HDMI,审核通过后,大家就可能订阅应用了,技能市场会集了官网和第三方开发的技能,可能高效便捷地将本人开发的技能分享给别人应用,而且从分享到别人订阅以及部署到 HiLens 应用,齐全基于网络实现,十分不便,极大促成了技能的共享。
开发体验
整体基于 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 的同学是一个福音哦。
YOLO 浅谈
YOLO 系列是经典的指标检测网络,在性能和速度上获得了较好的均衡,利用宽泛。尽管原作者只做到了 YOLOv3,但在爱好者的致力下,后续倒退了 YOLOv4, 曾经倒退到了最新的 YOLOv5(临时称为 YOLOv5),留神 YOLOv5 的作者并没有发表论文,因而只能从代码的角度了解。
YOLOv4 在 YOLOv3 的根底上在网络结构和预处理等很多方面进行了很多的翻新,交融了过后失去验证的很多 trick,性能失去了很大的晋升。比方输出端采纳 mosaic 数据加强 ,Backbone 上采纳了CSPDarknet53、Mish 激活函数 、Dropblock 等形式,Neck 中采纳了 SPP、FPN+PAN 的构造,输入端则采纳 CIOU_Loss、DIOU_nms 操作。
这里给出 YOLO V4 的网络结构图(图片来自网络):
YOLOv5 共有 s,m,l,x 四个模型,雷同的数据集上,YOLOv5- s 模型训练和推理性能最佳,YOLOv5- x 模型 mAP 指标最佳。其构造其实和 YOLOv4 的构造还是有肯定的相似之处的,但也有一些不同,这里给出 YOLOv5- s 的网络结构图:
上面简略介绍 YOLOv5 的局部改良,更多详情可参考 [[3]](https://github.com/ultralytic… “https://github.com/ultralytics/yoloV5”) 和[4]
- 自适应 Anchors 计算
在 YOLOv3、YOLOv4 中,训练不同的数据集时,计算初始锚框的值是通过独自的程序运行的。但 YOLOv5 中将此性能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。
- CSP 构造
相比于 YOLOv4 中只有骨干网络应用了 CSP 构造,YOLOv5 中设计了两种 CSP 构造,以 YOLOv5- s 网络为例,以 CSP1_X 构造利用于 Backbone 骨干网络,另一种 CSP2_X 构造则利用于 Neck 中。
相干代码如下:
结语
基于 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。
点击关注,第一工夫理解华为云陈腐技术~