ModelBox端云协同AI开发套件(RK3568)试用记录(三)
这一部分是:使用yolov3做口罩检测
口罩检测不同于车辆检测,车辆检测内置于SDK中,模型文件、相关配置都作为解决方案提供了,创建好工程就在那里了。而口罩检测需要自行下载模型和配置文件,并放置到对应的工程目录,其实也很方便。
下载地址,提取码 modbox 选择common.zip
(功能单元和配置、任务配置、测试视频 5M) 和rknpu2.zip
(推理功能单元和流程配置 14M)下载即可。
仍然是先用 create.py
创建名为mask_det_yolo3
的工程,然后用-t infer
选项创建一个名为mask_infer
的推理功能单元,会在工程目录的model下生成以下内容
|-- model
| `-- mask_infer
| `-- mask_infer.toml
将rknpu2.zip里面的rknn模型文件和2个配置文件放入(覆盖原mask_infer.toml):
workspace/mask_det_yolo3/model/mask_infer/
|-- mask_infer.toml
|-- yolo3_resnet18_mask_det_288x512.toml
`-- yolo3_resnet18_mask_det_288x512_rknpu2.rknn
mask_infer.toml
里定义了三个模型的输出,应该是对于head头肩部
、face
、mask口罩
的信息。
接下来使用参数-t python
创建2个功能单元,分别是yolo3_post
后处理,和draw_mask_bbox
在原图上画框展示,生成内容如下:
workspace/mask_det_yolo3/etc/
`-- flowunit
|-- cpp
|-- draw_mask_bbox
| |-- draw_mask_bbox.py
| `-- draw_mask_bbox.toml
|-- readme.txt
`-- yolo3_post
|-- yolo3_post.py
`-- yolo3_post.toml
将common.zip里面的功能单元内容复制进去覆盖原文件。
带没带口罩的结果的展示,其逻辑是在画图单元实现:如果face检测框与mask检测框的重合度
大于某个阈值,就判为佩戴口罩;否则,就判为没有佩戴口罩;如果没有检测到face检测框,就会显示Unknown。
接下来就是串流程图
(graph/mask_det_yolo3.toml),和配置任务的输入输出
(bin/mock_task.toml),当然下载里都有已经配置好的文件,拷贝到对应目录。同时把测试视频也拷贝到data目录。
mask_det_yolo3.toml
里定义了:
各个功能单元的处理流转流程
data_source_parser > video_demuxer > video_decoder > image_resize > mask_detection > yolo3_post > draw_mask_bbox > video_out
以及 功能单元之间的输出输入之间的接口对接配置,比较细节就不说了。
配置任务的输入输出在hello_world和车辆检测部分说过,也不说了。
准备工作到此结束,下面就是进入工程目录,进行build_project.sh
然后bin/main.sh
运行应用进行视频文件的戴口罩检测,并输出结果到视频文件。
下载的里面还有一个camera的配置文件,是可以将输入输出都配置为视频流来使用的,这个晚点再试一下。
- 点赞
- 收藏
- 关注作者
评论(0)