资讯专栏INFORMATION COLUMN

一行代码搞定人脸识别

Tony / 2449人阅读

摘要:什么,只要一行代码就能搞定人脸识别当然是假的啦。虽然不能一行就搞定,依靠强大的人脸识别包,只要十多行代码完全可以实现人脸识别的功能。经测试识别正确率高达。下安装比较简单,命令行下几行代码就搞定,安装见这里。

什么,只要一行代码就能搞定人脸识别?当然是假的啦。

虽然不能一行就搞定,依靠python强大的人脸识别包,只要十多行代码完全可以实现人脸识别的功能。这就叫站在巨人的肩膀上,看得更高更远。

face-recognition,使用最先进的人脸识别技术构建而成的python包,而且具有深度学习功能。经测试识别正确率高达99.38%。确实很高。

安装

因为face-recognition使用到了dlib库,这是c++写的一个包含机器学习,计算机视觉等算法的库,所以使用之前要先安装dlib。不过这还不行,dlib库又依赖一个叫做boost的东西,总之有些麻烦,所以我就不写详细步骤啦╰( ̄▽ ̄)╭。linux下安装比较简单,命令行下几行代码就搞定,windows安装见这里。

所有工作准备好之后,使用pip安装:

pip install face-recognition

人脸检测

如何检测一张图片中的人脸?face-recognition把带人脸的图片看成是由像素组成的二维数组,使用face_locations方法返回识别到的人脸的坐标(上下左右)。

这样就可以啦,接下来只要把这些人脸坐标用矩形框圈出来,然后保存即可。

import face_recognition
from skimage import draw, io
%matplotlib inline
# 图片文件
files = "F:datapeople.jpg"
# 加载图片
image = face_recognition.load_image_file(files)
# 识别人脸坐标
face_locations = face_recognition.face_locations(image)

# 我们在此使用之前介绍过的skimage库进行绘制
# 读出的图片在skimage中不能使用,故重新导入
img = io.imread(files)

print("I found {} face(s) in this photograph.".format(len(face_locations)))

# 循环标记人脸
for face_location in face_locations:
    # 每个人脸的坐标
    top, right, bottom, left = face_location
    # 为每个人脸画四边形
    # polygon_perimeter作用是绘制不填充的多边形
    rr, cc = draw.polygon_perimeter([top, top, bottom, bottom], [left, right, right, left])
    # 设置颜色为红色
    draw.set_color(img, [rr, cc], [255, 0, 0])

# 保存
io.imsave("F:result.jpg", img)
I found 24 face(s) in this photograph.

我们打开图片看看效果。

import matplotlib.pyplot as plt
from skimage import io

origin = io.imread(files)
reco = io.imread("f:result.jpg")

plt.subplot(1, 2, 1)
plt.imshow(origin)
plt.subplot(1, 2, 2)
plt.imshow(reco)

效果不错,都识别出来了。

人脸识别

既然能够识别出有没有人脸,有可能知道这个人是谁吗?当然可以了,前提是你要提供一张包含某个人脸的照片。使用face_encodings对人脸进行编码,然后使用compare_faces方法比较即可。看代码。

import face_recognition

# 首先打开一张已经知道是谁的照片,然后打开另一张照片
zhuyizhi_image = face_recognition.load_image_file("F:zhuyizhi.jpg")
unknown_image = face_recognition.load_image_file("F:unknow.jpg")

# 识别出已知和未知人脸的面部特征
zhu_face_encoding = face_recognition.face_encodings(zhuyizhi_image)[0]
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

# 可以添加多个已知的人脸照片
known_faces = [
    zhu_face_encoding,
 
]

# 比较已知人脸和未知人脸,返回结果为true或者false。
results = face_recognition.compare_faces(known_faces, unknown_face_encoding)

print("Is the unknown face a picture of zhuyizhi? {}".format(results[0]))
print("Is the unknown face a new person that we"ve never seen before? {}".format(not True in results))
Is the unknown face a picture of zhuyizhi? True
Is the unknown face a new person that we"ve never seen before? False

除了能检测出和识别出人脸之外,face-recognition还提供深度学习参数的支持,使得识别率更高。

本人才疏学浅,上文中难免有些错误,还请各位品评指正。如果觉得写的还行,欢迎大家多多分享哈。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44496.html

相关文章

  • UCloud人脸识别测温产品

    摘要:近期,中烟机械与就人脸识别测温产品达成了长期合作,并已在其下属各烟机厂投入使用。总结人脸识别测温产品结合自身在方面的专业云服务技术能力,致力于为各企业组织在疫情期间提高人员体温监控效率减少感染风险。目前,国内疫情已基本得到控制,为防止疫情再次大规模爆发,大部分公共场所及企业办公楼的体温检测、戴口罩、消毒等防控措施开始趋向常态化管理。无接触、无人值守、快速感应的人脸识别测温设备在疫情期间得到了...

    KunMinX 评论0 收藏0
  • TP-GAN 让图像生成再获突破,根据单一侧脸生成正面逼真人脸

    摘要:中科院自动化所,中科院大学和南昌大学的一项合作研究,提出了双路径,通过单一侧面照片合成正面人脸图像,取得了当前较好的结果。研究人员指出,这些合成的图像有可能用于人脸分析的任务。恢复的图像的质量严重依赖于训练过程中的先验或约束条件。 中科院自动化所(CASIA),中科院大学和南昌大学的一项合作研究,提出了双路径 GAN(TP-GAN),通过单一侧面照片合成正面人脸图像,取得了当前较好的结果。研...

    gougoujiang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<