10.4 人脸检测

http://blog.csdn.net/laingliang/article/details/52985527                       神经网络和深度学习


不是所有东西需要记录下来,写在纸上,发自内心的自觉才是应该做到的,没做一件事我们应该有做它的意义,人生是一个还债的过程不是为了享乐。

纳什均衡是指博弈中这样的局面,对于每个参与者来说,只要其他人不改变策略,他就无法改善自己的状况。纳什证明了在每个参与者都只有有限种策略选择并允许混合策略的前提下,纳什均衡定存在。以两家公司的价格大战为例,价格大战存在着两败俱伤的可能在对方不改变价格的条件下既不能提价,否则会进一步丧失市场;也不能降价,,因为会出现赔本甩卖。于是两家公司可以改变原先的利益格局,通过谈判寻求新的利益评估分摊方案,也就是纳什均衡。


(一)

实践项目:

人脸检测:

一、数据集

二、数据预处理

     需要将检测所使用的数据集校准为和预训练模型所使用的数据集大小一致

进入 facenet 目录,用如下命令运行脚本:
python src/validate_on_lfw.py datasets/lfw/lfw_mtcnnpy_160 models 

def main(args): 
 with tf.Graph().as_default(): 
 with tf.Session() as sess: 
# 1. 读入之前的 pairs.txt 文件
# 读入后如[['Abel_Pacheco', '1', '4'] 
# ['Akhmed_Zakayev', '1', '3'] ['Slobodan_Milosevic', '2', 'Sok_An', '1']] 
pairs = lfw.read_pairs(os.path.expanduser(args.lfw_pairs)) 
# 获取文件路径和是否匹配的关系对
paths, actual_issame = lfw.get_paths(os.path.expanduser(args.lfw_dir), 
 pairs, args.lfw_file_ext) 
# 2. 加载模型
print('Model directory: %s' % args.model_dir) 
meta_file, ckpt_file = facenet.get_model_filenames(os.path.expanduser 
(args.model_dir)) 
print('Metagraph file: %s' % meta_file) 
print('Checkpoint file: %s' % ckpt_file) 
facenet.load_model(args.model_dir, meta_file, ckpt_file) 
# 获取输入、输出的张量
images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0") 
embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0") 
phase_train_placeholder = tf.get_default_graph().get_tensor_by_name 
("phase_train:0") 
image_size = images_placeholder.get_shape()[1] 
embedding_size = embeddings.get_shape()[1] 
# 3. 使用前向传播来验证
print('Runnning forward pass on LFW images') 
batch_size = args.lfw_batch_size 
nrof_images = len(paths) 
nrof_batches = int(math.ceil(1.0*nrof_images / batch_size)) # 总共的批次数
emb_array = np.zeros((nrof_images, embedding_size)) 
for i in range(nrof_batches): 
start_index = i*batch_size 
end_index = min((i+1)*batch_size, nrof_images) 
paths_batch = paths[start_index:end_index] 
images = facenet.load_data(paths_batch, False, False, image_size) 
feed_dict = { images_placeholder:images, phase_train_placeholder:False } 
emb_array[start_index:end_index,:] = sess.run(embeddings, 
feed_ dict=feed_dict) 
# 4. 这里计算准确率和验证率,使用了十折交叉验证的方法
tpr, fpr, accuracy, val, val_std, far = lfw.evaluate(emb_array, 
actual_issame, nrof_folds=args.lfw_nrof_folds) 
print('Accuracy: %1.3f+-%1.3f' % (np.mean(accuracy), np.std(accuracy))) 
print('Validation rate: %2.5f+-%2.5f @ FAR=%2.5f' % (val, val_std, far)) 
# 得到 auc 值
auc = metrics.auc(fpr, tpr) 
print('Area Under Curve (AUC): %1.3f' % auc) 
# 得到等错误率(eer)
 eer = brentq(lambda x: 1. - x - interpolate.interp1d(fpr, tpr)(x), 0., 1.) 
print('Equal Error Rate (EER): %1.3f' % eer) 
智能聊天机器人的发展经历了 3 代不同的技术。
● 第一代是基于特征工程。有大量的逻辑判断,如 if then; else then。
● 第二代是基于检索库。给定一个问题或者聊天,从检索库中找到与已有答案最匹配的
答案。
● 第三代是基于深度学习。采用 seq2seq+Attention 模型,经过大量的训练,根据输入生
190 ff 第二篇 实战篇
成相应的输出。

下面我们就来看看基于深度学习的聊天机器人的 seq2seq+Attention 模型原理和构建方法

斯坦福大学人工智能实验室的李飞飞教授在 2017 年极客大会上曾经讲过,实现人工智能
要有 3 个要素:语法(syntax)、语义(semantics)和推理(inference)

看图说话模型采用的是编码器-解码器框架,先将图像编码成固定的中间矢量,然后解码成
自然语言的描述。编码器-解码器框架如图 12-3 所示。这里编码器采用的是 Inception V3 图像识
别模型,解码器采用的是 LSTM 网络。


你可能感兴趣的:(机器学习,python3,Tensorflow)