本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
美颜功能大多数都是用来美化图片和视频的,而视频美颜SDK所实现的美颜效果通常是以视频形式为主。一个视频美颜SDK中可以包含多种功能,也可以应用多种特效算法,毕竟现在所面向的平台和用户都比较广泛,所以需要提前做好相应的“准备”。本文来简单分享下基于抠图的人像特效算法。 在这里需要提到两种算法,一种是CNN,另一种是FCN,关于这两个名词的具体含义在这里就不再继续展开,可以理解的是这两种算法是专门针对人像抠图的。在人像抠图过程中,会用到CNN或FCN,只不过CNN相对是一种比较传统的算法,所以选择FCN更多一些。 两者之间的优缺点对比 优点: 1. 比起CNN更加高效,可以避免由于使用像素块而带来的重复存储和计算卷积的问题。 2. 可接受任意大小的输入图像,并不要求所有的训练图像和侧视图像尺寸相同。 缺点: 1. 无法充分考虑像素与像素之间的关系,丢失了对空间信息的考量。 2. 无法得到足够精细的结果,最终采样结果比较模糊和平滑,对图像中的细节部分不够敏感。 部分参考代码如下 current = image for i, name in enumerate(layers): if name in ['conv3_4', 'relu3_4','conv4_4', 'relu4_4', 'conv5_4', 'relu5_4']: continue kind = name[:4] if kind == 'conv': kernels, bias =weights[0][0][0][0] # matconvnet: weights are [width,height, in_channels, out_channels] # tensorflow: weights are [height,width, in_channels, out_channels] kernels =utils.get_variable(np.transpose(kernels, (1, 0, 2, 3)), name=name +"_w") bias =utils.get_variable(bias.reshape(-1), name=name + "_b") current =utils.conv2d_basic(current, kernels, bias) elif kind == 'relu': current = tf.nn.relu(current,name=name) if FLAGS.debug: utils.add_activation_summary(current) elif kind == 'pool': current =utils.avg_pool_2x2(current) net[name] = current return net 基于抠图的人像特效算法从字面上来看可能还是比较难理解,比如景深模糊的展现效果,就是以抠图为核心的人像特效算法,除此之外还有马赛克之类特效都是基于此实现的。 从应用场景方面来看,视频美颜SDK所对应的偏动态更多一些,换句话说视频美颜SDK应用在直播或短视频这一类场景后,需要着重考虑的算法和机制可以说是重点部分了。 由此可见,随着人们不断增强的美颜需求,美颜效果的选择和美颜所面对的用户群体也随之发生了很大变化,这样一来,视频美颜SDK在开发和算法选择等方面都要多加考虑才行。 声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。
|