ModelBox 开发体验:使用 YOLOv3 做口罩检测
本文分享自华为云社区《ModelBox开发体验Day05开发案例-使用YOLOv3做口罩检测》,作者: 孙小北。
本案例将使用 YOLO v3 模型,实现一个简单的口罩检测应用
代码:https://github.com/sunxiaobei/modelbox_gallery
代码标签:v1.5 mask_det_yolo3,v1.5.1 mask_det_yolo3_camera
开发准备
开发环境安装和部署,前面环境已完成
模型训练,ModelArts 训练模型
模型转换,代码模型已完成转换
应用开发
打开 VS Code,连接到 ModelBox sdk 所在目录或者远程开发板,开始进行口罩检测应用开发。
(1)创建工程
使用 create.py 创建 mask_det_yolo3 工程, 将会创建出一个空的 ModelBox 样例工程。
(2)创建推理功能单元
AI 应用的核心是模型推理部分,我们用如下命令创建推理功能单元,该模块将会创建在工程目录的 model 文件夹下:
将资源包中 model/mask_infer 文件夹中的模型和配置文件拷贝到口罩检测工程的 model/mask_infer 目录下。其中 yolo3_resnet18_mask_det_288x512-rknpu2.rknn 是转换好的 rknn 模型,mask_infer.toml 是该模型的 ModelBox 功能单元配置文件,其内容如下:
可以看到该模型有 3 个输出节点,即 YOLO v3 模型输出的 3 个 feature map,需要从中解码出检测框。
(3)创建后处理功能单元
后处理功能单元负责从模型推理结果中解码出检测框,我们用如下命令创建该功能单元,其将会创建在工程目录的 etc/flowunit 文件夹下:
将 common 资源包中 etc/flowunit/yolo3_post 文件夹中的代码和配置文件拷贝到口罩检测工程的同名目录下,解码过程的核心逻辑在 yolo3_utils.py 文件中,可以查阅 YOLO v3 模型细节阅读代码。
(4)创建画图功能单元
得到检测框后可以画在原图上进行输出展示,我们用如下命令创建画图功能单元:
将 common 资源包中 etc/flowunit/draw_mask_bbox 文件夹中的代码和配置文件拷贝到口罩检测工程的同名目录下,画图的核心逻辑在 draw_mask_bbox.py 文件的 draw_mask_info 函数中:
针对每个人,该模型会尝试检测出 head(头肩部)、face 和 mask 三个检测框。如果 face 检测框与 mask 检测框的重合度大于某个阈值,就判为佩戴口罩;否则,就判为没有佩戴口罩;如果没有检测到 face 检测框,就会显示 Unknown,表示未知。
(5)修改流程图
模型推理和配套的功能单元准备好后,我们就可以串联出流程图进行测试了,口罩检测工程默认在 graph 目录下生成了 mask_det_yolo3.toml,我们参考资源包中的 graph/mask_det_yolo3.toml 将其修改为:
该流程图对于某个视频流,经过视频解码、图像缩放、口罩检测推理、检测框后处理、画图等一系列操作后,将结果保存下来。
然后,参考 common 资源包中 mock_task.toml,将口罩检测工程的任务配置文件 bin/mock_task.toml 中输入输出部分修改为:
将 common 资源包中的 data/mask_test.mp4 测试视频拷贝到口罩检测工程的 data 目录下,该流程图使用这一视频进行口罩检测,检测结果绘制后保存为 hilens_data_dir/mask_test_result.mp4 文件。
(6)运行应用
在 mask_det_yolo3 工程路径下执行 build_project.sh 进行工程构建:
执行 bin/main.sh 运行应用(如果运行报错请切换到 root 账号再运行,本应用需要事先使用 pip 安装好 OpenCV 和 NumPy),运行结束后在 hilens_data_dir 目录下生成了 mask_test_result.mp4 文件,可以下载到 PC 端查看。
(7)实时摄像头
运行测试
小结
本次案例实践口罩识别,通过本次案例的实践对于开发板的使用有了进一步了解,同时也体会到了这个开发板的便捷开发模式,非常值得推荐,希望后续可以体验更多案例,真正落地实践。
参考文献:
https://developer.huaweicloud.com/develop/aigallery/article/detail?id=0163b46b-34fa-468d-b243-2ef067170d4a
https://modelbox-ai.com/modelbox-book/
https://developer.huaweicloud.com/develop/aigallery/article/detail?id=adc021cb-1c12-49a1-8a0b-f56ce6fb3b25
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/a7b85ecc5f265cbc1ba50c31f】。文章转载请联系作者。
评论