问题:如何在手机端实现 实时、细致、时间连续的 Hair Mask 分割?
首先一个高质量的数据集是关键,
1.1.1 网络输入
为了确保帧间输出的时间连续性,一般使用的LSTM耗时太高,因此输入使用:4 channels (RGB + previous frame mask) → current frame mask
1.1.2 数据增强
为了实现高质量的视频分割效果,除了实现帧到帧的时间连续性之外,我们还需要考虑时间的不连续性,例如突然出现在摄像机视野中的人:因此在使用 previous frame mask 时需要对ground truth进行额外的处理:
1)Empty previous mask : 对应camera刚开始工作处理第一帧 和 某人忽然出现的情形
2)Affine transformed ground truth mask : 小的 transformed 使网络去传播和适应 previous frame mask ,而 大的 transformed 使网络 学会辨别不合适的 previous frame mask 然后丢弃它们
3)Transformed image : 对原始图像进行薄板样条平滑处理,以模拟相机的快速移动和旋转
After thin Plate Spline Transformation :
1.1.3 网络结构
如上图所示,网络结合了标准的 Hourglass 结构和 skip connections ,并进行以下改进:
1)使用stride大于等于4的大卷积核来检测,虽然卷积核变大但是通道数变少,所以计算量并没有变化
2)为了提高速度,我们使用大stride大幅度降低采样率并采用类似于UNet的 skip connections ,以在上采样期间恢复 low-level features(5%的iou提升)
3)为了进一步提高速度,我们优化了E-Net bottlenecks。 我们注意到,在不显着降低质量的情况下,可以以16或32的倍数更积极地压缩 layers 。
4)为了改善和提高边缘的准确性,类似于 neural matting 在网络末端以全分辨率添加了多个 DenseNet 层 (使整体模型质量提高了0.5%IOU,但是segmentation 的感知质量显着提高)
1.1.4 recoloring
主要是计算黑白LUT值,使颜色看起来更自然
1D LUTs只能控制gamma值、RGB平衡(灰阶)和白场(white point)