您尚未登录。

楼主 # 2024-09-19 00:40:16

xichuangxue
会员
注册时间: 2018-06-04
已发帖子: 23
积分: 204

hi3516ev300摄像头-官方SDK不得劲,各种人脸检测跑起来(Tengine\NCNN\Dlib)

hi3516ev300摄像头的前面几个帖子如下:

hi3516ev300摄像头-刷OpenIPC固件
   https://whycan.com/t_11292.html

motion Detect 实现
    https://whycan.com/t_11291.html
人形检测
    https://whycan.com/t_11275.html



话接上文,官方SDK中的人形检测只能判断是否有人,没办法用红框标记出来,实在很不得劲。于是一顿搜索,果然找到几个可以在嵌入式上跑的开源项目,
于是在128M内存,256M Flash小身板上,都跑了一下最简单的人脸检测,记录如下:

原图size 474*316
selfie_960.jpg



Tengine 之 ultraface
参考 https://github.com/OAID/Tengine

使用 Tengine 的 ultraface例程进行处理,用时275.6ms,速度最佳,准确率略输retinaface

/tengine # ./tm_ultraface  -i images/selfie_960.jpg -m models/rfb-320.tmfile
tengine-lite library version: 1.5-dev
Repeat 1 times, thread 1, avg time 275.66 ms, max_time 275.66 ms, min_time 275.66 ms
--------------------------------------
detected face num: 4
BOX 0.97:(389.72, 58.97),(458.94, 142.53)
BOX 0.91:(38.55, 87.36),(82.94, 147.53)
BOX 0.91:(289.84, 100.03),(325.86, 149.08)
BOX 0.94:(168.73, 81.97),(206.14, 133.12)
======================================
[DETECTED IMAGE SAVED]:
======================================
ultraface_out.jpg



Tengine 之 retinaface
参考相同git ,使用不同例子,用时686.3ms,速度第二,用时间换来了准确率。可以看到还标出5个关键点。

~/tengine # ./tm_retinaface -i images/mtcnn_face4.jpg
tengine-lite library version: 1.5-dev
img_h, img_w : 316, 474
Repeat 1 times, thread 1, avg time 686.30 ms, max_time 686.30 ms, min_time 686.30 ms
--------------------------------------
detected face num: 4
BOX 1.00:( 38.4053 , 86.142 ),( 46.3009 , 64.0174 )
BOX 0.99:( 384.076 , 56.9844 ),( 76.968 , 83.9609 )
BOX 0.99:( 169.196 , 87.1324 ),( 38.4133 , 46.8504 )
BOX 0.98:( 290.004 , 104.453 ),( 37.6345 , 46.7777 )

retinaface_out.jpg





腾讯开源的ncnn
参考 https://github.com/Tencent/ncnn.git
用时0.99s,速度第三

/tengine/images # time ./retinaface selfie_960.jpg
dlopen failed File not found
dlopen failed File not found
dlopen failed File not found
dlopen failed File not found
dlopen failed File not found
dlopen failed File not found
load vulkan driver failed
0.99604 at 38.39 86.17 46.31 x 64.00
0.98804 at 384.06 57.02 76.96 x 83.92
0.98677 at 169.21 87.12 38.40 x 46.85
0.98447 at 290.00 104.45 37.62 x 46.79
imshow save image to image.png
waitKey stub
real    0m 0.99s
user    0m 0.90s
sys     0m 0.09s

image.png



dlib 之frontal_face_detector
参考https://github.com/david8862/dlib_on_arm
这个交叉编译又复杂,依赖又多,差点放弃,居然耗时最多,准确率也最低,漏检测一个人脸,运行结果图就不上了
/tengine/dlib # time ./sl_face_detect ../images/selfie_960.jpg
processing image ../images/selfie_960.jpg
Number of faces detected: 3
faces detected: [(352, 179) (438, 265)]
faces detected: [(102, 188) (188, 275)]
faces detected: [(563, 208) (649, 294)]
real    0m 34.48s
user    0m 34.43s
sys     0m 0.00s


总结
      身板小归小,人脸识别也能跑。
      3516本身的硬件计算Hog没能用起来, 实在有些可惜 ,否则检测时间还会有很大提升。坛子里的大佬如有建议,还请不吝指导一下,感激不尽。


后续打算
    原本以为在474*316 大小用时 276ms, 预期在1920*1080图片上用时会和数据量成倍数关系的,结果直接刷新我的认知。
    用ultraface跑一直不含人脸的1920*1080的图,用时280ms左右。  假如处理1920*1080图片的fps=3的话,感官上,延迟还可以接受,大概算是实时的吧。

     所以最终是打算用官方SDK中的SMD例程,检测到人形后, 取一张图片来跑前面的ultra face,如果检测到人脸就标记后存下来。




顺便打个小广告,有需要的坛友,可以咸鱼购买小身板开发板

【闲鱼】 https://m.tb.cn/h.grWdc1o?tk=2XJ637NQSq4  MF6563 「我在闲鱼发布了【HI3516EV300开发板,cortex A7@ 900M。】」
点击链接直接打开

最近编辑记录 xichuangxue (2024-09-19 00:56:15)

离线

#1 2024-09-19 16:03:59

wupaul2001
会员
注册时间: 2019-09-30
已发帖子: 293
积分: 261

Re: hi3516ev300摄像头-官方SDK不得劲,各种人脸检测跑起来(Tengine\NCNN\Dlib)

比我用全志A133慢

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn