当前位置: 首页 > 科技观察

一个头像系统的简单实现

时间:2023-03-13 03:27:27 科技观察

本文为字节教育-成人与创新前端团队成员的文章,已授权ELab发表。前言上周开家会的时候,通过“虚像”功能看到有人戴着口罩、眼镜等,于是想能不能搭建一个简单的虚像系统。大致来说分为以下几个部分:卷积神经网络(CNN)下面我来解释一下三层CNN网络模型:卷积层——提取特征卷积层的运行过程如下图所示,usingaconvolutionkerneltoscanCompletepicture:通过动画可以更好的理解卷积的过程,使用一个卷积核(filter)对图像的每个小区域进行过滤,得到这些小区域的特征值.在具体应用中,往往有多个卷积核,每个卷积核代表一种图像模式(特征规则)。如果一个图像块用这个卷积核卷积后的值很大,就认为这个图像块离这个卷积核很近。如果有N个卷积核,则认为图像中有N个底层纹理(特征),即可以用这N个基本纹理绘制一幅图像。总结:卷积层通过卷积核的滤波提取图像中的局部特征。问题:上图卷积后,边缘数据的特征提取有减少。你能想到什么方法来处理它?池化层(下采样)——数据降维避免过拟合池化层通常也称为下采样,目的是降低数据的维度,减少数据处理量。过程大致如下:上图中输入为20×20,先进行卷积采样,卷积核为10×10,采用最大池化方法,输出为一个2×2特征图。这样数据维度可以降低10倍,方便后续模块处理。总结:池化层比卷积层更有效的降低数据维度,既减少了计算量,又避免了过拟合。过度拟合是指训练误差和测试误差之间的差距过大。换句话说,模型复杂度高于实际问题,模型在训练集上表现良好,但在测试集上表现不佳。模型“死记硬背”训练集(记住训练集不适用于测试集的属性或特征),不理解数据背后的规律,泛化能力差。全连接层-输出全连接层是将我们最后一个池化层的输出连接到最终的输出节点。假设,上述CNN最后一个池化层的输出大小为[5×5×4],即5×5×4=100个节点。对于当前任务(仅识别