纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。

前言

开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCVdlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。

本插件为了解决上述挑战而设计开发的。首先,它完全基于纯Go语言实现,这意味着用户无需担心跨平台移植性问题,可以轻松地将项目部署到任何支持Go语言的环境中。其次,本插件内置了多种先进算法,能够在保证高精度的同时达到快速响应的效果,非常适合应用于实时性要求较高的场景中。再者,考虑到易用性,本插件提供了详尽的API文档以及GoFly后台在线体验的示例代码(如下图1和图2),即使是初学者也能快速掌握其使用方法。最后,本插件拥有活跃的社区支持,不断有新功能被加入进来,确保了其长期的生命力和发展潜力。总之,无论你是希望提高工作效率的专业开发者还是对新技术充满好奇的学生,本插件都将是您探索人脸识别世界的理想选择,可以作为学术研究和项目开发使用。

wai_20241128174050.png

图1-GoFly后台在线体验人脸检测-外国人(黑人和白人) image.gif 编辑

微信截图_20241128173017.png

图2-国人面部检测 image.gif 编辑

插件主要特性

  • 不需要安装OpenCV或任何第三方模块
  • 处理速度快
  • 无需图像预处理就可以检测
  • 无需计算积分图像,图像金字塔,HOG金字塔或任何其他类似的数据结构
  • 人脸检测基于二进制文件树结构中编码的像素强度比较
  • 快速检测平面内旋转面
  • 甚至可以通过眼镜检测到人脸
  • 瞳孔/眼睛定位
  • 面部标志点检测

插件使用场景预设

  • 识别用户上传的图片是不是头像
  • 根据返回的瞳孔/眼睛定位判断是否睡觉(疲劳驾驶)
  • 根据面部特征点可以判断脸上是否佩戴口罩
  • 综合检测数据可以用于上机考试中考生是否离开摄像头、专注于考试(防止作弊)等动作

其他更多使用场景大家可根据插件返回的数据和返回标记好的图片做相应功能,如:把标记出的人脸截下来做相似性比较、对比识别出的面部特征的人脸进行补光美白的操作。

插件简介

插件基本功能有人脸检测、瞳孔定位及面部标志点识别方面功能。插件居于Pigo封装改造,让gofly框架使用者能快速使用人脸识别等功能。

Pigo库凭借其纯Go语言编写的优势,不仅解决了现有解决方案中跨平台移植性差的问题,还通过丰富的代码示例降低了学习门槛,使得开发者能够快速上手并集成到自己的项目中。无论是对于专业开发者还是初学者而言,Pigo都展现出了极高的实用价值与广阔的应用前景。随着技术的不断进步与社区的持续贡献,相信Pigo库将在未来为更多领域带来革命性的变革。

插件封装背景

在当今这个数字化时代,人脸识别技术正以前所未有的速度改变着我们的生活。从安全监控到智能解锁,从虚拟现实体验到医疗健康监测,其应用场景广泛且深入。然而,在众多编程语言中,Go语言以其简洁高效的特性受到了越来越多开发者的青睐。但遗憾的是,在Go语言领域内,高质量的人脸识别库却相对稀缺,大多数解决方案都需要依赖于底层的C或C++实现。这不仅增加了跨平台使用的复杂性,也限制了Go语言本身优势的发挥。正是基于这样的背景下,为大家封装这个插件。它完全由Go语言编写而成,无需外部依赖即可实现人脸检测、瞳孔定位及面部特征点识别等功能,极大地丰富了Go语言在图像处理领域的工具箱。

检测算法相关论文

插件开发使用教程

使用插件直接到gofly快速开发框架后台:开发者工具->代码仓一键安装接口。

插件结构

插件核心功能在utils\plugin\pigoface包中,为了方便大家熟悉插件功能,我们在后端做了演示demo,演示前后端代码在app\business\pigoface和src\views\pigoface如果不需演示代码在实际使用中可手动删除(删除不影响使用)。

插件目录结构:

├─ pigoface             # 在business模块下的类名
│ ├─ cascade           # 模型数据
│ ├─ core              # 插件功能核心代码
│ ├─ testdata          # 存放测试图片(生成打包可删除)
│ └─ main.go           # 封装对core功能函数调用-业务实践
└─ pigoface.go          # 插件实例 提供给app下调用

image.gif

插件调用

在app业务目录中我们直接通过plugin扩展插件对象对用。代码如下:

params := gf.Map{"source": "/utils/plugin/pigoface/testdata/leijun.png", "outImg": true, "markEyes": true, "flploc": true}
data, img, err := plugin.NewPigoface().Main().EntryExe(params)

image.gif

如果ide不会自己import导入plugin 则手动输入:

import (
    +++
    "gofly/utils/plugin"
)

image.gif

插件接口参数说明

下面给出识别使用的参数说明,方便大家在使用时可以快速上手,减少自己摸索时间:  

参数名

名称

类型

默认值

描述

source

检测的图片路径

string

outImg

是否生成图片

bool

destination

生成图片路径

string

resource/uploads/pigoface

cascadeFile

级联二进制文件

string

utils/plugin/pigoface/cascade/facefinder

人脸识别数据模型

minSize

脸的最小尺寸

int

20

maxSize

脸的最大尺寸

int

1000

shiftFactor

按百分比移动检测窗口

float64

0.1

scaleFactor

按百分比缩放检测窗口

float64

1.1

angle

级联旋转角度

float64

0.0

0.0 表示 0 弧度,1.0 表示 2*pi 弧度

iouThreshold

交并比(IoU)阈值

float64

0.2

dbIou

双重交并比去重

bool

false

两次去重,人多时去重效果更好

isCircle

圆形人脸标记

bool

false

生成的图片用红色框出脸,默认矩形

puploc

瞳孔/眼睛定位

bool

true

puplocCascade

瞳孔/眼睛定位级联文件

string

utils/plugin/pigoface/cascade/puploc

识别眼睛的数据模型

markEyes

标记检测眼睛

bool

false

生成图片把检测到眼睛用黄方块框出

flploc

面部特征点检测

bool

false

开启面部特征点检测

flplocDir

面部特征点级联文件的目录

string

utils/plugin/pigoface/cascade/lps

识别面板特征的数据模型

演示api接口调用示例代码

你开在gofly快速开发框架app下找个地方添加一个测试文件,如创建createcode目录新建pigoface.go,复制下面代码进去即可测试。

package createcode
import (
    "gofly/utils/gf"
    "gofly/utils/plugin"
)
// 人脸检测
type Pigoface struct{}
func init() {
    fpath := Pigoface{}
    gf.Register(&fpath, fpath)
}
// 人脸识别接口测试
func (api *Pigoface) TestFace(c *gf.GinCtx) {
    //参数
    param, _ := gf.RequestParam(c)
    if val, ok := param["source"]; !ok || gf.String(val) == "" {
        gf.Failed().SetMsg("参数source不能为空").Regin(c)
        return
    }
    params := gf.Map{"source": param["source"], "outImg": true, "markEyes": true, "flploc": true}
    data, img, err := plugin.NewPigoface().Main().EntryExe(params)
    if err != nil {
        gf.Failed().SetMsg(err.Error()).Regin(c)
        return
    }
    gf.Success().SetMsg("人脸识别接口测试,导出图片地址:" + img).SetData(data).Regin(c)
}

image.gif

插件开发资料

插件代码详情:插件代码下及介绍

插件开发文档:人脸检测、瞳孔/眼睛定位与面部标志点检测插件开发文档

总结

通过本插件使用,我们不仅了解了Go语言写的Pigo库在人脸检测、瞳孔定位及面部标志点识别方面的强大功能,还深入探讨了其背后的实现原理与应用场景。Pigo库凭借其纯Go语言编写的优势,不仅解决了现有解决方案中跨平台移植性差的问题,还通过丰富的代码示例降低了学习门槛,使得开发者能够快速上手并集成到自己的项目中。无论是对于专业开发者还是初学者而言,Pigo都展现出了极高的实用价值与广阔的应用前景。随着技术的不断进步与社区的持续贡献,相信Pigo库将在未来为更多领域带来革命性的变革。

相关文章
|
4天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
21天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
24天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
16天前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
11578 11
|
10天前
|
人工智能 自然语言处理 前端开发
100个降噪蓝牙耳机免费领,用通义灵码从 0 开始打造一个完整APP
打开手机,录制下你完成的代码效果,发布到你的社交媒体,前 100 个@玺哥超Carry、@通义灵码的粉丝,可以免费获得一个降噪蓝牙耳机。
4064 14
|
16天前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。
6794 10
|
28天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
14天前
|
人工智能 自然语言处理 前端开发
什么?!通义千问也可以在线开发应用了?!
阿里巴巴推出的通义千问,是一个超大规模语言模型,旨在高效处理信息和生成创意内容。它不仅能在创意文案、办公助理、学习助手等领域提供丰富交互体验,还支持定制化解决方案。近日,通义千问推出代码模式,基于Qwen2.5-Coder模型,用户即使不懂编程也能用自然语言生成应用,如个人简历、2048小游戏等。该模式通过预置模板和灵活的自定义选项,极大简化了应用开发过程,助力用户快速实现创意。
|
3天前
|
机器学习/深度学习 人工智能 安全
通义千问开源的QwQ模型,一个会思考的AI,百炼邀您第一时间体验
Qwen团队推出新成员QwQ-32B-Preview,专注于增强AI推理能力。通过深入探索和试验,该模型在数学和编程领域展现了卓越的理解力,但仍在学习和完善中。目前,QwQ-32B-Preview已上线阿里云百炼平台,提供免费体验。
|
10天前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
733 5

热门文章

最新文章