本周作业分为了两个部分:
- 人脸识别
- 风格迁移
Part1:人脸识别
训练FaceNet很不现实,所以模型已经都训练好了,我们只是学习一下loss函数,然后调用模型来进行简单的识别而已。
先计算triplet_loss函数,分为4步:
1 | # GRADED FUNCTION: triplet_loss |
进行单个人脸验证:
1 | # GRADED FUNCTION: verify |
进行人脸识别:
1 | # GRADED FUNCTION: who_is_it |
Part2:风格迁移
模型也都是训练好的了,用的是VGG-19的网络。这里只是体验一下cost function的实现罢了。
计算J_content(C,G)
$$J_{content}(C,G) = \frac{1}{4 \times n_H \times n_W \times n_C}\sum _{ \text{all entries}} (a^{(C)} - a^{(G)})^2 $$
在这过程中需要把三维的矩阵先展开成2维的矩阵进行计算(虽然不展开也是可以计算的,但是风格损失函数需要计算)
1 |
|
计算J_style(S,G)
需要把三维矩阵展开,然后转置,做矩阵乘法,才能得到相关系数矩阵
1 | # GRADED FUNCTION: gram_matrix |
$$J_{style}^{[l]}(S,G) = \frac{1}{4 \times n_{C}^{2} \times (n_H \times n_W)^2} \sum_{i=1}^{n_C} \sum_{j=1}^{n_C} (G^{(S)}_{ij} - G^{(G)} _ {ij})^{2} $$
1 | # GRADED FUNCTION: compute_layer_style_cost |
1 | # GRADED FUNCTION: total_cost |
1 | ### START CODE HERE ### (1 line) |
1 | def model_nn(sess, input_image, num_iterations = 200): |