疫情推动了AI技术的进步,口罩检测技术更是被很多爱好者和组织玩的百花其放。 开源数据、开源模型非常之多。 如滴滴前不久也公开了他们的人脸口罩模型论文,据说 99.5%准确率。
但我还是忍不住要探究一把,让我的 jetbot 后知后觉地掌握一项技能。开干!
一 橹一把 开源人脸口罩模型FaceMaskDetection:
https://github.com/AIZOOTech/FaceMaskDetection
先看下效果:
板子配好 pytorch 环境后可直接运行:
python3 pytorch_infer.py --img-mode 1 --img-path img/demo2.jpg
这个模型支持很多推理框架, pytorch, mxnet, keras, caffe, tensorflow 。。。
在我的jetson nano 下 , 实时检测速度如下:
注: 每个框架跑的都是 gpu 加速模式
推理框架 | 分辨率 | 速度(fps) |
pytorch | 640x360 | 8 |
mxnet | 640x360 | 4.5 |
keras(基于tf) | 640x360 | 12 |
tensorflow | 640x360 | 20 |
检测视频脚本 (可以验证速度):
进到 FaceMaskDetect 目录,然后分别执行
python3 pytorch_infer.py --img-mode 0 --video-path /workspace/data/360p.mp4
python3 mxnet_infer.py --img-mode 0 --video-path /workspace/data/360p.mp4
python3 keras_infer.py --img-mode 0 --video-path /workspace/data/360p.mp4
python3 tensorflow_infer.py --img-mode 0 --video-path /workspace/data/360p.mp4
如果要验证实时摄像头, 需要换个摄像头采集类, 因为 jetson nano 下 csi 接口对应的是 gstreamer backend , 例子里是 v4l2 backend .
可以用我包装好的类:
https://github.com/walletiger/jetson_nano_py/blob/master/camera.py
二 使用自己训练的模型:
从工程角度看, 一个合适的 流程 可以分成两阶段, 第一阶段 定位和检测人脸 , 第二阶段 从人脸图像 检测口罩特征。
本人比较懒,且中了最近 one stage 多分类算法的风, 非要合成一个阶段, one stage 同时 定位检测 人脸, 戴口罩人脸。
选择了最近比较流行的 yolov5 和 nanodet , 模型训练完没做任何 tuning 效果整起:
jetson nano 口罩佩戴检测
检测速度 yolov5s 640x360@8fps, nanodet 640x360@15fps
后面在来讲 yolov5 , nanodet 模型训练以及部署使用过程。
https://blog.csdn.net/walletiger/article/details/110733182
https://blog.csdn.net/walletiger/article/details/110733604
转 tensorRT :
https://blog.csdn.net/walletiger/article/details/111027113