前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github 项目 - FaceBoxes高精度实时人脸检测器

Github 项目 - FaceBoxes高精度实时人脸检测器

作者头像
AIHGF
发布2019-03-11 14:25:37
1.6K0
发布2019-03-11 14:25:37
举报
文章被收录于专栏:AIUAI

原文:Github 项目 - FaceBoxes高精度实时人脸检测器 - AIUAI

<Github - zeusees/FaceBoxes> 主页: 智云视图 <Github - AIHGF/FaceBoxes>

FaceBoxes 完整复现.

image
image

论文: FaceBoxes: A CPU Real-time Face Detector with High Accuracy - 2018 论文源码:<Github - sfzhang15/FaceBoxes>

1. FaceBoxes 测试

Caffemodel - FaceBoxes_1024x1024.caffemodel (3.6M) Prototxt - faceboxes_deploy.prototxt Caffe - caffe-ssd

代码语言:javascript
复制
# -*- coding: utf-8 -*
import numpy as np
import matplotlib.pyplot as plt
import sys,os  
import cv2
caffe_root = '/path/to/caffe-ssd/'
sys.path.insert(0, caffe_root + 'python')  
import caffe  
import time


net_file= 'faceboxes_deploy.prototxt'  
caffe_model='FaceBoxes_1024x1024.caffemodel'  

caffe.set_mode_cpu() # cpu
# caffe.set_mode_gpu() # gpu
net = caffe.Net(net_file,caffe_model,caffe.TEST)  

CLASSES = ('background', 'face')

transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2, 0, 1))
transformer.set_mean('data', np.array([104, 117, 123]))  # mean pixel


def preprocess(src):
    img = cv2.resize(src, (1024,1024))
    img = img - 127.5
    img = img * 0.007843
    return img


def postprocess(img, out):   
    h = img.shape[0]
    w = img.shape[1]
    box = out['detection_out'][0,0,:,3:7] * np.array([w, h, w, h])

    cls = out['detection_out'][0,0,:,1]
    conf = out['detection_out'][0,0,:,2]
    return (box.astype(np.int32), conf, cls)


def detect(imgfile):
    origimg = cv2.imread(imgfile)

    transformed_image = transformer.preprocess('data', origimg)
    net.blobs['data'].data[...] = transformed_image

    time_start = time.time()
    out = net.forward()
    print("[INFO]timecost: ", time.time() - time_start)

    box, conf, cls = postprocess(origimg, out)

    for i in range(len(box)):
        p1 = (box[i][0], box[i][1])
        p2 = (box[i][2], box[i][3])
        cv2.rectangle(origimg, p1, p2, (0, 255, 0))
        p3 = (max(p1[0], 15), max(p1[1], 15))
        title = "%s:%.2f" % (CLASSES[int(cls[i])], conf[i])
        cv2.putText(origimg, title, p3, cv2.FONT_ITALIC, 0.6, (0, 255, 0), 1)
    plt.imshow(origimg[:,:,::-1])
    plt.axis("off")
    plt.show()

    return True

if __name__ == '__main__':
    test_dir = "/path/to/images"

    for img_name in os.listdir(test_dir):
        img_file = os.path.join(test_dir, img_name)
        result = detect(img_file)

    print("[INFO]Done.")

如(会出现漏检):

代码语言:javascript
复制
('[INFO]cpu timecost: ', 0.1766371726989746)
('[INFO]cpu timecost: ', 0.13269805908203125)

('[INFO]gpu timecost: ', 0.024658203125)
('[INFO]gpu timecost: ', 0.01454019546508789)
image
image
image
image
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年02月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. FaceBoxes 测试
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档