高端大气的网站模板,搭建网站步骤,手机端传奇,软件项目管理的主要内容有哪些?Python 使用 face_recognition 人脸识别
人脸识别
face_recognition 是世界上最简单的人脸识别库。
使用 dlib 最先进的人脸识别功能构建建立深度学习#xff0c;该模型准确率在99.38%。
Python模块的使用
Python可以安装导入 face_recognition 模块轻松操作#xff0c;对于简…Python 使用 face_recognition 人脸识别
人脸识别
face_recognition 是世界上最简单的人脸识别库。
使用 dlib 最先进的人脸识别功能构建建立深度学习该模型准确率在99.38%。
Python模块的使用
Python可以安装导入 face_recognition 模块轻松操作对于简单的几行代码来讲再简单不过了。
自动查找图片中的所有面部
import face_recognition
image face_recognition.load_image_file(my_picture.jpg)
face_locations face_recognition.face_locations(image)
# face_locations is now an array listing the co-ordinates of each face!
还可以选择更准确的给予深度学习的人脸检测模型
import face_recognition
image face_recognition.load_image_file(my_picture.jpg)
face_locations face_recognition.face_locations(image, modelcnn)
# face_locations is now an array listing the co-ordinates of each face!
自动定位图像中人物的面部特征
import face_recognition
image face_recognition.load_image_file(my_picture.jpg)
face_landmarks_list face_recognition.face_landmarks(image)
# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0][‘left_eye‘] would be the location and outline of the first person‘s left eye.
识别图像中的面部并识别它们是谁
import face_recognition
picture_of_me face_recognition.load_image_file(me.jpg)
my_face_encoding face_recognition.face_encodings(picture_of_me)[0]
# my_face_encoding now contains a universal ‘encoding‘ of my facial features that can be compared to any other picture of a face!
unknown_picture face_recognition.load_image_file(unknown.jpg)
unknown_face_encoding face_recognition.face_encodings(unknown_picture)[0]
# Now we can see the two face encodings are of the same person with compare_faces!
results face_recognition.compare_faces([my_face_encoding], unknown_face_encoding)
if results[0] True:
print(It‘s a picture of me!)
else:
print(It‘s not a picture of me!)
face_recognition 用法
要在项目中使用面部识别首先导入面部识别库没有则安装
import face_recognition
基本思路是首先加載圖片
# 导入人脸识别库
import face_recognition
# 加载图片
image face_recognition.load_image_file(1.jpg)
上面这一步会将图像加载到 numpy 数组中如果已经有一个 numpy 数组图像则可以跳过此步骤。
然后对图片进行操作例如找出面部、识别面部特征、查找面部编码
例如对此照片进行操作# 导入人脸识别库
import face_recognition
# 加载图片
image face_recognition.load_image_file(1.jpg)
# 查找面部
face_locations face_recognition.face_locations(image)
# 查找面部特征
face_landmarks_list face_recognition.face_landmarks(image)
# 查找面部编码
list_of_face_encodings face_recognition.face_encodings(image)
# 打印输出
print(face_locations)
print(face_landmarks_list)
print(list_of_face_encodings)
/usr/bin/python3.6 /home/wjw/PycharmProjects/face_study/face0112/find_face.py
[(297, 759, 759, 297)]
[{‘chin‘: [(280, 439), (282, 493), (283, 547), (290, 603), (308, 654), (340, 698), (380, 733), (427, 760), (485, 770), (544, 766), (592, 738), (634, 704), (668, 661), (689, 613), (701, 563), (712, 514), (722, 466)], ‘left_eyebrow‘: [(327, 373), (354, 340), (395, 323), (442, 324), (487, 337)], ‘right_eyebrow‘: [(560, 344), (603, 340), (647, 348), (682, 372), (698, 410)], ‘nose_bridge‘: [(519, 410), (517, 444), (515, 477), (513, 512)], ‘nose_tip‘: [(461, 548), (485, 554), (508, 561), (532, 558), (555, 556)], ‘left_eye‘: [(372, 424), (399, 420), (426, 420), (451, 429), (424, 433), (397, 432)], ‘right_eye‘: [(577, 440), (605, 437), (631, 442), (655, 451), (628, 454), (601, 449)], ‘top_lip‘: [(415, 617), (452, 600), (484, 593), (506, 600), (525, 598), (551, 610), (579, 634), (566, 630), (524, 620), (504, 619), (482, 616), (428, 616)], ‘bottom_lip‘: [(579, 634), (546, 636), (518, 636), (498, 635), (475, 632), (447, 626), (415, 617), (428, 616), (479, 605), (500, 610), (520, 610), (566, 630)]}]
[array([-0.14088562, 0.00503807, 0.00270613, -0.07196694, -0.13449337,-0.07765003, -0.03745099, -0.09381913, 0.12006464, -0.14438102,0.13404925, -0.06327219, -0.17859964, -0.05488868, -0.02019649,0.1671212 , -0.1643257 , -0.12276072, -0.03441665, -0.05535197,0.10760178, 0.04479133, -0.06407147, 0.0689199 , -0.11934121,-0.32660219, -0.07756624, -0.06931646, 0.04064362, -0.05714978,-0.0353414 , 0.0762421 , -0.18261658, -0.07098956, 0.02025999,0.13947421, -0.00086442, -0.05380288, 0.17013952, 0.03612047,-0.24374251, 0.02234841, 0.06126914, 0.25475574, 0.11198805,0.01954928, 0.01119124, -0.10833667, 0.14647615, -0.14495029,-0.00890255, 0.12340544, 0.05062022, 0.07525564, 0.0184714,-0.0970083 , 0.07874238, 0.09881058, -0.15751837, 0.02846039,0.0963228 , -0.07531998, -0.0176545 , -0.07000162, 0.25344211,0.03867894, -0.09201257, -0.1658347 , 0.12261658, -0.1535762,-0.15940444, 0.04406216, -0.12239387, -0.10966937, -0.30615237,-0.00739088, 0.39348996, 0.108335 , -0.20034787, 0.08009379,-0.05592394, -0.0375729 , 0.23610245, 0.16506384, 0.03575533,0.04828007, -0.04044699, 0.01277492, 0.25646573, -0.00142263,-0.04078939, 0.18071812, 0.0617944 , 0.12697747, 0.02988701,-0.00425877, -0.07669616, 0.00568433, -0.10959606, -0.03289849,0.08964096, -0.00859835, 0.00752143, 0.14310959, -0.14807181,0.18848835, 0.03889544, 0.0564449 , 0.03094865, 0.05897319,-0.11886788, -0.03628988, 0.09417973, -0.20971358, 0.22439443,0.18054837, 0.0444049 , 0.06860743, 0.1211487 , 0.02242998,-0.01343671, -0.00214755, -0.24110457, -0.03643485, 0.13142672,-0.05264375, 0.09808614, 0.00694137])]
Process finished withexit code 0
可以将面部编码相互比较以查看面部是否匹配注意查找面部编码有点慢因此如果在以后还需对次图片进行面部分析参考建议将每个图片的结果存留缓存或存储进数据库。
一旦得到面部编码便可以比较他们
# results is an array of True/False telling if the unknown face matched anyone in the known_faces array
results face_recognition.compare_faces(known_face_encodings, a_single_unknown_face_encoding)
就是这么简单
face_recognition 模块内容
batch_face_locations 使用CNN人脸检测器返回图像中人脸边界框的二维数组
face_recognition.batch_face_locations(images, number_of_times_to_upsample1, batch_size128)
使用CNN人脸检测器返回图像中人脸边界框的二维数组
如果您使用的是GPU这可以提供更快的结果因为GPU
可以一次处理一批图像。如果你不使用GPU你就不需要这个功能。
param img图像列表每个图像都是一个numpy数组
param number_of_times_to_upsample要对图像进行多少次upsample以查找面。数字越大面越小。
param batch_size每个GPU处理批中要包含多少图像。
return按css上、右、下、左顺序找到的面位置的元组列表
compare_faces 将人脸编码列表与候选编码进行比较看它们是否匹配。
face_recognition.compare_faces(known_face_encodings, face_encoding_to_check, tolerance0.6)
将人脸编码列表与候选编码进行比较看它们是否匹配。
param known_face_encodings已知人脸编码列表
param face_encoding_to_check要与列表进行比较的单个面编码
param tolerance面与面之间的距离应视为匹配。越低越严格。0.6是典型的最佳性能。
return一个true/false值列表指示要检查的已知面部编码与面部编码匹配。
face_distance 给定面部编码列表将它们与已知的面部编码进行比较并获得每个比较面部的欧氏距离。距离告诉您脸部的相似程度。
face_recognition.face_distance(face_encodings, face_to_compare)
给定面部编码列表将它们与已知的面部编码进行比较并获得每个比较面部的欧氏距离。距离告诉您脸部的相似程度。
param faces要比较的面编码列表
param face_to_compare要与之比较的人脸编码
返回一个numpy ndarray每个面的距离与“faces”数组的顺序相同。
face_encodings 给定的图像返回的128维编码每个脸对脸的形象。
face_recognition.face_encodings(face_image, known_face_locationsNone, num_jitters1)
给定的图像返回的128维编码每个脸对脸的形象。
参数face_image图像是包含一个或多个面
参数known_face_locations可选的如果您已经知道每个面的边界框。
参数num_jitters计算编码时重新采样面的次数。更高更准确但更慢即100慢100倍
参数return128维面部编码列表图像中每个面部一个
face_landmarks 给定图像返回图像中每个面部的面部特征位置眼睛鼻子等的字典。
face_recognition.face_landmarksface_imageface_locations Nonemodel ‘large‘
给定图像返回图像中每个面部的面部特征位置眼睛鼻子等的字典。
face_image- 要搜索的图像
face_locations- 可选择提供要检查的面部位置列表。
model- 可选 - 要使用的模型。“大”默认或“小”只返回5分但速度更快。
return面部特征位置眼睛鼻子等的序列表
face_locations 返回图像中人脸边界框的数组。
face_recognition.face_locationsimgnumber_of_times_to_upsample 1model ‘hog‘
返回图像中人脸边界框的数组。
img- 一个图像作为一个numpy数组
number_of_times_to_upsample- 对图像进行上采样以查找面部的次数。数字越大面部越小。
model- 使用哪种人脸检测模型。“hog”不太准确但在CPU上更快。“cnn”是一种更准确的深度学习模型它是GPU / CUDA加速如果可用。默认为“hog”。
returncss顶部右侧底部左侧顺序中找到的面部位置的元组列表
load_image_file 将图像文件.jpg.png等加载到numpy数组中。
face_recognition.load_image_filefilemode ‘RGB‘)
将图像文件.jpg.png等加载到numpy数组中。
file- 要加载的图像文件名或文件对象
mode- 将图像转换为的格式。仅支持“RGB”8位RGB3个通道和“L”黑色和白色
return图像内容为numpy数组。
完成
原文地址https://www.cnblogs.com/wjw1014/p/10259180.html