【人脸检测】MTCNN移植到 Android安卓

断断续续搞了一周。终于改好了,MTCNN移植到Android。

主要参考Facenet中的MTCNN python实现。

大致流程:

一、Tensorflow 模型固化

       将PNet、ONet、RNet 网络参数.npy固化成.pb格式,方便java载入

      固化后的文件在assets中,文件名mtcnn_freezed_model.pb。

二、引入android tensorflow lite 库

      只需在build.gradle(module)最后添加以下几行语句即可。参考自官网。

allprojects {
    repositories {
        jcenter()
    }
}

dependencies {
    compile 'org.tensorflow:tensorflow-android:+'
}

三、看MTCNN论文+看MTCNN python实现,然后改成java

      流程:PNet -> 对于每一种scale NMS(Union,0.5) ->所有scales NMS(Union,0.7)->BBR

              ->RNet -> NMS(Union,0.7)->BBR

              ->ONet -> BBR->NMS(Min,0.7)  

     PNet/RNet:先NMS后BBR,ONet:先BBR后NMS

     有很多坑,比如论文很多细节没讲清,比如android版tensorflow lite 资料太少;Bitmap需要沿着对角线翻转再传入神经网络。然后就差不多了。

最终代码:https://github.com/vcvycy/MTCNN4Android

效果图:

【人脸检测】MTCNN移植到 Android安卓_第1张图片

【人脸检测】MTCNN移植到 Android安卓_第2张图片

你可能感兴趣的:(【人脸检测】MTCNN移植到 Android安卓)