改进Face/Detect

人脸关键点检测 face keypoint detect 一个人脸关键点算法。 阅读详情

##改进Face/Detect

现在Face/Detect和Face/Verify将支持将用户提交的结果持久化。我们先考虑下Face/Detect现在的变化,原先我们的流程是:从微信客户端获得mediaID,通过这个mediaID从微信服务器下载图片,然后将这个图片提交给牛津,以获得FaceID

Created with Raphaël 2.2.0开始 get mediaid from weixinclient download img from weixin server post img to projectoxford get faceid return faceid结束

现在我们需要考虑的更周到了:当从微信客户端得到mediaID,我们需要查看下本地文件夹中是否有匹配的文件,在提交给牛津之前我们也需要从Mango数据库中查询是否有匹配的上次的提交结果

Created with Raphaël 2.2.0开始 get mediaid from weixinclientmongodb file collection exists mediaid return imgidmongodb face collection exists filename return faceid结束 post img to projectoxford get faceid create doc(faceid) insert doc to mongodb download img from weixin server create doc(mediaid,filenmae) insert doc to mongodbyesnoyesno

我们先改进微信服务的代码,使得只有Mongo没有存储mediaID和对应的文件再从微信的服务器去下载图片

public async Task<string> Get(string mediaid)
{
    var mongo = new MongoDBHelper("weixinImgFile");

    //查询mongo中是否存储了mediaid对应的照片文件
    var doc = await mongo.SelectOneAsync(x => x["mediaid"] == mediaid);
    if (doc != null)
    {
        return doc["filename"].ToString();
    }

    //http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
    var queryString = HttpUtility.ParseQueryString(string.Empty);
    queryString["access_token"] = await Get();
    queryString["media_id"] = mediaid;

    var uri = "http://file.api.weixin.qq.com/cgi-bin/media/get?" + queryString;

    HttpResponseMessage response;
    response = await client.GetAsync(uri);

    var msg = await response.Content.ReadAsStreamAsync();
    var fileName = response.Content.Headers.ContentDisposition.FileName.Replace("\"", "");

    var helper = new ProjecToxfordClientHelper();

    var content = await FileHelper.ReadAsync(msg);

    FileHelper.SaveFile(content, fileName);

    await mongo.InsertAsync(Newtonsoft.Json.JsonConvert.SerializeObject(
        new {
            Mediaid = mediaid,
            FileName = fileName
        }
        ));

    return fileName;
}

然后我们来改进FaceController的DetectAPI,使得先在Mongo中查询对应照片的分析结果,当没有之前查询的结果,再去牛津进行分析。

[HttpGet]
[Route("face/detect/{weixnmediaid}")]
public async Task<HttpResponseMessage> Detect(string weixnmediaid)
{
    var key = "detect";

    //得到从微信服务器下载的文件名
    var fileName = await new WeixinController().Get(weixnmediaid);

    var mongo = new MongoDBHelper<DetectResultModels>("facedetect");

    //照片之前有没有下载过
    var docArr = await mongo.SelectMoreAsync(x => x.FileName == fileName);
    if (docArr.Count > 0)
    {
        var resultJson = docArr.Select(
            doc => new
            {
                faceId = doc.faceId,
                filename = doc.FileName,
                age = doc.Age,
                gender = doc.Gender,
                smile = doc.Smile
            }
            ).ToJson();

        return client.CreateHttpResponseMessage(
            Request,
            new Models.ProjecToxfordResponseModels(resultJson, HttpStatusCode.OK));
    }
    //如果Mongo中没有该照片对应的Face信息
    var content = await FileHelper.ReadAsync(fileName);

    if (content != null)
    {
        var result = await client.PostAsync(key,
            content,
            new Dictionary<string, string> {
            {"returnFaceId","true"},
            {"returnFaceLandmarks","flase"},
            {"returnFaceAttributes","age,gender,smile"}
            }
            );

        if (result.StatusCode == HttpStatusCode.OK)
        {
            var tmpJArr = Newtonsoft.Json.Linq.JArray.Parse(result.Message);
            //将牛津结果写入数据库
            foreach (var tmp in tmpJArr)
            {
                await mongo.InsertAsync(new DetectResultModels()
                {
                    FileName = fileName,
                    faceId = (string)tmp["faceId"],
                    Age = (double)tmp["faceAttributes"]["age"],
                    Gender = (string)tmp["faceAttributes"]["gender"],
                    Smile = tmp["faceAttributes"]["smile"] != null ? (double)tmp["faceAttributes"]["smile"] : 0
                });
            }
            var resultJson = tmpJArr.Select(x => new
              {
                  faceId = x["faceId"],
                  age = (double)x["faceAttributes"]["age"],
                  gender = (string)x["faceAttributes"]["gender"],
                  smile = x["faceAttributes"]["smile"] != null ? (double)x["faceAttributes"]["smile"] : 0
              }).ToJson();

            return client.CreateHttpResponseMessage(
                Request,
                new Models.ProjecToxfordResponseModels(resultJson, HttpStatusCode.OK));
        }
    }
    throw new HttpResponseException(HttpStatusCode.BadRequest);
}

关于Opencv实现人脸识过程中的一些问题探究和改进 本文基于上篇人脸识别文章:https://blog.youkuaiyun.com/beyond9305/article/details/93724948进行了一些探究和改进,希望能对大家有一点点帮助,还是欢迎点赞和收藏哈,来自小博主的无奈~~哈哈 大家可以打开上篇文章,对照最后贴出的全部代码来看会更加直观…… 1.在detect_face函数中,第15行代码返回的faces究竟是个什么东西? 我们注释简... 阅读详情

相关推荐

人脸检测FaceDetect

此系统是在vs2013下基于Opencv3.0和MFC设计的,可以实现对摄像头采集到的人脸、视频文件和图像文件中的人脸进行检测。视频文件格式可以为avi、mp4、wmv、rmvb等,图像文件格式可以为bmp、png、jpg、jpeg等。

【最快人脸检测模型开源】libfacedetection开源

libfacedetection:最快人脸检测库开源

TomRen 5529

VC++ 人脸识别FaceDetect 源码

VC++ 人脸识别FaceDetect 源码

人脸检测 FaceDetection Python openCV

人脸检测 openCV python

m0_37744762的博客 3618

Face detect

人脸检测:可以检测人脸区域及定位脸部特征。

face-detect-MTcnn-faceNet:通过 Mtcnn 实现人脸的检测并且能够标注出来,然后利用facenet 通过计算实时检测的人脸数据与实现存储的数据进行对比计算,计算相似度,从而实现人脸的鉴别

face-detect-MTcnn-faceNet 工作平台: windos tensorflow pycharm opencv 总体功能: Mtcnn 实现人脸检测 faceNet : 实现相似度计算 第一步:实现人脸检测功能(MTcnn) 最开始的时候使用的是opencv自带的人脸级联分类器进行人脸检测,但是 后来查一下资料说MTcnn能够实现的效果更好 ,所以尝试着用一下。 对于MTcnn 框架 是存在 PNet RNet ONet 三个网络架构级联成的,由于电脑渣渣 所以直接下载别人训练好的库 存在mode/文件夹下 (1)detect_face.py 文件实现了MTcnn人脸检测的相关函数 (2)face_detector_MTcnn.py 是对detect_face.py进行测试:实现了视频流下人脸的检测和定位功能 第二步:利用faceNet 实现两

opencv中facedetect例子浅析

人脸检测一种主流的方法就是类haar+adaboosting,opencv中也是用的这种方法。这种方法可以推广到刚性物体的检测,前提是要训练好级联分类器(比如说用类haar特征),一旦训练数据弄好了,直接调用opencv中的类CascadeClassifier,用它的几个简单的成员函数就可以完成检测功能。所以说用起来还是很简单的。下面就是用的opencv中自带的samples中的facedetec

lixiaoguang20的博客 3262

人脸识别(Face Detect)

别人的程序,以前的程序在移植到vc.net不可以运行,现在已经修正!在vc 2005 2008都可以运行

人脸关键点检测总结

概述 人脸关键点检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸图像,定位出人脸面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴...

CZW199418的博客 8166

open-web UI 实用指南

open-web UI 类似于chatgpt的界面,可以私有化模型本地部署,也可以用商业模型.本文只是用开源模型. 它以实现多模态AI聊天 , AI 翻译 , 语音转文本, 文本转语音, 文生图,代码助手,可谓利器。

szmars的博客 3万+

FPGA之VGA转HDMI之编码模块的编写

VGA 图像信息到 HDMI 图像信息的转化需要对输入的 VGA 图像信息进行编码、并行串行转换、单端信号转差分信号、单沿采样转双沿采样。 其中,编码模块就是为了完成 VGA 图像数据 8b 转 10b 的编码。其结构框图如下所示: 图1 编码模块框图 图2 编码模块输入输出信号功能框图 图3 编码模块参考流程图 图4 编码模块参考流程图参数说明 下面我们依据HDMI官方手册中的流程图(图3)进行 HDMI 8b...

qq_51264805的博客 3023

【Caffe实践】基于Caffe的人脸检测实现

转载自: 【Caffe实践】基于Caffe的人脸检测实现 - 1983的专栏 - 博客频道 - youkuaiyun.com http://blog.youkuaiyun.com/chenriwei2/article/details/50321085 0. 引言 深度学习可以说是在人脸分析相关领域遍地开花,近年来在人脸识别,深度学习在人脸检测,人脸关键点检测中有很广泛的应用,这篇文章中,初步实

Leo的博客 7371

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1161

基于DamoFD的SpringBoot人脸检测API开发指南

本文介绍了如何在星图GPU平台自动化部署DamoFD人脸检测关键点模型-0.5G镜像,并基于SpringBoot开发人脸检测API。该方案能快速为应用集成人脸识别功能,典型应用于相册管理、内容审核等场景,提升开发效率。

weixin_34535286的博客 320

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规审计的考试指南,包含选择题、判断题、简答题和案例分析题。选择题考察《个人信息保护法》的关键条款,如敏感信息处理、跨境传输、委托处理等合规要求。判断题测试对个人信息处理规则的理解,如撤回同意、公开信息处理等。简答题要求阐述审计流程、个人权利、委托处理义务等内容。案例分析题以互联网企业为例,分析违规行为并提出整改建议,涉及数据收集、第三方共享、自动化决策等问题。全文旨在帮助中级审计人员掌握个人信息保护的法律规定和审计实务,提升合规审计能力。

qq_41525079的博客 547

企业微信消息推送(一)接收消息服务器URL

企业微信限制过多,公司域名所有权检验不通过。采用接收消息服务器URL的方式。使用vscode,将UTF-8 BOM文本编码改为UTF-8。配置接收消息服务器URL。

Xiaoweidumpb 1万+

探索WeApp-Face-Detect:基于小程序的面部识别技术

探索WeApp-Face-Detect:基于小程序的面部识别技术 项目简介 是一个开源项目,专为微信小程序开发者设计,实现了在小程序中进行实时面部检测和特征点定位的功能。该项目利用了先进的深度学习算法,使得即使在移动设备上也能高效、准确地运行。 技术分析 算法基础 WeApp-Face-Detect 使用的是轻量级的深度学习模型 —— MTCNN(Multi-task Cascaded Convo...

gitblog_00024的博客 586

AutoSAR系列讲解 - 总目录

博主想在开始前先讲一下我们的具体安排,这里就以目录加说明的形式展示出来,同时这也可以作为大家学习AutoSAR的参考。由于实践篇需要在很久以后才会更新,所以这里我们先罗列一下理论篇的内容,实践篇等开始更新的时候我再补充上

雪云飞星的博客 49万+

YOLOV11|YOLO12改进系列指南

YOLOV11V12改进系列指南,仅仅69.9包含YOLOV11V12模型改进方案、含有440+种改进的集合,且含有多种二次创新和原创改进!

qq_37706472的博客 15万+

【安全设备篇】HVV面试专题

还有就是这个可能是被访问的这个内网系统,本身业务系统存在业务逻辑问题,因为内网所布置的很多业务系统往往不会考虑一些安全性问题,比如在正常的业务逻辑请求中直接带了sql语句,就会触发设备规则产生告警,这一类是属于误报,然后会将此告警上报给研判人员,需要研判组专家和甲方客户确认下是否是该系统存在此业务逻辑问题,并且需要确认告警的源ip在此告警的时间段附近有没有进行操作过。天眼日志分析主要基于系统和应用程序的日志数据来识别安全威胁,而威胁感知则通过收集和分析多种来源的情报信息。理解威胁的性质和威胁背后的原理。

大河之犬的博客 7923

PowerDesigner 数据库建模使用详解

PowerDesigner 数据库建模使用详解

congge 7082

YOLOv8-Face源码解析:从网络结构到损失函数的深度探索

YOLOv8-Face作为基于YOLOv8架构的面部检测与关键点识别解决方案,在计算机视觉领域展现出了卓越的性能。本文将深入解析YOLOv8-Face的核心源码,带你全面了解这个强大的人脸检测模型的内部工作原理。无论你是计算机视觉新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解。 ## YOLOv8-Face项目概述与架构设计 YOLOv8-Face项目基于Ultralytics YO

gitblog_00315的博客 411

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

YOLOv8-Face核心原理:为什么它是2024年最先进的人脸检测模型?

YOLOv8-Face是基于YOLOv8架构优化的人脸检测模型,专为高精度人脸检测和关键点定位设计。作为2024年最先进的人脸检测技术之一,它融合了高效的特征提取网络与创新的检测头设计,能够在复杂场景下快速准确地识别面部区域及5个关键 landmarks(眼睛、鼻子、嘴巴),为安防监控、人脸识别、表情分析等应用提供强大支持。 ## 一、革命性架构:兼顾速度与精度的深度优化 YOLOv8-Fac

gitblog_00344的博客 793

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

3分钟掌握高效静默活体检测:Silent-Face-Anti-Spoofing完整实战指南

在当今数字化身份验证场景中,静默活体检测技术已成为保障人脸识别系统安全性的关键屏障。Silent-Face-Anti-Spoofing作为一款高效的开源解决方案,能够在用户无感知的情况下精准识别照片攻击、屏幕翻拍等伪造手段,为金融支付、门禁考勤、移动应用等场景提供可靠的安全保障。本指南将带您从零开始,全面掌握这一先进反欺诈技术的部署与应用技巧。 ## 📊 核心价值:为何选择静默活体检测? 传

gitblog_00806的博客 876

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MediaPipe Face Mesh:从表情捕捉到虚拟现实的开发者实战指南

想象一下,你正在开发一款虚拟试妆应用,用户通过手机摄像头就能实时看到自己涂上不同口红的模样,嘴唇的颜色和光泽随着表情自然变化。或者你正在构建一个远程医疗平台,需要准确捕捉患者的面部微表情来辅助诊断。这些看似复杂的应用场景,其实只需要一个强大的工具就能实现——这就是MediaPipe Face Mesh。 ## 当面部成为数据流:重新理解实时面部分析 传统的人脸识别技术往往停留在"找到脸"的层面

gitblog_01114的博客 577

YOLOv8-Face未来 roadmap:即将推出的5大新功能预览

YOLOv8-Face作为基于YOLOv8架构的专业人脸检测与关键点识别项目,正通过持续迭代优化为开发者提供更精准、高效的面部分析能力。本文将独家揭秘项目团队规划中的五大突破性功能,帮助开发者提前了解技术演进方向,为未来应用场景做好准备。 ## 1. 实时3D面部关键点检测:突破平面限制的空间感知能力 未来版本将引入**实时3D面部关键点检测**技术,通过融合深度估计网络,在现有2D 68点检

gitblog_01029的博客 302
上一篇: 微软想做apple和google的的混合体
下一篇: 微软认知服务在教育应用
王豫翔
博客等级 码龄17年 730粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值