Milvus 实战 | Milvus 在知名媒体人物素材库的应用

✏️  作者介绍:

秦玉芳,知名媒体公司数据挖掘算法工程师

 

背景

近年来,为提高新闻记者和编辑的工作效率和报道准确率,Milvus 用户公司投入研发人工智能,并将成果应用于新闻的采编发供环节。

报道人物素材库能够对人物照片进行人脸识别,并返回照片中人物相关信息。Milvus 用户公司已经在新闻采编流程中应用了报道人物素材库。为提高人物图片检索准确率,还对历史稿件进行了人物标注,最大化地利用了历史稿件数据。

此知名媒体的发稿量巨大,因此需要利用人脸识别技术识别图像人物并精准检索图片稿。随着近年深度学习的发展,人脸识别的准确率也在不断提高。因此,基于人脸识别技术和新闻报道主线内容构建了报道人物素材库。

本文将介绍如何基于开源人脸分析算法和向量相似度搜索引擎 Milvus 来搭建报道人物素材库。

 

整体架构

在搭建完整的报道人像素材库前,我们需要先借助多种机器和算法搭建报道人物素材底库。系统还需要审核采集的人物图像质量,并更新图像对应的人物信息。这一步骤可以通过嵌入互联网搜索页面和媒体内部稿件库页面、抓取人物信息变动和自然语言处理等辅助技术来实现。

报道人像素材库中人物图像与人物信息一一对应。如下图绿色箭头过程所示,系统会先检测人物图像质量,进行人脸检测,然后对合格图像中的人脸进行特征提取,将提取到的特征向量和图片 ID 存入 Milvus 库中。如下图蓝色箭头过程所示,新闻记者或编辑上传待检测图片后,系统会先检测图片中的人脸,提取图片中人脸的特征,并在 Milvus 库中进行向量相似性搜索。随后按照一定的识别阈值对搜索返回的 top_k 个最相近结果排序,确定与待检测图片中人脸最相似的图片,并返回图片对应的人物信息。

 

技术细节

人脸检测

人脸检测的目标是找出图像中所有人脸对应的位置,输出结果为人脸外接矩形在图像中的坐标。输出结果还会包括图片中人物姿态如倾斜角度等信息。

我们在项目前期选择的是经典的 MTCNN 算法。但由于我们的图片原图尺寸较大——大部分图片高宽约五六千像素,且图片内容涉及范围较广,因此采用 MTCNN 算法会多次出现识别错误的情况。经过调研,我们最终选择在人脸检测环节采用 InsightFace 提供的 RetinaFace 算法。该算法能够保证较高的人脸识别准确率,有效减少新闻报道错误率。

人脸对齐

人脸检测完成后,需要进行人脸对齐。在此环节中,系统会定位人脸图片中的面部关键特征点,如眼睛、鼻尖、嘴角、眉毛以及人脸五官轮廓点等。随后系统还需要对人脸图片进行变换,比如通过旋转仿射变换摆正图片中的人脸,通过设定两眼间距或面部宽度保证图片中人脸大小。

在人脸对齐环节,我们依旧采用 RetinaFace 算法。RetinaFace 算法来自论文 RetinaFace: Single-stage Dense Face Localisation in the Wild ,是目前针对 2D 与 3D 人脸分析中(含检测、识别、对齐、属性识别等)开发者最活跃的开源算法。

人脸图片质量检测

为保证人物素材库中图片的质量,我们需要在图片入库前检测图片质量。质量不符合要求的人像进入库中会影响人脸识别的准确率。人脸图片质量检测包括人脸数量检测、模糊度检测和光照检测等。

人脸数量检测:使用上述提到的 RetinaFace 算法检测待入库图片中的人脸数量。可入库图片中只允许有一张可识别的人脸。

模糊度检测:使用 Brenner 和 Laplacian 函数对人脸对齐后的人脸小图进行模糊度检测。入库图片不可过于模糊。

光照检测:使用平均亮度值的方法对人脸对齐后的人脸小图进行光照检测,设置阈值以确保入库照片不会过亮或过暗。

人脸特征提取

人脸特征提取算法通过卷积神经网络学习海量人脸图片,提取出区分不同人脸的特征向量,可代替传统的人工特征提取方法。每张人脸都对应一条特征向量。

本项目使用 InsightFace 提供的 arcface 人脸特征提取算法,对人脸检测和对齐后的人脸小图进行特征提取,形成 512 维的特征向量。

向量搜索引擎

搭建人像素材库初期,由于图片数量不大,我们选择将图片中的人脸特征向量存入内存中,并进行一一比对。但随着人像素材库中图片数量不断增加,我们急需提升向量检索效率。因此,我们考虑引入向量搜索引擎。

向量搜索引擎有 Faiss,Annoy,Milvus 等。在对比搜索准确性、系统性能和动态插入、删除向量功能后,我们决定选用 Milvus。我们使用了 Milvus 的 Docker 镜像,其部署和使用过程都十分方便,服务也十分稳定。Milvus 还支持多种向量相似度搜索算法。由于本项目对于搜索准确率要求较高,因此我们选择了精准搜索。

Milvus 是一款开源的向量相似度搜索引擎,支持由多种 AI 模型转化的非结构化数据向量,提供向量数据搜索分析服务,可广泛应用于计算机视觉、自然语言处理、语音识别、推荐系统以及新药研发等领域。Milvus 非结构化向量搜索与分析的具体实现方式为:

  1. 通过深度学习模型将非结构化数据转化为特征向量,并导入 Milvus 库。

  2. 存储特征向量并建立索引。

  3. 返回与查询向量最相似的 top_k 个结果。

总结

目前,此知名媒体报道人物素材库中的人像识别准确达 97.5% 以上,Milvus的应用极大地提高了识别速度。人物素材库能够有效提升采编效率和报道准确率。

 

更多 Milvus 用户案例

· 基于语义向量的内容召回和短文本分类的错误查找-搜狐的 Milvus 实战

 · 贝壳找房基于Milvus的向量搜索实践(三)

· 基于 Milvus 构建的近似最近邻(ANN)搜索引擎

 

欢迎加入 Milvus 社区

github.com/milvus-io/milvus | 源码

milvus.io | 官网

milvusio.slack.com | Slack 社区

zhihu.com/org/zilliz-11| 知乎

zilliz.blog.csdn.net | CSDN 博客

space.bilibili.com/478166626 | Bilibili

已标记关键词 清除标记
相关推荐