影楼精修-眼镜祛反光算法详解

注:本文测试图像均为AI生成;

概念

眼镜祛反光算法是一个非常有用的拍照功能,对于戴眼镜的小伙伴而言,很多时候,阳光明媚的天气,旅游拍照都会存在眼镜反光问题,非常影响照片效果,比如下面的场景:

眼镜反光区域影响了五官的完整效果,受人诟病,而祛反光的需求也就由此而生。

算法方案

目前主流的技术方案有两种:传统CV方案和AIGC方案

传统CV方案

1.基于光线反射模型的深度学习算法;

Paper: Anti-Glare: Tightly Constrained Optimization for Eyeglass Reflection Removal

论文下载链接:https://openaccess.thecvf.com/content_cvpr_2017/papers/Sandhan_Anti-Glare_Tightly_Constrained_CVPR_2017_paper.pdf

专门针对眼镜反光的专业论文只有这一篇,主要基于反射模型来构建,如下图所示。用"反射稀疏 + 人脸对称性 + 反射颜色一致性"三种强先验,通过逐步收紧约束的非凸优化,在极少迭代内从单张图像中分离眼镜反射。感兴趣的小伙伴可以去下载看一下。学术界对于通用反光祛除的论文是非常多的,这里不再赘述。这一类算法的优点是速度快,缺点也比较明显,过度依赖先验假设约束,效果一般,自适应能力差,比如假设人脸左右近似对称,在实际应用中,往往是大角度侧脸,这种左右近似对称就不太合理了。

2.基于GAN进行端到端训练,得到眼镜反光祛除效果;

这个方案典型案例就是像素蛋糕,厦门真景科技在24年申请了对应的专利:一种基于深度学习的图像去反光方法,详细介绍了眼镜反光数据集的构建,并以端到端的GAN网络进行了眼镜反光祛除的模型训练。像素蛋糕的效果在可编辑图像生成大模型出来之前,一直是最好的。

方案思路:

①数据集构建

准备一些不戴眼镜的人脸数据+眼镜素材,根据3D人脸建模将眼镜素材贴到人脸上,构建大量戴眼镜的人脸数据;

在眼镜区域模拟镜面反射,将反光以不同的图层混合模式叠加到眼镜区域,同时,对反光图层区域进行模拟退化降质处理,以此来构建大量的戴眼镜无反光原图和有反光效果图,组成海量数据对;

②祛反光网络

有了成对数据,使用类似Pix2Pix的GAN网络来进行祛反光模型训练,LOSS使用VGG、L1和GAN损失即可。

这种方案的难点就是成对数据集的构建,优点是速度快,基本上像素蛋糕的处理速度在毫秒级,算法本身也可以做到手机端实时处理,同样适合手机场景使用。

市面上像素蛋糕和百度网盘AI云修大概率都是基于GAN网络技术方案来构建的,对应效果举例如下图所示:

从效果上来看,像素蛋糕效果最佳,百度效果一般,估计是数据集分布不够或者数据集太少。

AIGC方案

目前基于图像编辑的大模型,基本都可以实现眼镜祛反光效果,可用的大模型如:Banana,Flux kontext, Qwen image edit等;

以Flux kontext为例,Prompt描述:Removal of reflections on eyeglasses,Other content remains unchanged.

中文prompt:祛除眼镜反光,其他内容保持不变

我们使用ComfyUI进行测试,效果举例如下:

对于这一类,如果要保证比较稳定的效果,单单依靠Prompt还是不太够,最稳妥的方法是训练一个lora,来减少抽卡问题。以flux kontext和qwen image edit为例,训练Lora的代价极低,仅需要10-20个数据对(有眼镜+反光,有眼镜+无反光),使用AI Toolkit工具即可完成训练。

AI Toolkit:https://github.com/ostris/ai-toolkit

基于图像编辑大模型的方案,有以下几个问题:

①模型本身无法处理较高分辨率,一般在2048以下,现有方案大多是结合超分来提升分辨率,但最终效果与高分辨率的原图在人物细节上还是有比较大的差异,尤其是人脸面积占比较小的场景,人脸细节还原度较差。

②效果图与原图在细节以及颜色上可能存在偏差,比如qwen image edit存在漂移等问题,直到最新的qwen image edit2511也只是减弱了这个问题,并没有完全解决。

③处理速度较慢,资源消耗大,单卡24G 4090一般在10s+,量化模型造成细节损失,原版的qwen image edit 24G显存无法运行。

④对于多人合照场景,每个人的人脸去反光(或其他编辑)效果不可控。

当然,该方案最大的优点是效果好,整体效果观感要超越传统CV效果;

这里给出一些实例对比:

实例一

兼顾性能和效果的方案

这里本人给出一种个人建议方案:

1.数据集构建

①准备200张带有眼镜反光的图像,裁剪出人脸区域并做对齐,尺寸512×512,然后进行StyleGan训练,得到眼镜反光人脸生成器,生成5W张有眼镜反光的人脸数据集;当然,也可以直接由图像生成大模型来生成数据集,但时间成本较大,不可控性较强;

②准备10对有-无反光的戴眼镜数据对,裁剪512×512人脸区域,训练Flux kontext lora,得到眼镜反光祛除lora模型;

③用Flux kontext+反光祛除lora,批量处理①中的5W有眼镜反光人脸数据集,人工筛选得到符合要求的有眼镜反光-无眼镜反光的数据对;

2.模型训练

设计Gan网络模型(根据场景需求,处理高清图片的场景可基于transformer设计稍大的模型,处理手机端图像或视频,可使用轻量GAN模型),训练得到人脸区域眼镜反光祛除模型;

3.模型使用

对任意一张用户图,检测人脸,对每个人脸区域进行裁剪对齐,分别送入祛眼镜反光模型,得到人脸祛眼镜反光效果,设计人脸区域Mask蒙版(或眼镜检测分割得到精确眼镜区域蒙版),将效果图和原图进行融合,至此,实现任意人脸个数的眼镜反光祛除效果。

优点:

使用StyleGan构建眼镜反光人脸生成器,可无限生成反光数据,结合Lora模型,可构建高质量的成对数据集;

基于GAN构建模型,避免了大模型的耗时和资源占用问题;

相关推荐
蓝色汪洋2 小时前
经典修路问题
开发语言·c++·算法
墨风如雪2 小时前
告别抽卡!小红书联合复旦开源新神器,AI绘图终于能指哪打哪了
aigc
吾在学习路2 小时前
【CVPR 2018最佳论文】Squeeze-and-Excitation Networks
人工智能·深度学习·神经网络·机器学习
csuzhucong2 小时前
122魔方、123魔方
算法
小黄人软件2 小时前
豆包AI手机是未来所有带屏设备的方向,包括POS机。豆包AI手机需要很强的本地算力吗?不需要。
人工智能·智能手机
Salt_07282 小时前
DAY 47 Tensorboard的使用介绍
人工智能·python·深度学习·机器学习
木卫二号Coding2 小时前
第七十篇-ComfyUI+V100-32G+运行SD3.5-文生图
人工智能
Salt_07282 小时前
DAY 40 早停策略和模型权重的保存
人工智能·python·算法·机器学习