卷积神经网络week4笔记

xiaoxiao2021-03-01  1

1.人脸验证和人脸识别

人脸验证是1to1问题,输入图片,名字,ID等,输出是否为正确的人

人脸识别有一个包含K个人的数据库,输入一张图片,输出对应ID

 

人脸识别相对于人脸验证需要更高的精度,因为错误率会被放大K倍(K为数据库包含的人数)

 

2.one short learning

对于一个包含K个人的数据库,输入一张图片,如果输出是一个K维softmax向量的话,那么对于数据库每一次更新,都需要重新训练,而且需要改变输出的维度,因此提出了one short learning,即输出为两个图片的差异,低于一定值即可认为是同一个人。

 

3.Siamese Network

针对上述问题提出了Siamese 网络

上方和下方是完全相同的两个卷积神经网络。该网络去掉最后的softmax层,输出一个N维向量,称为图片的“encoding“”,并定义了similarity函数

4. Triplet loss

对于输出的图片的encoding,定义了 Triplet loss:

选取三元组A,N,P分别代表anchor,negative负样本,和positive正样本。满足:

同时为了使等式左右两边不为0或不相等,这里加上一个使正负样本之间差距变大:

至于triplet loss定义:

所要做的是最小化总triplet cost:

(末尾小加号表示max(x,0))

对于三元组的选择,要满足

这样算法会尽可能使d(A,P)变小,d(A,N)变大

5.面部验证与二分类

根据之前的网络进一步改进,输出1表示相同的人,0表示不同的人

可将两个向量对应元素之间差值的绝对值输入到逻辑回归单元中

还可以用公式代替作为输入:

在实际的人脸识别系统中,会对保存的图片进行预处理,存储图片编码,仅对需要识别的图片进行编码处理,如此可提高效率。

 

6.神经风格迁移

由内容图片C和风格图片S,生成最终图片G

代价函数J定义如下:

用梯度下降法最小化代价函数

 

对于内容代价函数,浅层网络趋向于检测简单的低等级特征,深层网络趋向于检测复杂的特征,我们需要使生成图片与内容图片的内容相似,因而选取中间层计算代价函数

作业中定义的内容代价函数:

 

对于风格代价函数,首先介绍gram matrix

# GRADED FUNCTION: compute_layer_style_cost def compute_layer_style_cost(a_S, a_G): """ Arguments: a_S -- tensor of dimension (1, n_H, n_W, n_C), hidden layer activations representing style of the image S a_G -- tensor of dimension (1, n_H, n_W, n_C), hidden layer activations representing style of the image G Returns: J_style_layer -- tensor representing a scalar value, style cost defined above by equation (2) """ ### START CODE HERE ### # Retrieve dimensions from a_G (≈1 line) m, n_H, n_W, n_C = a_G.get_shape().as_list() # Reshape the images to have them of shape (n_H*n_W, n_C) (≈2 lines) a_S = tf.reshape(a_S, [n_H * n_W, n_C]) a_G = tf.reshape(a_G, [n_H * n_W, n_C]) # Computing gram_matrices for both images S and G (≈2 lines) GS = gram_matrix(tf.transpose(a_S)) GG = gram_matrix(tf.transpose(a_G)) # Computing the loss (≈1 line) J_style_layer = (1/(4 * n_C * n_C * n_H * n_W * n_H * n_W))*tf.reduce_sum(tf.square(tf.subtract(GS, GG))) ### END CODE HERE ### return J_style_layer

对于gram matrix的理解可见https://blog.csdn.net/tunhuzhuang1836/article/details/78474129

风格损失函数:

其中,分别表示风格矩阵S,生成矩阵G的gram matrix,L为层数,然后与权重相乘再相加:

 

 

 

转载请注明原文地址: https://www.6miu.com/read-3850133.html

最新回复(0)