dlib 的 CNN 人脸检测器使用哪种架构?

Posted

技术标签:

【中文标题】dlib 的 CNN 人脸检测器使用哪种架构?【英文标题】:Which architecture does dlib's CNN face detector use? 【发布时间】:2019-01-19 16:51:20 【问题描述】:

我用谷歌搜索了很多,但找不到。是对发表在 CNN 人脸检测上的一些论文的实现吗?

dlib的卷积人脸检测器的理论部分有详细的介绍吗?

【问题讨论】:

This face detector is made using the now classic Histogram of Oriented Gradients (HOG) feature combined with a linear classifier, an image pyramid, and sliding window detection scheme. HOG特征和CNN特征不一样吗?我在这个文件dlib.net/face_detector.py.html 中找到了你写的描述,但我特别想知道 CNN dlib.net/cnn_face_detector.py.html。我错过了什么吗? 我的错。 CNN version of MMOD 我想。 dlib.net/cnn_face_detector.py.html, sourceforge.net/p/dclib/discussion/442518/thread/27ec33e7 这很有帮助。非常感谢 【参考方案1】:

它使用自定义架构。您可以在source code查看它

    ...    

    template <template <int,template<typename>class,int,typename> class block, int N, template<typename>class BN, typename SUBNET>
    using residual = add_prev1<block<N,BN,1,tag1<SUBNET>>>;

    template <template <int,template<typename>class,int,typename> class block, int N, template<typename>class BN, typename SUBNET>
    using residual_down = add_prev2<avg_pool<2,2,2,2,skip1<tag2<block<N,BN,2,tag1<SUBNET>>>>>>;

    template <int N, template <typename> class BN, int stride, typename SUBNET> 
    using block  = BN<con<N,3,3,1,1,relu<BN<con<N,3,3,stride,stride,SUBNET>>>>>;

    template <int N, typename SUBNET> using ares      = relu<residual<block,N,affine,SUBNET>>;
    template <int N, typename SUBNET> using ares_down = relu<residual_down<block,N,affine,SUBNET>>;

    template <typename SUBNET> using alevel0 = ares_down<256,SUBNET>;
    template <typename SUBNET> using alevel1 = ares<256,ares<256,ares_down<256,SUBNET>>>;
    template <typename SUBNET> using alevel2 = ares<128,ares<128,ares_down<128,SUBNET>>>;
    template <typename SUBNET> using alevel3 = ares<64,ares<64,ares<64,ares_down<64,SUBNET>>>>;
    template <typename SUBNET> using alevel4 = ares<32,ares<32,ares<32,SUBNET>>>;

    using anet_type = loss_metric<fc_no_bias<128,avg_pool_everything<
                                alevel0<
                                alevel1<
                                alevel2<
                                alevel3<
                                alevel4<
                                max_pool<3,3,2,2,relu<affine<con<32,7,7,2,2,
                                input_rgb_image_sized<150>
                                >>>>>>>>>>>>;
    anet_type net;

    ...

【讨论】:

那是人脸识别。人脸检测器位于同一文件夹 cnn_face_detector.cpp 中。 此网络用于人脸识别。它不同于人脸检测。

以上是关于dlib 的 CNN 人脸检测器使用哪种架构?的主要内容,如果未能解决你的问题,请参考以下文章

使用dlib基于CNN(卷积神经网络)的人脸检测器来检测人脸

CNN+OpenCV+dlib实现图片人脸检测

dlib库包的介绍与使用,opencv+dlib检测人脸框opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类dlib视频目标跟踪

人脸检测和识别(中文标记)完整项目源代码(基于深度学习+python3.6+dlib+PIL+CNN+(tensorflowkeras)10分钟实现 区分欢乐颂中人物详细图文教程和完整项目代码)

FDDB 评估代码

使用dlib人脸检测模型进行人脸活体检测:眨眼检测