seetaface / seetafaceengine Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
I test all the examples in each part,but i still don't know what’s in the file “seeta_fa_v1.0.bin”and “seeta_fd_frontal_v1.0.bin”,could you explain it for me?
Thank you!
您好!
我有疑问,
1.类FaceIdentification的函数feature_size()返回的值一定要是2048吗?这个值是否可以根据需要进行修改?
2.裁剪图像的调用的函数crop_height(),crop_width(),crop_channels()返回的值分别是256,256,3。这三个值有什么特殊含义吗?crop_height()一定要是256吗?crop_width()一定要是256吗?是否可以根据需要进行修改?
I can‘t find the paper “Funnel-Structured Cascade for Multi-View Face Detection with Alignment-Awareness” by google or baidu ,could you give me the link? Thank you !
在已经标注好的训练和测试数据集上,算法得出的人脸特征点的误差是可以计算的。在其他的未标注的图片上,如何判断特征点的质量呢?就好比人脸识别和比对的时候的置信度。
我把FaceAlignment和FaceDetection都编译成DLL,但是测试例子中加载不了:
---- 已启动生成: 项目: Tester_FaceAlignment, 配置: Release Win32 ------
1> 正在创建库 F:\Work\人脸识别\SeetaFaceEngine-master\SeetaFaceEngine-master\FaceAlignment\examples\Release\Tester_FaceAlignment.lib 和对象 F:\Work\人脸识别\SeetaFaceEngine-master\SeetaFaceEngine-master\FaceAlignment\examples\Release\Tester_FaceAlignment.exp
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: void __thiscall seeta::FaceDetection::SetScoreThresh(float)" (?SetScoreThresh@FaceDetection@seeta@@QAEXM@Z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: void __thiscall seeta::FaceDetection::SetWindowStep(int,int)" (?SetWindowStep@FaceDetection@seeta@@QAEXHH@Z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: void __thiscall seeta::FaceDetection::SetImagePyramidScaleFactor(float)" (?SetImagePyramidScaleFactor@FaceDetection@seeta@@QAEXM@Z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: void __thiscall seeta::FaceDetection::SetMinFaceSize(int)" (?SetMinFaceSize@FaceDetection@seeta@@qaexh@Z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: class std::vector<struct seeta::FaceInfo,class std::allocator > __thiscall seeta::FaceDetection::Detect(struct seeta::ImageData const &)" (?Detect@FaceDetection@seeta@@QAE?AV?$vector@UFaceInfo@seeta@@v?$allocator@UFaceInfo@seeta@@@std@@@std@@ABUImageData@2@@z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: __thiscall seeta::FaceDetection::~FaceDetection(void)" (??1FaceDetection@seeta@@QAE@XZ)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: __thiscall seeta::FaceDetection::FaceDetection(char const *)" (??0FaceDetection@seeta@@QAE@PBD@Z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: bool __thiscall seeta::FaceAlignment::PointDetectLandmarks(struct seeta::ImageData,struct seeta::FaceInfo,struct seeta::FacialLandmark *)" (?PointDetectLandmarks@FaceAlignment@seeta@@QAE_NUImageData@2@UFaceInfo@2@PAUFacialLandmark@2@@z)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: __thiscall seeta::FaceAlignment::~FaceAlignment(void)" (??1FaceAlignment@seeta@@QAE@XZ)
1>face_alignment_test.obj : error LNK2001: 无法解析的外部符号 "public: __thiscall seeta::FaceAlignment::FaceAlignment(char const *)" (??0FaceAlignment@seeta@@QAE@PBD@Z)
1>F:\Work\人脸识别\SeetaFaceEngine-master\SeetaFaceEngine-master\FaceAlignment\examples\Release\Tester_FaceAlignment.exe : fatal error LNK1120: 10 个无法解析的外部命令
跟踪代码是CommonNet::Load 的时候 --》NetRegistry::CreateNet(net_type);
static std::shared_ptr CreateNet(const std::string type) {
CreatorRegistry& registry = Registry();
if (registry.count(type) != 1) {
LOG(ERROR) << "Net type " << type << " haven't registered.";
}
return registrytype;
}
感觉这里没地方插入map为何直接调用。不会出错吗?难道是GCC版本不对吗?
谢谢,大家指教。
你好,FaceDetection和FaceAlignment中common.h文件不一致,在运行FaceAlignment的测试脚本时,发现如果先include FaceDetection的头文件,则优先引入这个common文件,导致FaceAlignment中的common文件无法正确导入,检测不到FacialLandmark结构体的定义。
I generate all the necessary DLL files with debug mode and run FaceIdentification test file, the problem I met was that my program kept waiting even if I had inserted break points in main function or the beginning of the test cpp.
40*40以上人脸大小为检测,为什么我在FDDB上测出来的召回率只有80,不过误检是67,请问84.4@100的结果是基于什么样的参数设置得出来的。。。
Readme中有段描述:“The codes are written in C++ without dependence on any 3rd-party libraries. ”
我想问下OpenCV不是第三方库?
我按照提到的方法把源码都拷下来了,运行时出现一堆错误,不知道该怎么改,有没有一些搭建的详细教程啊?
请问,seetaface中判断两张人脸为同一人的相似度阈值设置为多大比较合适?
目前项目提供的是已经训练好的人脸库,这个跑测试,没问题。
但是如果我用到自己的项目中,应该如何完成用户的人脸训练和比较了?
没有添加test_face_verification.cpp 的时候,可以编译运行成功。但是加了这个测试案例后编译失败,这是什么原因,是不是需要修改相应CMakeLists.txt里面的设置,需要如何修改?
您好,在使用工程的时候,发现根据ScoreThresh筛选确信图片时候的代码有些问题,关键代码如下:
`for (int32_t i = 0; i < impl_->pos_wnds_.size(); i++) {
if (impl_->pos_wnds_[i].score < impl_->cls_thresh_) {
impl_->pos_wnds_.resize(i);
break;
}
}`
Debug发现impl->pos_wnds_并没有根据score进行排序,所以筛选图片的时候有些确信度很高的排在后面的就被提前pass掉了。
如题。人多力量大,群策群力,搜集更多的图片,训练的素材往往来自民间,尤其是监控现场的图片,对于提高类似背景下的准确度还是很有价值的。毕竟,监控现场图片跟实验室还是有差别的。
Can you share the training code and data?
seeta::FaceAlignment point_detector("seeta_fa_v1.0.bin");
couldn't load the facial landmark detection model.
error this line: `fread(mean_shape_, sizeof(float), pts_num_ * 2, fp);` in cfan.cpp你好,我在测试这个example的程序vs程序时发现在 while (ifs >> img_name) {这个位置时img_name都还没有赋值,但是在接下来的一句函数 img_num ++ ;时就能获取到了NF_200001_001.jpg名字, 此处我始终没有明白,不知能否帮助解答下, 谢谢!
void TEST(FaceRecognizerTest, CropFace) {
FaceIdentification face_recognizer((MODEL_DIR + "seeta_fr_v1.0.bin").c_str());
std::string test_dir = DATA_DIR + "test_face_recognizer/";
/* data initialize */
std::ifstream ifs;
std::string img_name;
FacialLandmark pt5[5];
ifs.open(test_dir + "test_file_list.txt", std::ifstream::in);
clock_t start, count = 0;
int img_num = 0;
while (ifs >> img_name) {
img_num ++ ;
// read image
cv::Mat src_img = cv::imread(test_dir + img_name, 1);
EXPECT_NE(src_img.data, nullptr) << "Load image error!";
获取五个点后,如何得到roll yaw和pitch角度呢?
我在测试过程中发现这个example的代码编译不过, 需要添加一下头文件才能编译通过, 希望官方能不全。
使用ExtractFeatureWithCrop()计算出来的features 的值,大多数时候都是零点几,但偶尔会出现 x e33 这种数据,我想问下正常数据都是0~1之内吗?
您好!我想问一下这个代码该怎么使用,是在vs3013上运行的吗?为什么我编译出来好多错误,希望能有好心的大神讲一下,谢谢!(新手望提点)
请问FaceIdentification中测试部分代码中读取的feats.dat数据是用来做什么的?
您好,感谢分享!
看代码好像没有ReLU层,且调试代码读取模型是Conv后接的是Elewise的BIAS_ADDER,然后就是BN,接着是Max Pooling。请问你们训练是没用ReLU层吗?
谢谢! @seetaface
@seetaface 请问为什么我建立编译FaceAlignment dll 和FaceDetection dll时,一直报错,请问什么原因?在每个提示错误处加上#include“”stdafx.h“错误反倒更多了。错误如下:”error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
There're some problems when i run ’facedetection_test.cpp‘ after building shared lib.
It shows that 'Debug Assertion Failed‘& ‘Expression: vector subscript out of range’.
anyone meet the same problem ?
与相关代码吗?
你好,
在特征点检测部分,我有希望把它从5个特征点改成68个特征点吗?( 新手学习~~~ 请不要嫌弃我的问题 ( ̄▽ ̄)" 感谢!)
如何加快类FaceIdentification中的提取特征函数 ExtractFeature()的运行速度?目前在intel i5-4460的电脑上的,提取一张脸的特征的速度是140ms左右,有参数可以调整使其速度加快吗?谢谢!
如题。想试试人脸验证的效果。类似这样的:
identify 1.jpg 2.jpg
然后输出一个百分比。。。
谢谢
建议增加Build和Install、Usage的说明,方便新手用起来。
1.前两个模块已生成相应的.dll文件,第三个模块在建立工程时还是选择生成.dll?
2.那么多的代码文件该加载哪些(还是只加载include和scr中的代码文件)?
3.该模块该怎么添加前两个模块生成的.dll文件?
4.测试中的代码该怎么用?
新手,望谅解.
test_face_recognizer.cpp没看懂,dst_image好像一直没有读取,而只有src_image。
个人理解,是不是应该有这样的函数:
compare(cv::mat srcimage, cv::mat dstimage), 然后得出一个相似度0-1也可以,或者直接返回百分比?
在现有的demo的情况下,改如何做呢,谢谢。
math_func.h Cmake编译的时候总是提示 _mm_add_epi32 找不到
Thank you for releasing codes.
For the performance, it achieves a mean accuracy of 97.1% on LFW under the standard Image-Restricted protocol, is this accuracy open-set or close set for identification?
For the training data, it seems that it is much larger than your paper[1]. How much improvement for the difference training data?
这个算法的关键点是不是无法处理正面人脸,我试了一下,如果人脸稍微有一点侧面,关键点定位就不准确了。
已成功编译seetaface_alignment,
在运行fa_test.exe时抛异常“未加载msvcr120.i386.pdb”,
网上找的一些方法比如加载mocrosoft所有符号也试过了,不行,
求大牛解惑
用的VS2013,直接把detection和alignment的代码弄到vs里编译
出现如下错误
1>------ 已启动全部重新生成: 项目: SeetaDetectionAndAlignment, 配置: Release x64 ------
1> cfan.cpp
1>..\..\FaceAlignment\src\cfan.cpp(109): error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\stdio.h(211) : 参见“fopen”的声明
1>..\..\FaceAlignment\src\cfan.cpp(166): warning C4305: “初始化”: 从“double”到“float”截断
1>..\..\FaceAlignment\src\cfan.cpp(167): warning C4305: “初始化”: 从“double”到“float”截断
1>..\..\FaceAlignment\src\cfan.cpp(170): error C2039: “max”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(170): error C3861: “max”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(171): error C2039: “min”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(171): error C3861: “min”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(172): error C2039: “max”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(172): error C3861: “max”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(173): error C2039: “min”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(173): error C3861: “min”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(214): warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>..\..\FaceAlignment\src\cfan.cpp(247): warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>..\..\FaceAlignment\src\cfan.cpp(290): warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>..\..\FaceAlignment\src\cfan.cpp(323): warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>..\..\FaceAlignment\src\cfan.cpp(394): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
1>..\..\FaceAlignment\src\cfan.cpp(395): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
1>..\..\FaceAlignment\src\cfan.cpp(396): error C2039: “max”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(396): error C3861: “max”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(397): error C2039: “min”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(397): error C3861: “min”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(398): error C2039: “max”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(398): error C3861: “max”: 找不到标识符
1>..\..\FaceAlignment\src\cfan.cpp(399): error C2039: “min”: 不是“std”的成员
1>..\..\FaceAlignment\src\cfan.cpp(399): error C3861: “min”: 找不到标识符
1> face_alignment.cpp
1>..\..\FaceAlignment\src\face_alignment.cpp(46): warning C4273: “seeta::FaceAlignment::FaceAlignment”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceAlignment\include\face_alignment.h(49) : 参见“{ctor}”的前一个定义
1>..\..\FaceAlignment\src\face_alignment.cpp(59): warning C4273: “seeta::FaceAlignment::PointDetectLandmarks”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceAlignment\include\face_alignment.h(61) : 参见“PointDetectLandmarks”的前一个定义
1>..\..\FaceAlignment\src\face_alignment.cpp(79): warning C4273: “seeta::FaceAlignment::~FaceAlignment”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceAlignment\include\face_alignment.h(54) : 参见“{dtor}”的前一个定义
1> sift.cpp
1> lab_boosted_classifier.cpp
1> mlp.cpp
1> surf_mlp.cpp
1> face_detection.cpp
1>..\..\FaceDetection\src\face_detection.cpp(73): warning C4273: “seeta::FaceDetection::FaceDetection”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(44) : 参见“{ctor}”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(77): warning C4273: “seeta::FaceDetection::~FaceDetection”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(45) : 参见“{dtor}”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(83): warning C4273: “seeta::FaceDetection::Detect”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(54) : 参见“Detect”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(111): warning C4273: “seeta::FaceDetection::SetMinFaceSize”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(62) : 参见“SetMinFaceSize”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(118): warning C4273: “seeta::FaceDetection::SetMaxFaceSize”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(70) : 参见“SetMaxFaceSize”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(123): warning C4273: “seeta::FaceDetection::SetImagePyramidScaleFactor”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(79) : 参见“SetImagePyramidScaleFactor”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(128): warning C4273: “seeta::FaceDetection::SetWindowStep”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(87) : 参见“SetWindowStep”的前一个定义
1>..\..\FaceDetection\src\face_detection.cpp(135): warning C4273: “seeta::FaceDetection::SetScoreThresh”: dll 链接不一致
1> E:\Code\SeetaFaceEngine-master\FaceDetection\include\face_detection.h(96) : 参见“SetScoreThresh”的前一个定义
1> lab_feature_map.cpp
1> surf_feature_map.cpp
1> fust.cpp
1> lab_boost_model_reader.cpp
1> surf_mlp_model_reader.cpp
1> facedetection_test.cpp
1>..\..\FaceDetection\src\test\facedetection_test.cpp(74): warning C4244: “初始化”: 从“int64”转换到“long”,可能丢失数据
1>..\..\FaceDetection\src\test\facedetection_test.cpp(76): warning C4244: “初始化”: 从“int64”转换到“long”,可能丢失数据
1> image_pyramid.cpp
1> nms.cpp
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========
如果用于判断人脸相似度的两张照片来源于不通的相机,并且拍摄角度不同是否会极大的影响判断的准确性?
我用两个相机,一个平视一个俯视(大概20°的俯视角度)拍同一个人,得到的人脸相似度不可靠。有没有什么办法提升准确率呢?
目前的程序是可以实现两个特征的相似度对比。现在要将程序转换成人脸识别程序,如何保存多张人脸的特征和人脸标签,以便于后续的人脸识别?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.