Giter Club home page Giter Club logo

seetaface2's Introduction

SeetaFace2

License

中文 English

1. 简介

SeetaFace2 人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块,即:人脸检测模块 FaceDetector、面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块 FaceRecognizer。 已经两个辅助模块 FaceTrackerQualityAssessor 用于人脸跟踪和质量评估。

SeetaFace2 采用标准 C++ 开发,全部模块均不依赖任何第三方库,支持 x86 架构(Windows、Linux)和 ARM 架构(Android)。SeetaFace2 支持的上层应用包括但不限于人脸门禁、无感考勤、人脸比对等。

SeetaFace2 是面向于人脸识别商业落地的里程碑版本,其中人脸检测模块在 FDDB 上的 100 个误检条件下可达到超过 92% 的召回率,面部关键点定位支持 5 点和 81 点定位,1 比 N 模块支持数千人规模底库的人脸识别应用。

模块 方法概述 基础技术指标 典型平台速度
人脸检测 Cascaded CNN FDDB 上召回率达到92%(100个误检情况下)。 40 最小人脸
I7: 70FPS(1920x1080)
RK3399: 25FPS(640x480)
面部关建点定位(81点和5点) FEC-CNN 平均定位误差(根据两眼中心距离归一化)
300-W Challenge Set 上达到 0.069。
I7: 450FPS 和 500FPS
RK3399: 110FPS 和 220FPS
人脸特征提取与比对 ResNet50 识别:通用1:N+1场景下,错误接受率1%时,
1000人底库,首选识别率超过98%,
5000人底库,首选识别率超过95%。
I7: 8FPS
RK3399: 2.5FPS

与 2016 年开源的 SeetaFace 1.0 相比,SeetaFace2 在速度和精度两个层面上均有数量级的提升。

版本 人脸检测 关键点定位 人脸识别 第三方依赖
速度[1] 单精度[2] 速度 功能 训练数据规模 应用
1.0 16FPS 85% 200FPS 5点 140万张 实验室
2.0 77FPS 92% 500FPS 5/81点 3300万张 商业环境
备注 [1] 640x480输入、检测40x40人脸、I7-6700。
[2] 人脸检测的精度指100个误捡FDDB数据集的召回率。

知人识面辩万物,开源赋能共发展。SeetaFace2 致力于 AI 赋能发展,和行业伙伴一起共同推进人脸识别技术的落地。

2. 编译

2.1 编译依赖

  • 编译工具
    • For linux
      • GNU Make 工具
      • GCC 或者 Clang 编译器
    • For windows
      • MSVC 或者 MinGW.
  • 依赖库
    • [可选] OpneCV 仅编译例子时需要
  • 依赖架构
    • CPU 支持 SSE2 和 FMA [可选](x86)或 NENO(ARM)支持

2.2 编译参数

  • BUILD_DETECOTOR: 是否编译人脸检测模块。ON:打开;OFF:关闭
  • BUILD_LANDMARKER: 是否编译面部关键点定位模块。ON:打开;OFF:关闭
  • BUILD_RECOGNIZER: 是否编译人脸特征提取与比对模块。ON:打开;OFF:关闭
  • BUILD_EXAMPLE: 是否编译例子。ON:打开;OFF:关闭,打开需要预先安装 OpneCV
  • CMAKE_INSTALL_PREFIX: 安装前缀
  • SEETA_USE_FMA: 是否启用 FMA 指令。默认关闭。只有目标是x86架构是起作用
  • SEETA_USE_SSE2: 是否启用 SSE2 指令。window 和 unix 默认为 ON,其它默认为 OFF。

2.3 各平台编译

2.3.1 linux 平台编译说明

  • 依赖

    • opencv。仅编译例子时需要

      sudo apt-get install libopencv-dev

  • 编译

    cd SeetaFace2
    mkdir build
    cd build
    cmake .. -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=`pwd`/install -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLE=OFF # 如果有 OpneCV,则设置为 ON
    cmake --build . --config Release 
    
  • 安装

    cmake --build . --config Release --target install/strip
    
  • 运行例子

    • 把生成库的目录加入到变量 LD_LIBRARY_PATH 中

        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/bin
      
    • 拷贝模型文件到程序执行目录的 model 目录下

        cd SeetaFace2
        cd build
        cd bin
        mkdir model
        cp fd_2_00.dat pd_2_00_pts5.dat pd_2_00_pts81.dat .
      
    • 执行 bin 目录下的程序

      • points81

        cd SeetaFace2
        cd build
        cd bin
        ./points81
        
      • search

        cd SeetaFace2
        cd build
        cd bin
        ./search
        

2.3.2 windows 平台编译说明

  • 使用 cmake-gui.exe 工具编译。打开 cmake-gui.exe
  • 命令行编译
    • 把 cmake 命令所在目录加入到环境变量 PATH 中

    • 从开始菜单打开 “VS2015开发人员命令提示”,进入命令行

      • 编译

        cd SeetaFace2
        mkdir build
        cd build
        cmake .. -G"Visual Studio 14 2015" \
              -DCMAKE_INSTALL_PREFIX=install \
              -DCMAKE_BUILD_TYPE=Release \
              -DBUILD_EXAMPLE=OFF # 如果有 OpneCV,则设置为 ON
        #-G: 设置产生器。注意产生器要与你的MSVC工具配套 
        cmake --build . --config Release 
        
      • 安装

        cmake --build . --config Release --target install
        
      • 运行例子

        • 拷贝模型文件到程序执行目录的 model 目录下

            cd SeetaFace2
            cd build
            cd bin
            mkdir model
            cp fd_2_00.dat pd_2_00_pts5.dat pd_2_00_pts81.dat .
          
        • 执行 bin 目录下的程序

          • points81
          • search

2.3.3 Android平台编译说明

  • 安装 ndk 编译工具

  • 编译

    • 主机是 linux

      • 编译

          cd SeetaFace2
          mkdir build
          cd build
          cmake .. -DCMAKE_INSTALL_PREFIX=install \
                -DCMAKE_BUILD_TYPE=MinSizeRel \
                -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
                -DANDROID_ABI="armeabi-v7a with NEON" \
                -DANDROID_PLATFORM=android-24 \
                -DBUILD_EXAMPLE=OFF # 如果有OpenCV,则设置为ON
          cmake --build . --config MinSizeRel
        
      • 安装

          cmake --build . --config MinSizeRel --target install/strip
        
    • 主机是 windows

      • windows控制台

        • 编译

          cd SeetaFace2
          mkdir build
          cd build
          cmake .. -DCMAKE_INSTALL_PREFIX=%cd%\install ^
                -G"Unix Makefiles" ^
                -DCMAKE_BUILD_TYPE=MinSizeRel ^
                -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%/build/cmake/android.toolchain.cmake ^
                -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK%/prebuilt/windows-x86_64/bin/make.exe ^
                -DANDROID_ABI=arm64-v8a ^
                -DANDROID_ARM_NEON=ON ^
                 -DANDROID_PLATFORM=android-24 ^
                -DBUILD_EXAMPLE=OFF : 如果有 OpenCV,则设置为ON
          cmake --build . --config MinSizeRel
          
        • 安装

          cmake --build . --config MinSizeRel --target install/strip
          
      • msys2 或 cygwin

          cd SeetaFace2
          mkdir build
          cd build
          cmake .. -DCMAKE_INSTALL_PREFIX=install \
                -G"Unix Makefiles" \
                -DCMAKE_BUILD_TYPE=MinSizeRel \
                -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
                -DCMAKE_MAKE_PROGRAM=${ANDROID_NDK}/prebuilt/windows-x86_64/bin/make.exe \
                -DANDROID_ABI=arm64-v8a \
                -DANDROID_ARM_NEON=ON \
                -DANDROID_PLATFORM=android-24 \
                -DBUILD_EXAMPLE=OFF # 如果有 OpenCV,则设置为ON
          cmake --build . --config MinSizeRel
        
        • 安装

          cmake --build . --config MinSizeRel --target install/strip

    • 参数说明:https://developer.android.google.cn/ndk/guides/cmake

      • ANDROID_ABI: 可取下列值: 目标 ABI。如果未指定目标 ABI,则 CMake 默认使用 armeabi-v7a。
        有效的目标名称为:
        • armeabi:带软件浮点运算并基于 ARMv5TE 的 CPU。
        • armeabi-v7a:带硬件 FPU 指令 (VFPv3_D16) 并基于 ARMv7 的设备。
        • armeabi-v7a with NEON:与 armeabi-v7a 相同,但启用 NEON 浮点指令。这相当于设置 -DANDROID_ABI=armeabi-v7a 和 -DANDROID_ARM_NEON=ON。
        • arm64-v8a:ARMv8 AArch64 指令集。
        • x86:IA-32 指令集。
        • x86_64 - 用于 x86-64 架构的指令集。
      • ANDROID_NDK 主机上安装的 NDK 根目录的绝对路径
      • ANDROID_PLATFORM: 如需平台名称和对应 Android 系统映像的完整列表,请参阅 Android NDK 原生 API
      • ANDROID_ARM_MODE
      • ANDROID_ARM_NEON
      • ANDROID_STL: 指定 CMake 应使用的 STL。默认情况下,CMake 使用 c++_static。
        • c++_shared: 使用 libc++ 动态库
        • c++_static: 使用 libc++ 静态库
        • none: 没有 C++ 库支持
        • system: 用系统的 STL

2.3.4 IOS 平台编译说明

以实体机为例

  • 环境准备

    • 需要 MacOS 的 PC。
    • git 下载源代码。
  • 命令行编译

    • 使用 cmake 编译并安装项目,

      cd SeetaFace2
      mkdir build
      cd build
      chmod +x ../ios/cmake.sh
      ../ios/cmake.sh -DCMAKE_INSTALL_PREFIX=`pwd`/install
      make -j4
      make install
      

      执行完毕后,生成好的静态库将安装到SeetaFace2/build/install

    • 编译模拟器版本 修改 cmake 指令参数 ../ios/cmake.sh -DIOS_PLATFORM=SIMULATOR64 -DPLATFORM=x64

    • 查看 <root>/ios/cmake.sh<root>/ios/iOS.cmake 获取更多编译选项

3. 目录结构

|-- SeetaFace2<br>
    |-- documents(SDK 接口说明文档)  
    |-- example(C++ 版本 SDK 示例代码)  
    |-- FaceDetector(人脸检测模块)  
    |-- FaceLandmarker(特征点定位模块)  
    |-- FaceRecognizer(人脸特征提取和比对模块)  
    |-- SeetaNet(前向计算框架模块)  

4. 模型下载

5. 示例

5.1 本项目自带示例

example/search/example.cpp 示例展示了一套简单且完整的人脸识别的流程,包括:

  1. 预注册图像中的人脸到人脸识别底库中(example 中默认注册了"1.jpg"中的人脸);
  2. 打开摄像头,检测摄像头画面中的人脸;3.对检测到人脸进行识别,确定所属人脸的身份。

测试者如果想在底库中成功识别出自己的人脸,需要在example.cpp的底库注册列表部分添加以自己名称命名的图片(名称 + .jpg), 并把自己名称命名的图片文件拷贝到程序的运行目录下,重新编译 example 并运行程序,测试识别效果即可。

5.2 已使用本项目的其它项目

6. 开发者社区

欢迎开发者加入 SeetaFace 开发者社区,请先加 SeetaFace 小助手微信,经过审核后邀请入群。

QR

6.1 代码贡献

欢迎开发者贡献优质代码,所有开发者代码需提交在develop分支。

7. 商业合作

想要购买 SeetaFace 商业版引擎以获得精度更高、速度更快的人脸识别算法或活体验证、表情识别、心率估计、姿态估计、视线追踪等更多人脸分析模块支持,请联系商务邮件 [email protected]

8. 开源协议

SeetaFace2 依照 BSD 2-Clause license 开源.

seetaface2's People

Contributors

aiseetakaizhouli avatar illuspas avatar kanglin avatar kaspter avatar qaz734913414 avatar seetafaceengine avatar wylie39 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seetaface2's Issues

Exception thrown when calling FL.mark() function.

I would like to thank the authors for their times and efforts devoted to this open source project. I was in trouble when I attempted to extract features from two images and calculate their similarity. Here is my code :

error2

It ran normally on the first part to extract the features of "1.jpg", but threw a exception when ran to the statement "auto points2 = FL.mark(simage2, face2.pos);". Here is the exception message:

err

I cannot figure it out what's wrong with my code.

widerface

Thanks for making source code open。
Is it evaluated on widerface?Since widerface is harder。
Thanks

The test settings of FDDB

Could you please give more details of FDDB test setting? E.g., single scale or multi scale? what is the value of min face and three thresholds? Thank you.

Unknown arguments specified

when I make SeetaNet, I got this error:
CMake Error at CMakeLists.txt:23 (if):
if given arguments:
"STREQUAL" "x86"
Unknown arguments specified

Thanks

example的底库注册列表是指哪个文件

请问README中说识别自己的人脸,需要修改example的底库注册列表,这是指哪一个文件,或是如何打开修改?
我使用的是windows10,vs2019

测试者如果想在底库中成功识别出自己的人脸,需要在example.cpp的底库注册列表部分添加以自己名称命名的图片(名称 + .jpg),

input crop size

请问seeta face输入resnet网络的图片尺寸统一缩放到多少大小?

FD face score?

when run example.cpp

for( SeetaFaceInfo &face : faces )
{
cout<< face.pos.x << " " << face.pos.y << " " << face.pos.width << " " << face.pos.height << " " << face.score << "\n";
}

"face.score" is the confidence of detection?

but when test fddb:the score look like strange
2002/08/11/big/img_591
1
186 71 170 204 460.925
2002/08/26/big/img_265
2
288 60 105 126 43.0423
53 32 103 123 2.36952
@seetafaceengine

arm 运行 特征提取慢

检测图片并提取特征花费需要4s多
1.开发环境:cpu:ARMv7 Processor rev 5 (v7l) 8核 内存:1g
2.测试程序增加-mfpu=neon编译跟没有加,提取特征时间基本一样
3.seetaface库跟程序都采用release版本
你好,请问如何优化呢

重复存入图片导致的问题

将自己的图片存进注册列表时的具体步骤是什么呢,是不是我重复操作导致了这个问题,请问怎么清除注册列表的图片重新存入呢?
image

ARM平台编译报错

使用的gcc为:arm-poky-linux-gnueabi-gcc 4.9.1 报错如下:
/SeetaFace2-master/SeetaNet/src/orz/sync/../tools/ctxmgr_lite_support.h: In static member function 'static void* seeta::orz::__thread_local_lite_context::swap(seeta::orz::__thread_local_lite_context::context)':
/SeetaFace2-master/SeetaNet/src/orz/sync/../tools/ctxmgr_lite_support.h:25:28: internal compiler error: in var_defined_without_dynamic_init, at cp/decl2.c:3005
auto pre_ctx = m_ctx;
^
Please submit a full bug report,
with preprocessed source if appropriate.

ubuntu 18.04 ndk-buld compile failed

ndk version: android-ndk-r10d
error info :
In file included from /data/project/SeetaFace2/buildarmv7/SeetaFace2/SeetaNet/jni/../src/orz/mem/vat.cpp:8:0:
/data/project/SeetaFace2/buildarmv7/SeetaFace2/SeetaNet/jni/../src/orz/mem/../tools/ctxmgr_lite_support.h: In static member function 'static void* seeta::orz::__thread_local_lite_context::swap(seeta::orz::thread_local_lite_context::context)':
/data/project/SeetaFace2/buildarmv7/SeetaFace2/SeetaNet/jni/../src/orz/mem/../tools/ctxmgr_lite_support.h:25:28: internal compiler error: in var_defined_without_dynamic_init, at cp/decl2.c:2811
auto pre_ctx = m_ctx;
^
Please submit a full bug report,
with preprocessed source if appropriate.
See http://source.android.com/source/report-bugs.html for instructions.
make: *** [/data/project/SeetaFace2/buildarmv7/SeetaFace2/SeetaNet/obj/local/armeabi-v7a/objs/seetanet2/
/src/orz/mem/vat.o] Error 1

build fail

cmake --build .失败,报了2个错误:
“D:\SeetaFace2-master2\build\ALL_BUILD.vcxproj"(默认目标)(1) ->
“D:\SeetaFace2-master2\build\Facedetector\SeetaFaceDetector.vcxproj"(默认目标)(3) ->
“D:\SeetaFace2-master2\build\SeetaNet\SeetaNet.vcxproj"(默认目标)(4) ->
(C1Compile 目标)->
D:\SeetaFace2-master2\SeetaNet\src\include_inner\SeetaNetSimd.h(775): error C2719: "value" : 要求对齐 [D:\Seet
aFace2-master2\build\SeetaNet\SeetaNet.vcxproj]
D:\SeetaFace2-master2\SeetaNet\src\include_inner\SeetaNetSimd.h(847): error C2719: "value" : 要求对齐 [D:\Seet
aFace2-master2\build\SeetaNet\SeetaNet.vcxproj]

这个是什么错呢?

灰度图像无法识别

复现步骤:安卓平台,照相机采集数据输入,图片大小 640x360,NV21格式转成RGB24格式,可以识别出人脸;
// byteArray 是 NV21格式图片数据
jbyte* imgData = env->GetByteArrayElements(byteArray, 0);

SeetaImageData imageData;
imageData.width = width;
imageData.height = height;
imageData.channels = 3;
imageData.data = (unsigned char*)NV21ToBGR888(width, height, (const uint8_t*)imgData);

SeetaFaceInfoArray infoArray = faceDetector->detect(imageData);

if (infoArray.size == 0) {
    LOGI("No face found");
    env->ReleaseByteArrayElements(byteArray, imgData, 0);
    free(imageData.data);
    return (jboolean)false;
}

LOGI("A face found”);

输出为:A face found

但如果直接使用灰度图输入,无法识别出人脸。
// byteArray 是 NV21格式图片数据
jbyte* imgData = env->GetByteArrayElements(byteArray, 0);

SeetaImageData imageData;
imageData.width = width;
imageData.height = height;
imageData.channels = 1;
// NV21 头部为灰度图数据
imageData.data = (unsigned char*)imgData;

SeetaFaceInfoArray infoArray = faceDetector->detect(imageData);

if (infoArray.size == 0) {
    LOGI("No face found");
    env->ReleaseByteArrayElements(byteArray, imgData, 0);
    return (jboolean)false;
}

LOGI("A face found”);

输出为 No face found

人脸关键点问题

请问下300W是68个人脸关键点,在计算定位误差时,你的81和5时怎么对应的?
五点坐标是直接合成眼睛和嘴巴关键点吗?81点坐标比68点多了哪些点,81点中的68点是不是和300w的一一对应的?

FaceDetectorPrivate api bug

'core_size' is invalid when init a FaceDetectorPrivate using function below

FaceDetectorPrivate::FaceDetectorPrivate( const char *model_path, const CoreSize &core_size )
    : FaceDetectorPrivate( model_path, CoreSize( -1, -1 ), SEETA_DEVICE_AUTO, 0 )
{
}

人脸识别率很低

用人脸库实际数据测了一下,大部分人都认错了,人脸库才800多不到1000,还有女的认错另一个男的,差距太大,同样的图片百度完全没问题

树莓派编译找不到immintrin.h

image
平台是选择的arm,但是编译的时候出现了找不到immintrin.h这个错误,想问一下大神们应该怎么去解决这个问题。

运行example报错

x86_64,Ubuntu16.04,运行example报错:非法指令(核心已转储)

Invalid setting of "seeta::ModelSetting::GPU"

In SeetaFace2/example/search/example.cpp, line 16, I find the setting:
seeta::ModelSetting::Device device = seeta::ModelSetting::CPU;
but when I change "CPU" to "GPU", nothing happened.
I have correctly install CUDA & CuDNN and used other DL frame like PyTorch.

ndk-build with error: static_assert failed

C:/Users/yoda/AppData/Local/Android/Sdk/ndk-bundle/build//../sources/cxx-stl/llvm-libc++/include\math.h:999:5: error: static_assert failed due to requirement '!(std::is_same<float, __result_type>::value &&
std::is_same<float, __result_type>::value)' ""
static_assert((!(std::is_same<_A1, __result_type>::value &&
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/sources/SeetaFace2/SeetaNet/sources/jni/../src/include_inner/layers\SeetaNetPowerCPU.h:127:28: note: in instantiation of function template specialization 'pow<float, float>' requested here
val = std::pow( val, m_power );
^
D:/sources/SeetaFace2/SeetaNet/sources/jni/../src/include_inner/layers\SeetaNetPowerCPU.h:10:5: note: in instantiation of member function 'SeetaNetPowerCPU::Process' requested here
SeetaNetPowerCPU();
^
D:/sources/SeetaFace2/SeetaNet/sources/jni/../src/include_inner/SeetaNetCreateLayerDetailCPU.h:193:24: note: in instantiation of member function 'SeetaNetPowerCPU::SeetaNetPowerCPU' requested here
output_layer = new SeetaNetPowerCPU();
^
D:/sources/SeetaFace2/SeetaNet/sources/jni/../src/include_inner\SeetaNetCreateLayerMapCPU.h:50:101: note: in instantiation of function template specialization 'CreatePowerFunctionCPU' requested here
FunctionMap.insert( std::pair<int32_t, CREATE_NET_PARSEFUNCTION >( seeta::Enum_PowerLayer, CreatePowerFunctionCPU ) );
^
D:/sources/SeetaFace2/SeetaNet/sources/jni/../src/include_inner\SeetaNetCreateLayerMapCPU.h:71:205: note: in instantiation of member function 'CreateLayerMapCPU::CreateFunctionMap' requested here
...std::map<int32_t, int( * )( SeetaNetBaseLayer
&, SeetaNet_LayerParameter &, SeetaNetResource* )> CreateLayerMapCPU::m_parse_function_map = CreateLayerMapCPU::CreateFunctionMa...

CMAKE + VS 2015 编译注意事项(严格按照这些步骤做,基本上100%成功)

首先,我要说一句,这个项目的build 脚本 写的比较烂,可以说压根就没有在 Windows X64 平台测试过, 用Nmake 在windows平台编译肯定是失败的。

开源项目在开源前一定要做好跨平台的测试工作,否则发布出来了也是一堆乱七八糟的编译错误,让使用者对你这个项目的第一印象非常差 !!!

要想使用VS 2015 成功编译此代码, 你需要按照以下步骤做:

  1. 安装一个MS VS2015 native build tools, 当然安装完整版本的VS 2015更好;
  2. 安装 CMake (至少是3以上版本,我用的3.1.4)
  3. 首先编译SeetaNet,然后编译FaceDector, FaceLandMarker, FaceRecognizer.
    编译的步骤都是一样的,先执行CMake 生成VC的工程文件,然后执行msbuild 生成dll和lib

3.1 cmake .. -G"Visual Studio 14 2015 win64"
这里的Visual Studio 14 代表 VS 2015, Visual Studio 15代表VS 2017, 以此类推。
win64是必须输入的,代表platform,不输入的话缺省值是win32, 在64位操作系统 执行build时
会出错。

3.2
msbuild ALL_BUILD.vcxproj /p:configuration=Release --生成release版本的dll
msbuild ALL_BUILD.vcxproj /p:configuration=Debug --生成debug版本的dll

  1. 如果你在源码编译过程中还遇到了其它错误, 只能具体问题具体分析, 一般来说
    做到以下两步 基本就没问题了
    4.1 修改所有的vcxproj, sln文件,将Win32改成x64, -- 如果你的操作系统是64位的
    4.2 将所有的machine:X86 改成 machine:x64 -- 如果你的操作系统是64位的

LFW 准确率问题

我在LFW上测试了一下seetaface2的精度,6000对数据的EER只有99.5左右,与当前的最佳水平有些差距,不知道放出来的模型是更加适用于**人还是怎样?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.