网站推广效果分析,企业网站建设哪家专业,安徽省建设厅网站证书查询,网站开发教程网前言
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C 库#xff0c;如 OpenCV 或 dlib#xff0c;但通过 cgo 调用 C 程序会引入巨大的延迟#xff0c;并在性能方面产生显著的权衡。…前言
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C 库如 OpenCV 或 dlib但通过 cgo 调用 C 程序会引入巨大的延迟并在性能方面产生显著的权衡。此外在许多情况下在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便在项目部署和项目维护也能省很多时间精力。
本插件为了解决上述挑战而设计开发的。首先它完全基于纯Go语言实现这意味着用户无需担心跨平台移植性问题可以轻松地将项目部署到任何支持Go语言的环境中。其次本插件内置了多种先进算法能够在保证高精度的同时达到快速响应的效果非常适合应用于实时性要求较高的场景中。再者考虑到易用性本插件提供了详尽的API文档以及GoFly后台在线体验的示例代码如下图1和图2即使是初学者也能快速掌握其使用方法。最后本插件拥有活跃的社区支持不断有新功能被加入进来确保了其长期的生命力和发展潜力。总之无论你是希望提高工作效率的专业开发者还是对新技术充满好奇的学生本插件都将是您探索人脸识别世界的理想选择可以作为学术研究和项目开发使用。 图1-GoFly后台在线体验人脸检测-外国人黑人和白人 图2-国人面部检测 插件主要特性
不需要安装OpenCV或任何第三方模块处理速度快无需图像预处理就可以检测无需计算积分图像图像金字塔HOG金字塔或任何其他类似的数据结构人脸检测基于二进制文件树结构中编码的像素强度比较快速检测平面内旋转面甚至可以通过眼镜检测到人脸瞳孔/眼睛定位面部标志点检测
插件使用场景预设
识别用户上传的图片是不是头像根据返回的瞳孔/眼睛定位判断是否睡觉(疲劳驾驶)根据面部特征点可以判断脸上是否佩戴口罩综合检测数据可以用于上机考试中考生是否离开摄像头、专注于考试防止作弊等动作
其他更多使用场景大家可根据插件返回的数据和返回标记好的图片做相应功能如把标记出的人脸截下来做相似性比较、对比识别出的面部特征的人脸进行补光美白的操作。
插件简介
插件基本功能有人脸检测、瞳孔定位及面部标志点识别方面功能。插件居于Pigo封装改造让gofly框架使用者能快速使用人脸识别等功能。
Pigo库凭借其纯Go语言编写的优势不仅解决了现有解决方案中跨平台移植性差的问题还通过丰富的代码示例降低了学习门槛使得开发者能够快速上手并集成到自己的项目中。无论是对于专业开发者还是初学者而言Pigo都展现出了极高的实用价值与广阔的应用前景。随着技术的不断进步与社区的持续贡献相信Pigo库将在未来为更多领域带来革命性的变革。
插件封装背景
在当今这个数字化时代人脸识别技术正以前所未有的速度改变着我们的生活。从安全监控到智能解锁从虚拟现实体验到医疗健康监测其应用场景广泛且深入。然而在众多编程语言中Go语言以其简洁高效的特性受到了越来越多开发者的青睐。但遗憾的是在Go语言领域内高质量的人脸识别库却相对稀缺大多数解决方案都需要依赖于底层的C或C实现。这不仅增加了跨平台使用的复杂性也限制了Go语言本身优势的发挥。正是基于这样的背景下为大家封装这个插件。它完全由Go语言编写而成无需外部依赖即可实现人脸检测、瞳孔定位及面部特征点识别等功能极大地丰富了Go语言在图像处理领域的工具箱。
检测算法相关论文
基于基于像素强度比较的目标检测论文。使用随机树集成的眼睛瞳孔定位。面部特征点的快速定位。Pigo插件官方网站
插件开发使用教程 使用插件直接到gofly快速开发框架后台开发者工具-代码仓一键安装接口。
插件结构
插件核心功能在utils\plugin\pigoface包中为了方便大家熟悉插件功能我们在后端做了演示demo演示前后端代码在app\business\pigoface和src\views\pigoface如果不需演示代码在实际使用中可手动删除删除不影响使用。
插件目录结构
├─ pigoface # 在business模块下的类名
│ ├─ cascade # 模型数据
│ ├─ core # 插件功能核心代码
│ ├─ testdata # 存放测试图片生成打包可删除
│ └─ main.go # 封装对core功能函数调用-业务实践
│
└─ pigoface.go # 插件实例 提供给app下调用
插件调用
在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)
如果ide不会自己import导入plugin 则手动输入
import (gofly/utils/plugin
)
插件接口参数说明 下面给出识别使用的参数说明方便大家在使用时可以快速上手减少自己摸索时间: 参数名 名称 类型 默认值 描述 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 createcodeimport (gofly/utils/gfgofly/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)
}
插件开发资料
插件代码详情插件代码下及介绍
插件开发文档人脸检测、瞳孔/眼睛定位与面部标志点检测插件开发文档
总结
通过本插件使用我们不仅了解了Go语言写的Pigo库在人脸检测、瞳孔定位及面部标志点识别方面的强大功能还深入探讨了其背后的实现原理与应用场景。Pigo库凭借其纯Go语言编写的优势不仅解决了现有解决方案中跨平台移植性差的问题还通过丰富的代码示例降低了学习门槛使得开发者能够快速上手并集成到自己的项目中。无论是对于专业开发者还是初学者而言Pigo都展现出了极高的实用价值与广阔的应用前景。随着技术的不断进步与社区的持续贡献相信Pigo库将在未来为更多领域带来革命性的变革。