https://blog.csdn.net/niutianzhuang/article/details/79191167

做一个人脸检测实验。

1.获取数据集(LFW)

Labeled Faces in the Wild Home Menu->Download->All images as gzipped tar file

或者直接点击我是LFW 解压放到datasets

2.下载facenet并配置(facenet 是一个使用tensorflow 进行人脸识别的开源库,我们可以依赖于它,进行人脸识别相关开发,进而降低难度与成本)

1)git clone --recursive https://github.com/davidsandberg/facenet.git
2)cd facenet/
3)pip install -r requirements.txt (这一步会把你的TF修改成1.2.0,我之前的是TensorFlow·1.4.1,执行完此命令变为了TensorFlow1.2.0)
4)export PYTHONPATH=$(pwd)/src

注意文件放置的位置!(facenet 和lfw要放在同一目录下,切记!)

facenet所在路径 /home/cjz/anaconda3/envs/tensorflow/facenet

lfw解压后所在路径:/home/cjz/anaconda3/envs/tensorflow/datasets/lfw

3.处理数据集(对齐数据集)
1)cd facenet
2) python src/align/align_dataset_mtcnn.py ~/anaconda3/envs/tensorflow/datasets/lfw ~/anaconda3/envs/tensorflow/datasets/lfw /lfw_mtcnnpy_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25   (切记,一定要写对路径 ,这样才能导入全部数据,并导出相同像素160*160的图片)

图片较多需要等一段时间(我的CPU跑了40-50分钟,gpu的话应该更快),

然后在这里 /home/cjz/anaconda3/envs/tensorflow/datasets/lfw/lfw_mtcnnpy_160会有对齐之后的图片了(所谓对齐,可以理解为就是同等像素大小,详解https://www.cnblogs.com/bakari/archive/2012/08/27/2658956.html)。

4.下载训练好的模型文件

(1) facenet提供了两个预训练模型,分别是基于CASIA-WebFace和MS-Celeb-1M人脸库训练的

(2) 本人使用的是基于数据集MS-Celeb-1M训练好的模型。模型存储在Google网盘,需要翻墙。

https://github.com/davidsandberg/facenet

选择pre-trained models

下载20170512-110547(MS-Celeb-1M数据集训练的模型文件,微软人脸识别数据库,名人榜选择前100万名人,搜索引擎采集每个名人100张人脸图片。预训练模型准确率0.993+-0.004)      (注意:我是翻墙才能下载下来,稍后我会上传)

然后解压

然后解压

放在一个文件夹下 mkdir ~/models以便后面路径寻找

也就是说文件放在了/home/cjz/anaconda3/envs/tensorflow/models

5.在lfw数据集上面进行验证,评估预训练模型的准确率

1)cd facenet

2) python src/validate_on_lfw.py ~/anaconda3/envs/tensorflow/datasets/lfw/lfw_mtcnnpy_160 ~/anaconda3/envs/tensorflow/models/20170512-110547/

输出:

  1. Model directory: /home/cjz/anaconda3/envs/tensorflow/models/20170512-110547/
  2. Metagraph file: model-20170512-110547.meta
  3. Checkpoint file: model-20170512-110547.ckpt-250000
  4. Runnning forward pass on LFW images
  5. Killed
出现killed原因  执行第68-80语句时批处理时由于cpu性能,出现killed或者电脑宕机,面对killed,我的处理办法重启主机电脑后,立马跑程序,结果OK的,
  1. cjz@ubuntu14:~/anaconda3/envs/tensorflow/facenet$ python src/validate_on_lfw.py ~/anaconda3/envs/tensorflow/datasets/lfw/lfw_mtcnnpy_160 ~/anaconda3/envs/tensorflow/models/20170512-110547/
  2. (...)
  3. Model directory: /home/cjz/anaconda3/envs/tensorflow/models/20170512-110547/
  4. Metagraph file: model-20170512-110547.meta
  5. Checkpoint file: model-20170512-110547.ckpt-250000
  6. Runnning forward pass on LFW images
  7. Accuracy: 0.992+-0.003
  8. Validation rate: 0.97467+-0.01477 @ FAR=0.00133
  9. Area Under Curve (AUC): 1.000
  10. Equal Error Rate (EER): 0.007
  11. cjz@ubuntu14:~/anaconda3/envs/tensorflow/facenet$

(注:

(...)中的内容不必在意,只是在提醒你的电脑还可以提高计算能力,具体内容为 
  1. 2018-01-29 07:08:42.434449: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
  2. 2018-01-29 07:08:42.434510: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
  3. 2018-01-29 07:08:42.434523: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
  4. 2018-01-29 07:08:42.434531: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
  5. 2018-01-29 07:08:42.434539: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

)

为了和基准比较,本实验采用facenet/data/pairs.txt,官方随机生成数据,里面包含匹配和不匹配人名和图片编号。

validate_on_lfw.py文件:

这里采用十折交叉验证的方法来测试算法的准确。十折交叉验证是常用的精度测试方法,具体策略是:数据集分成10份,轮流将其中9份做训练集,1份做测试集,10次结果均值作算法精度估计。一般需要多次10折交叉验证求均值。

  1. """Validate a face recognizer on the "Labeled Faces in the Wild" dataset (http://vis-www.cs.umass.edu/lfw/).
  2. Embeddings are calculated using the pairs from http://vis-www.cs.umass.edu/lfw/pairs.txt and the ROC curve
  3. is calculated and plotted. Both the model metagraph and the model parameters need to exist
  4. in the same directory, and the metagraph should have the extension '.meta'.
  5. """
  6. # MIT License
  7. #
  8. # Copyright (c) 2016 David Sandberg
  9. #
  10. # Permission is hereby granted, free of charge, to any person obtaining a copy
  11. # of this software and associated documentation files (the "Software"), to deal
  12. # in the Software without restriction, including without limitation the rights
  13. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  14. # copies of the Software, and to permit persons to whom the Software is
  15. # furnished to do so, subject to the following conditions:
  16. #
  17. # The above copyright notice and this permission notice shall be included in all
  18. # copies or substantial portions of the Software.
  19. #
  20. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  21. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  22. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  23. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  24. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  25. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  26. # SOFTWARE.
  27. #author cjz,执行第68-80语句时批处理时由于cpu性能,出现killed或者电脑宕机,面对killed,我的处理办法重启主机电脑后,立马跑程序,结果OK的,'''
  28. from __future__ import absolute_import
  29. from __future__ import division
  30. from __future__ import print_function
  31. import tensorflow as tf
  32. import numpy as np
  33. import argparse
  34. import facenet
  35. import lfw
  36. import os
  37. import sys
  38. import math
  39. from sklearn import metrics
  40. from scipy.optimize import brentq
  41. from scipy import interpolate
  42. def main(args):
  43. with tf.Graph().as_default():
  44. with tf.Session() as sess:
  45. # Read the file containing the pairs used for testing
  46. pairs = lfw.read_pairs(os.path.expanduser(args.lfw_pairs))
  47. # Get the paths for the corresponding images
  48. paths, actual_issame = lfw.get_paths(os.path.expanduser(args.lfw_dir), pairs, args.lfw_file_ext)
  49. # Load the model
  50. facenet.load_model(args.model)
  51. # Get input and output tensors
  52. images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
  53. embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")
  54. phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")
  55. # image_size = images_placeholder.get_shape()[1] # For some reason this doesn't work for frozen graphs
  56. image_size = args.image_size
  57. embedding_size = embeddings.get_shape()[1]
  58. # Run forward pass to calculate embeddings
  59. print('Runnning forward pass on LFW images')
  60. batch_size = args.lfw_batch_size
  61. nrof_images = len(paths)
  62. nrof_batches = int(math.ceil(1.0 * nrof_images / batch_size))
  63. emb_array = np.zeros((nrof_images, embedding_size))
  64. for i in range(nrof_batches):
  65. start_index = i * batch_size
  66. end_index = min((i + 1) * batch_size, nrof_images)
  67. paths_batch = paths[start_index:end_index]
  68. images = facenet.load_data(paths_batch, False, False, image_size)
  69. feed_dict = {images_placeholder: images, phase_train_placeholder: False}
  70. emb_array[start_index:end_index, :] = sess.run(embeddings, feed_dict=feed_dict)
  71. tpr, fpr, accuracy, val, val_std, far = lfw.evaluate(emb_array,
  72. actual_issame, nrof_folds=args.lfw_nrof_folds)
  73. print('Accuracy: %1.3f+-%1.3f' % (np.mean(accuracy), np.std(accuracy)))
  74. print('Validation rate: %2.5f+-%2.5f @ FAR=%2.5f' % (val, val_std, far))
  75. auc = metrics.auc(fpr, tpr)
  76. print('Area Under Curve (AUC): %1.3f' % auc)
  77. eer = brentq(lambda x: 1. - x - interpolate.interp1d(fpr, tpr)(x), 0., 1.)
  78. print('Equal Error Rate (EER): %1.3f' % eer)
  79. def parse_arguments(argv):
  80. parser = argparse.ArgumentParser()
  81. parser.add_argument('lfw_dir', type=str,
  82. help='Path to the data directory containing aligned LFW face patches.')
  83. parser.add_argument('--lfw_batch_size', type=int,
  84. help='Number of images to process in a batch in the LFW test set.', default=100)
  85. parser.add_argument('model', type=str,
  86. help='Could be either a directory containing the meta_file and ckpt_file or a model protobuf (.pb) file')
  87. parser.add_argument('--image_size', type=int,
  88. help='Image size (height, width) in pixels.', default=160)
  89. parser.add_argument('--lfw_pairs', type=str,
  90. help='The file containing the pairs to use for validation.', default='data/pairs.txt')
  91. parser.add_argument('--lfw_file_ext', type=str,
  92. help='The file extension for the LFW dataset.', default='png', choices=['jpg', 'png'])
  93. parser.add_argument('--lfw_nrof_folds', type=int,
  94. help='Number of folds to use for cross validation. Mainly used for testing.', default=10)
  95. return parser.parse_args(argv)
  96. if __name__ == '__main__':
  97. main(parse_arguments(sys.argv[1:]))

************************************************************************************************************************************

基本知识

人脸识别,基于人脸部特征信息识别身份的生物识别技术。摄像机、摄像头采集人脸图像或视频流,自动检测、跟踪图像中人脸,做脸部相关技术处理,人脸检测、人脸关键点检测、人脸验证等。《麻省理工科技评论》(MIT Technology Review),2017年全球十大突破性技术榜单,支付宝“刷脸支付”(Paying with Your Face)入围。

人脸识别优势,非强制性(采集方式不容易被察觉,被识别人脸图像可主动获取)、非接触性(用户不需要与设备接触)、并发性(可同时多人脸检测、跟踪、识别)。深度学习前,人脸识别两步骤:高维人工特征提取、降维。传统人脸识别技术基于可见光图像。深度学习+大数据(海量有标注人脸数据)为人脸识别领域主流技术路线。神经网络人脸识别技术,大量样本图像训练识别模型,无需人工选取特征,样本训练过程自行学习,识别准确率可以达到99%。

人脸识别技术流程。

人脸图像采集、检测。人脸图像采集,摄像头把人脸图像采集下来,静态图像、动态图像、不同位置、不同表情。用户在采集设备拍报范围内,采集设置自动搜索并拍摄。人脸检测属于目标检测(object detection)。对要检测目标对象概率统计,得到待检测对象特征,建立目标检测模型。用模型匹配输入图像,输出匹配区域。人脸检测是人脸识别预处理,准确标定人脸在图像的位置大小。人脸图像模式特征丰富,直方图特征、颜色特征、模板特征、结构特征、哈尔特征(Haar-like feature)。人脸检测挑出有用信息,用特征检测人脸。人脸检测算法,模板匹配模型、Adaboost模型,Adaboost模型速度。精度综合性能最好,训练慢、检测快,可达到视频流实时检测效果。

人脸图像预处理

基于人脸检测结果,处理图像,服务特征提取。系统获取人脸图像受到各种条件限制、随机干扰,需缩放、旋转、拉伸、光线补偿、灰度变换、直方图均衡化、规范化、几何校正、过滤、锐化等图像预处理。

人脸图像特征提取

人脸图像信息数字化,人脸图像转变为一串数字(特征向量)。如,眼睛左边、嘴唇右边、鼻子、下巴位置,特征点间欧氏距离、曲率、角度提取出特征分量,相关特征连接成长特征向量。

人脸图像匹配、识别

提取人脸图像特征数据与数据库存储人脸特征模板搜索匹配,根据相似程度对身份信息进行判断,设定阈值,相似度越过阈值,输出匹配结果。确认,一对一(1:1)图像比较,证明“你就是你”,金融核实身份、信息安全领域。辨认,一对多(1:N)图像匹配,“N人中找你”,视频流,人走进识别范围就完成识别,安防领域。

###########################################

人脸识别分类

*人脸检测

*人脸关键点检测

*人脸验证

*人脸属性检测

人脸检测

检测、定位图片人脸,返回高精度人脸框坐标。对人脸分析、处理的第一步。“滑动窗口”,选择图像矩形区域作滑动窗口,窗口中提取特征对图像区域描述,根据特征描述判断窗口是否人脸。不断遍历需要观察窗口。

人脸关键点检测

定位、返回人脸五官、轮廓关键点坐标位置。人脸轮廓、眼睛、眉毛、嘴唇、鼻子轮廓。Face++提供高达106点关键点。人脸关键点定位技术,级联形回归(cascaded shape regression, CSR)。人脸识别,基于DeepID网络结构。DeepID网络结构类似卷积神经网络结构,倒数第二层,有DeepID层,与卷积层4、最大池化层3相连,卷积神经网络层数越高视野域越大,既考虑局部特征,又考虑全局特征。

输入层 31x39x1、卷积层1 28x36x20(卷积核4x4x1)、最大池化层1 12x18x20(过滤器2x2)、卷积层2 12x16x20(卷积核3x3x20)、最大池化层2 6x8x40(过滤器2x2)、卷积层3 4x6x60(卷积核3x3x40)、最大池化层2 2x3x60(过滤器2x2)、卷积层42x2x80(卷积核2x2x60)、DeepID层 1x160、全连接层 Softmax。《Deep Learning Face Representation from Predicting 10000 Classes》 http://mmlab.ie.cuhk.edu.hk/pdf/YiSun_CVPR14.pdf。

人脸验证

分析两张人脸同一人可能性大小。输入两张人脸,得到置信度分类、相应阈值,评估相似度。

人脸属性检测

人脸属性辩识、人脸情绪分析。https://www.betaface.com/wpa/在线人脸识别测试。给出人年龄、是否有胡子、情绪(高兴、正常、生气、愤怒)、性别、是否带眼镜、肤色。

人脸识别应用,美图秀秀美颜应用、世纪佳缘查看潜在配偶“面相”相似度,支付领域“刷脸支付”,安防领域“人脸鉴权”。Face++、商汤科技,提供人脸识别SDK。

************************************************************************************************************************************

人脸对比

1. Facenet可以直接对比2个人脸经过它的网络映射之后的欧式距离;

运行程序为facenet\src\compare.py;

2. 从LFW数据集内随机选取同一人的2人脸图,

在compare.py所在同级目录下放入要对比的人脸图像Abdullah_al-Attiyah_0001.png和Abdullah_al-Attiyah_0002.png(同一个人的2张人脸图);

3. 在终端terminal窗口中使用 命令  find ./ -name compare.py 找到compare.py所在路径,然后cd进到compare.py所在路径;

4. 输入如下命令:

 python compare.py ~/anaconda3/envs/tensorflow/models/20170512-110547/ Abdullah_al-Attiyah_0001.png Abdullah_al-Attiyah_0002.png

运行结果如下:
5. 在compare.py所在同级目录下放入要对比的人脸图像cheng.JPG和zhuang.JPG(完全不同的2人脸图)

6.输入如下命令:

python compare.py ~/anaconda3/envs/tensorflow/models/20170512-110547/ cheng.JPG zhuang.JPG

运行结果如图:

生成的是欧氏距离的二分类代价矩阵(cost matrix),cost(i, j):第i类样本对第j类的代价,cost=0,说明相同,相似度范围[0,1],

cost >= 1说明相似度为0.

compare.py 源码如下

  1. """Performs face alignment and calculates L2 distance between the embeddings of images."""
  2. # MIT License
  3. #
  4. # Copyright (c) 2016 David Sandberg
  5. #
  6. # Permission is hereby granted, free of charge, to any person obtaining a copy
  7. # of this software and associated documentation files (the "Software"), to deal
  8. # in the Software without restriction, including without limitation the rights
  9. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. # copies of the Software, and to permit persons to whom the Software is
  11. # furnished to do so, subject to the following conditions:
  12. #
  13. # The above copyright notice and this permission notice shall be included in all
  14. # copies or substantial portions of the Software.
  15. #
  16. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22. # SOFTWARE.
  23. from __future__ import absolute_import
  24. from __future__ import division
  25. from __future__ import print_function
  26. from scipy import misc
  27. import tensorflow as tf
  28. import numpy as np
  29. import sys
  30. import os
  31. import argparse
  32. import facenet
  33. import align.detect_face
  34. def main(args):
  35. images = load_and_align_data(args.image_files, args.image_size, args.margin, args.gpu_memory_fraction)
  36. with tf.Graph().as_default():
  37. with tf.Session() as sess:
  38. # Load the model
  39. facenet.load_model(args.model)
  40. # Get input and output tensors
  41. images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
  42. embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")
  43. phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")
  44. # Run forward pass to calculate embeddings
  45. feed_dict = { images_placeholder: images, phase_train_placeholder:False }
  46. emb = sess.run(embeddings, feed_dict=feed_dict)
  47. nrof_images = len(args.image_files)
  48. print('Images:')
  49. for i in range(nrof_images):
  50. print('%1d: %s' % (i, args.image_files[i]))
  51. print('')
  52. # Print distance matrix
  53. print('Distance matrix')
  54. print(' ', end='')
  55. for i in range(nrof_images):
  56. print(' %1d ' % i, end='')
  57. print('')
  58. for i in range(nrof_images):
  59. print('%1d ' % i, end='')
  60. for j in range(nrof_images):
  61. dist = np.sqrt(np.sum(np.square(np.subtract(emb[i,:], emb[j,:]))))
  62. print(' %1.4f ' % dist, end='')
  63. print('')
  64. def load_and_align_data(image_paths, image_size, margin, gpu_memory_fraction):
  65. minsize = 20 # minimum size of face
  66. threshold = [ 0.6, 0.7, 0.7 ] # three steps's threshold
  67. factor = 0.709 # scale factor
  68. print('Creating networks and loading parameters')
  69. with tf.Graph().as_default():
  70. gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_fraction)
  71. sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False))
  72. with sess.as_default():
  73. pnet, rnet, onet = align.detect_face.create_mtcnn(sess, None)
  74. tmp_image_paths = image_paths.copy()
  75. img_list = []
  76. for image in tmp_image_paths:
  77. img = misc.imread(os.path.expanduser(image), mode='RGB')
  78. img_size = np.asarray(img.shape)[0:2]
  79. bounding_boxes, _ = align.detect_face.detect_face(img, minsize, pnet, rnet, onet, threshold, factor)
  80. if len(bounding_boxes) < 1:
  81. image_paths.remove(image)
  82. print("can't detect face, remove ", image)
  83. continue
  84. det = np.squeeze(bounding_boxes[0,0:4])
  85. bb = np.zeros(4, dtype=np.int32)
  86. bb[0] = np.maximum(det[0]-margin/2, 0)
  87. bb[1] = np.maximum(det[1]-margin/2, 0)
  88. bb[2] = np.minimum(det[2]+margin/2, img_size[1])
  89. bb[3] = np.minimum(det[3]+margin/2, img_size[0])
  90. cropped = img[bb[1]:bb[3],bb[0]:bb[2],:]
  91. aligned = misc.imresize(cropped, (image_size, image_size), interp='bilinear')
  92. prewhitened = facenet.prewhiten(aligned)
  93. img_list.append(prewhitened)
  94. images = np.stack(img_list)
  95. return images
  96. def parse_arguments(argv):
  97. parser = argparse.ArgumentParser()
  98. parser.add_argument('model', type=str,
  99. help='Could be either a directory containing the meta_file and ckpt_file or a model protobuf (.pb) file')
  100. parser.add_argument('image_files', type=str, nargs='+', help='Images to compare')
  101. parser.add_argument('--image_size', type=int,
  102. help='Image size (height, width) in pixels.', default=160)
  103. parser.add_argument('--margin', type=int,
  104. help='Margin for the crop around the bounding box (height, width) in pixels.', default=44)
  105. parser.add_argument('--gpu_memory_fraction', type=float,
  106. help='Upper bound on the amount of GPU memory that will be used by the process.', default=1.0)
  107. return parser.parse_args(argv)
  108. if __name__ == '__main__':
  109. main(parse_arguments(sys.argv[1:]))

参考:

1.《TensorFlow技术解析与实战》

2. http://blog.csdn.net/tmosk/article/details/78087122

3. https://www.cnblogs.com/libinggen/p/7786901.html

4.http://blog.csdn.net/HelloZEX/article/details/78551974

5.http://blog.csdn.net/xingwei_09/article/details/79161931

http://www.taodudu.cc/news/show-6084333.html

相关文章:

  • 人脸识别技术离滥用仅一步之遥?
  • 跟我一起云计算(6)——openAPI
  • 对电影制作是一大福音!Recycle-GAN 研发出能简单转换影像新技术
  • Godot3游戏引擎入门之四:给主角添加动画(上)
  • 三维游戏开发实战--狙击僵尸(unity开发)
  • iTerm2 + oh-my-zsh + powerlevel9k 打造你喜欢的编码终端
  • 可解释机器学习(Explainable/ Interpretable Machine Learning)的原理和应用(李宏毅视频课笔记)
  • HP840G3电脑系统安装
  • 惠普z系列服务器,惠普Z8/Z6/Z4 G4新款工作站/服务器主机:Quadro P6000 48TB存储
  • HP DL580 G8 做RAID
  • 【三子棋】C语言实现简易三子棋
  • 简易三子棋
  • 三子棋~~~
  • C语言———三子棋
  • C语言:三子棋
  • C语言 三子棋
  • 简易版三子棋
  • 【小朋友的三子棋】
  • 实现三子棋
  • 三子棋(详解)
  • 【三子棋】游戏
  • 【C#】《三子棋》
  • 三子棋(简易版)
  • 来把三子棋吗?创建属于你的三子棋。
  • 【c语言】三子棋
  • 简单三子棋
  • android studio黄油刀依赖,【Android】AndroidStudio 依赖 ButterKnife 出现的空指针异常
  • Android框架之ButterKnife(黄油刀)
  • Android中的动画(二)和ButterKnife (黄油刀)
  • Android中ButterKnife(黄油刀)的详细使用

(转)TensorFlow--实现人脸识别实验精讲 (Face Recognition using Tensorflow)相关推荐

  1. TensorFlow--实现人脸识别实验精讲 (Face Recognition using Tensorflow)

    做一个人脸检测实验. 1.获取数据集(LFW) Labeled Faces in the Wild Home Menu->Download->All images as gzipped t ...

  2. Python+Tensorflow+Opencv人脸识别(任意数量人脸)

    Python+Tensorflow+Opencv的人脸识别 简单的人脸识别 准备工作 开始--先获取必要的人脸图像 训练--分类吧 识别大脸 简单的人脸识别 一直想做机器学习的东东,最近由于工作的调整 ...

  3. python爬取网易藏宝阁手机版_Python3 TensorFlow打造人脸识别智能小程序

    Python3 TensorFlow打造人脸识别智能小程序 第1章 课程导学 本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件 ...

  4. Fisherface(FLD)人脸识别实验

    Fisherface(FLD)人脸识别实验大致与Eigenface(PCA)人脸识别实验相同.主要是在模型训练方面,需要使用cv2.face.FisherFaceRecognizer_create() ...

  5. Tensorflow之人脸识别

    Tensorflow之人脸识别 环境搭建 开发工具 截取人脸 训练评估模型 识别人脸 总结 环境搭建 1.python3.5以上 2.opencv 3.pillow 4.tensorflow 5.ke ...

  6. 基于华为云的人脸识别实验

    基于华为云服务的人脸识别实验 环境配置等操作请查看华为云人脸识别服务-入门指导 此处使用的v2版本,需下载相应的SDK 实际效果 代码附上 大致思路: 1. 将图像通过人脸识别服务进行检测,返回检测信 ...

  7. TensorFlow 人脸识别实验 ImportError: No module named 'sklearn.model_selection'

    今天在运行TensorFlow 人脸识别 python项目时,报 ImportError: No module named 'sklearn.model_selection',当我使用pip inst ...

  8. 基于Python的OpenCV+TensorFlow+Keras人脸识别实现

    前言:本节要讲的人脸识别主要是借鉴了 一位研究生前辈的文章 我只是在他的基础上进行了改动,让代码能在现在的TensorFlow2.X 等的环境下运行 先看一下效果图 完整工程及源代码请点击链接下载:人 ...

  9. 入门经典综述!深度人脸识别算法串讲

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:安晟,Datawhale成员,CV算法工程师 最近看了很多人脸识别 ...

最新文章

  1. 如何高效地爬取链家的房源信息(一)
  2. 获得汉字拼音的首字母
  3. 【转】 Android - LayoutInflate用法
  4. java中垃圾收集_Java中的垃圾收集器是什么?
  5. centons7网卡配置文件使用openvswitch bridge
  6. 最优化学习笔记(七)——Levenberg-Marquardt修正(牛顿法修正)
  7. AcWing 1055. 股票买卖 II
  8. ps mysql进程_ps(Process Status)进程状态:列出当前正在运行的进程
  9. Activiti 任务的签收与委托
  10. 此操作系统不支持.netframework4.7.1
  11. easyopenjtag使用教程(最新版)
  12. 甲骨文携手各界共庆Java 20周年
  13. win10蓝屏后的解决办法
  14. android安卓远程协助控制电脑PC端
  15. 【嵌入式系统—实时操作系统】uC/OS II源码的官网下载
  16. linux佳能打印机服务,linux桌面打印机配置指南
  17. dns劫持 tplink_解决路由器DNS劫持的两种方法
  18. 大数据基础--学好大数据必看的文章
  19. Pikka 2.1.0 macOS菜单栏屏幕取色器
  20. 如何拥有一颗平常心?(KK记)

热门文章

  1. L1-084 拯救外星人 C语言
  2. 2010年全球移动行业回顾:iPad大热 中国崛起
  3. PageHelper.startPage与PageHelper.offsetPage区别
  4. Python 编写函数实现交叉合并字符串,例如:ABCD与1234的合并结果是A1B2C3D4
  5. 如何在面试中回答「你最大的缺点是什么」?
  6. r720支持多少频率的内存吗_高频内存对游戏帧数影响大吗?2400MHz和3200MHz频率内存对比实测...
  7. MyBatis框架的基础用法(增删改查)
  8. 华硕电脑 大白菜安装iso原版win7
  9. [LED]如何配置LCD背光和LED,调试方法
  10. Java分别使用zxing及qrcode-plugin生成各种样式二维码