人脸辨识-day28 模型训练

实作完可以侦测人脸的哈尔特徵後,在将所有的训练资料不需要的背景利用人脸侦测的框给剪裁掉。以下图为例
https://ithelp.ithome.com.tw/upload/images/20211013/20142039rlD0ZvoZbK.png

在用模型进行训练,运用Resnet的模型架构来实作人脸辨识,将影像灰阶後放入已建立好的模型Resnet来训练,使用adam来当作优化器,学习率调成0.007(需要时要一一尝试)。

resnet_model = resnet_network((x, x, 1 ))
adam = tf.keras.optimizers.Adam(learning_rate=0.007)
model.compile(optimizer="adam", loss=mse, metrics=["mae", "acc"])

learning rate是模型学习训练级的速度,learning rate越大训练的越快,反之则越慢,因为Resnet的架构已经很深所以学习率需要调小一些,才较不容易overfitting,损失函数使用mse,但是自己定义的mse,才可以在训练时因为资料不平均的情况,要多训练已知者(Anchor)。

def mse_pred(y_true, y_pred,a1=0.1,a2=0.9):

    E1=tf.where(tf.equal(y_true, 1), K.mean(K.square(y_pred-y_true), axis=-1), 0)
    E2=tf.where(tf.equal(y_true, 0), K.mean(K.square(y_pred-y_true), axis=-1), 0)
    total_loss=E1*a1+E2*a2

return total

在训练时也要注意准确度是否有慢慢上升,如果训练资料够多,可以将资料分为训练集和验证集,利用验证集的准确度较可避免模型学习训练集学习太好,导致验证集的准确度随着epoch的增加反而下降。


<<:  Using Lombok in IDEA

>>:  冒险村28 - Validate Params

[Day14] 团队系统设计 - 重塑 Planning 会议

本篇文章来介绍「规画系统」(Planning System) 中的:Planning 会议。我相信熟...

Day 0x16 - 代码建立 (Part 2: 交易状态、退款状态)

0x1 前言 今天把交易跟退款的代码讯息写出来,接着回头看一下哪边需要调整 0x2 状态代码讯息对应...

Day-19 ADT与链结串列(linked list)

前言 链结串列(linked list)是由一连串的结构(由 struct 所建立的节点)所构成,每...

IOS-30Day To ALL

DAy30 转眼一瞬间,从第一天的新手踏上学习IOS之旅开始,到了今天第三十天,过程中曾因开学、中秋...

Day11:[资料结构]Binary Tree - 二元树

想必大家在刷leetcode时候,刷到特定的题目的时候都曾经看过这样的图片,这就是Binary t...