人脸识别--Open set和Close set的区别

本文探讨了人脸识别中Open-set和Close-set的概念。Close-set是指测试集中的样本在训练集中都出现过,预测直接给出身份ID;而Open-set则允许测试样本未在训练集中,预测结果为特征向量,通过比较特征向量距离判断是否同一人。这种区分可类比为考试中的已知考点与未知考点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博记录为卤煮理解,如有疏漏,请指正。转载请注明出处。

卤煮:非文艺小燕儿

本博地址:人脸识别--Open set和Close set的区别


训练和测试人脸识别分类器时,总会提到Open-set和Close-set。这俩词到底是什么概念呢?有什么区别呢?


所谓close-set,就是所有的测试集都在训练集中出现过。所以每次的预测直接得出测试图

在使用 Qt 进行人脸识别开发时,可以结合多种技术方案实现目标。Qt 本身提供了图形界面信号槽机制的支持,而人脸识别的算法逻辑处理则需要依赖外部库或 API 接口。 ### Qt 实现人脸识别的方法 1. **基于百度 AI 的人脸识别** 可以通过调用百度 AI 开放平台提供的人脸检测与识别接口完成任务。这种方式不需要本地训练模型,而是通过网络请求将图像数据发送至云端进行分析并获取结果。 - 需要先注册百度云账号,并创建应用获取 `Access Token`。 - 将人脸图像进行 Base64 编码后,通过 HTTP POST 请求提交给百度 AI 接口。 - 解析返回的 JSON 数据,提取出识别结果并在 Qt 界面中展示[^1]。 2. **基于 OpenCV 的本地人脸识别** OpenCV 提供了专门用于人脸识别的模块 `face`,其中包含了三种主流方法: - EigenFaceRecognizer(基于 PCA) - FisherFaceRecognizer(基于 LDA) - LBPHFaceRecognizer(局部二值模式直方图) 在 Qt 中集成 OpenCV 后,可以使用这些算法进行本地训练与识别。例如: ```cpp Ptr<face::LBPHFaceRecognizer> model = face::LBPHFaceRecognizer::create(); model->train(images, labels); model->save("MyFaceLBPHModel.xml"); ``` 上述代码展示了如何创建、训练并保存一个 LBPH 模型,可用于后续的人脸识别任务[^2]。 3. **结合 Qt 第三方库(如 Dlib)** 如果对识别精度速度有更高要求,也可以引入其他高性能人脸识别库,如 Dlib 或 FaceNet,并将其与 Qt 集成。Dlib 支持深度学习模型,适合复杂场景下的人脸识别需求。 4. **工程结构与依赖配置** 在 Qt 工程中实现人脸识别功能,通常还需要链接多个第三方库,包括但不限于: - `OpenCV`:用于图像处理识别算法 - `CURL`:用于网络请求(如对接百度 AI) - `OpenSSL`:用于 HTTPS 加密通信 - `Crypto++`:用于数据加密解密操作 工程 `.pro` 文件应包含类似如下内容以正确链接库文件: ``` LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui \ -lcurl -lssl -lcrypto ``` 5. **核心代码示例** 下面是一个简化的 Qt 网络请求示例,用于上传图像并接收百度 AI 返回的人脸识别结果: ```cpp QNetworkAccessManager *manager = new QNetworkAccessManager(this); // 图像转 Base64 QByteArray imageData; QFile file("face.jpg"); if (file.open(QIODevice::ReadOnly)) { imageData = file.readAll().toBase64(); file.close(); } QJsonObject json; json["image"] = QString::fromLatin1(imageData); json["image_type"] = "BASE64"; json["group_id"] = "user_group"; QJsonDocument doc(json); QByteArray data = doc.toJson(); QNetworkRequest request; request.setUrl(QUrl("https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=your_token")); request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); QNetworkReply *reply = manager->post(request, data); connect(reply, &QNetworkReply::finished, [=]() { if (reply->error() == QNetworkReply::NoError) { qDebug() << reply->readAll(); } else { qDebug() << reply->errorString(); } reply->deleteLater(); }); ``` 此段代码演示了如何将图像编码为 Base64 并通过 HTTP POST 请求上传至百度 AI 接口[^1]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值