DBFace 是一个轻量级的实时人脸识别方法,其有着更快的识别速度与更高的精度。下图展示了多种人脸检测方法在 WiderFace 数据集上的测试效果。

这个仅 7M 巨细的人脸辨认模型简直辨认出了国际最大自拍照中的一切人像!

模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型)  人脸识别 人工智能 华为 第1张

项目简介

之前机器之心报导过一个跨渠道人脸辨认项目,在 CPU 上就能轻松跑出 1000FPS。这次介绍的项目也是一个轻量级人脸辨认项目。不同的是,该项目在坚持较小参数量的前提下,辨认精度要高许多,而且只需要 OpenCV 和 PyTorch 就能运转。

DBFace 是一个轻量级的实时人脸辨认办法,其有着更快的辨认速度与更高的精度。下图展现了多种人脸检测办法在 WiderFace 数据集上的测验作用。能够看到不只 DBFace 模型的巨细最小,其在 Easy、medium、Hard 三个测验使命中均获得了最高的辨认精度。

模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型)  人脸识别 人工智能 华为 第2张

项目地址:https://github.com/dlunion/DBFace

WiderFace 是一个关于人脸检测的基准跑分数据集,其间包括 32,203 张图片以及在各方面剧烈的 393,703 张人脸,数据集具有从简略到困难等不同难度的使命。下图是改数据会集一些样本的展现,能够看到,要想精确地辨认出图中一切人脸仍是很有应战的。DBFace 在该数据集的不同使命上别离获得 0.925、0.920、0.847 的精确率,实属不易。

模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型)  人脸识别 人工智能 华为 第3张

有关 WiderFace 的具体介绍请读者移步其官网:

http://shuoyang1213.me/WIDERFACE/

作用展现

下图展现了不同人脸辨认办法在 WiderFace 数据集上的 P-R 曲线。P-R 曲线能够较直观地展现二分类器的 Precision 和 Recall。当需要对不同算法进行比较时,若某个二分类器的 P-R 曲线被另一个二分类器的 P-R 曲线彻底包住,即标明后者的功能优于前者。从图中能够看到,DBFace 围住的面积在三个使命中均相对较大。

模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型)  人脸识别 人工智能 华为 第4张

当阈值设置为 0.2 时,DBFace 对这张国际最大的自拍照辨认作用如下图所示:

 模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型) 人脸识别 人工智能 华为 第5张

能够看到,DBFace 的辨认精确率十分高,图中许多人脸乃至扩大后单凭肉眼也很难分辩,DBFace 却依然能够辨认出来,而且模型巨细仅 7M,彻底能够在边际设备上实时运转。所以,机器之心也上手测验了一番。

项目实测

项目作者供给的代码示例中包括对静态图片的辨认,一起也有一个调用电脑摄像头的 GUI。值得注意的是,该项目并不需要太多依靠项,只需有 PyTorch、Numpy 和 OpenCV 即可运转。因为以上依靠环境都是十分常用的扩展库,网上有很多相应装置教程,这儿就略过其装置过程。

在 main.py 中,image_demo() 与 camera_demo() 别离对应静态图片辨认与调用摄像头进行辨认。静态图片辨认代码为:

  1. defimage_demo():
  2. dbface=DBFace()
  3. dbface.eval()
  4. ifHAS_CUDA:
  5. dbface.cuda()
  6. dbface.load("model/dbface.pth")
  7. detect_image(dbface,"datas/selfie.jpg")

以上代码将会读取练习后的模型,对图片 datas/selfie.jpg 进行辨认,并将成果保存到 detect_result/selfie.draw.jpg。

让我们来看一下辨认作用:

模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型)  人脸识别 人工智能 华为 第6张

从上图能够看到,即便在室内灯火色彩、明暗不同较大的环境下,DBFace 也辨认出了图中简直一切的人,乃至是中心那个一边画彩虹,一边指向闪烁灯球戴头盔的人也难逃其「魔掌」。当然,因为这儿设置的检测阈值较低,存在一些误分类的现象。图中一些人的手和右上角的灯球就被误辨认为了人脸。恰当调高阈值即可消除此现象。

调用电脑摄像头检测的代码为:

  1. defcamera_demo():
  2. dbface=DBFace()
  3. dbface.eval()
  4. ifHAS_CUDA:
  5. dbface.cuda()
  6. dbface.load("model/dbface.pth")
  7. cap=cv2.VideoCapture(0)
  8. cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
  9. cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
  10. ok,frame=cap.read()
  11. whileok:
  12. objs=detect(dbface,frame)
  13. forobjinobjs:
  14. common.drawbbox(frame,obj)
  15. cv2.imshow("demoDBFace",frame)
  16. key=cv2.waitKey(1)&0xFF
  17. ifkey==ord('q'):
  18. break
  19. ok,frame=cap.read()

运转以上代码将会生成一个 640x480 的 GUI 界面,调用摄像头实时进行人脸检测。

感兴趣的小伙伴赶快将本项目 git clone 到本地测验一下吧!

转载请说明出处
知优网 » 模型仅有7M:轻量级高精度人脸识别方法DBFace(轻量级人脸检测模型)

发表评论

您需要后才能发表评论