zoukankan      html  css  js  c++  java
  • dlib cnn_face_detector 人脸检测内部实现简单记录

    最近稍微研究了一下dlib人脸检测算法,在这里简单记录一下。

    使用方法见  http://dlib.net/cnn_face_detector.py.html 

    •   前处理

    dlib给的官方链接里面是这么使用的,参数列表里面的第二项数值1,表示放大2倍再塞给网络,不想放大的话,直接设为0就可以了

    dets = cnn_face_detector(img, 1)

    • 模型

    dib的mmod的人脸检测模型是这样的。列的很清楚了,是通过卷积网络实现的。

     1 // ----------------------------------------------------------------------------------------
     2 
     3 template <long num_filters, typename SUBNET> using con5d = con<num_filters,5,5,2,2,SUBNET>;
     4 template <long num_filters, typename SUBNET> using con5  = con<num_filters,5,5,1,1,SUBNET>;
     5 
     6 template <typename SUBNET> using downsampler  = relu<affine<con5d<32, relu<affine<con5d<32, relu<affine<con5d<16,SUBNET>>>>>>>>>;
     7 template <typename SUBNET> using rcon5  = relu<affine<con5<45,SUBNET>>>;
     8 
     9 using net_type = loss_mmod<con<1,9,9,1,1,rcon5<rcon5<rcon5<downsampler<input_rgb_image_pyramid<pyramid_down<6>>>>>>>>;
    10 
    11 // ----------------------------------------------------------------------------------------

    几个点需要注意,

    1.一上来就有一个pyramid_down 6就是把原图按照5/6的scaling ratio去缩小,形成图像金字塔,直到最小的图像的高度小于5

    下图是一个Input为375x500的图,可以看到,一共有23层的图像金字塔,最小的一层是5x6. 这也就是dlib非常慢的原因。

     2.其中的affine其实是caffe里面的scale,类似于BN,每个值放大a倍再加一个b。

    • 后处理

    在dlib内部会做nms,还会丢弃confidence threshould过低的结果,所以算出来的PR曲线后半截会没有掉

     
  • 相关阅读:
    网络字节序与主机字节序
    Maven2插件开发详解
    NetBeans 时事通讯(刊号 # 30 Oct 15, 2008)
    NetBeans 时事通讯(刊号 # 30 Oct 15, 2008)
    Grsync:rsync 的图形化界面
    Windows Socket网络编程学习笔记一
    如何调试MFC中的内存泄漏
    内存池(MemPool)技术详解
    These codes are How to use Lucence.net
    VC控制台程序的文字颜色
  • 原文地址:https://www.cnblogs.com/sunny-li/p/15227320.html
Copyright © 2011-2022 走看看