前言
低分辨率/低质量 图像信息丢失严重,基于低质量数据集训练的模型往往不能达到预期效果。此外,若模型是基于高分辨率(High Resolution, HR)图像进行训练的,而真实业务场景中的数据来源质量非常低,高分辨率与低分辨率(Low Resolution, LR)数据之间存在着domain mismatch的问题,效果也会大打折扣。下面总结了一些处理低分辨率/低质量图像识别的常见思路。
方案1:限制输入图片分辨率(这还用你说- -)
控制上传图像质量;若图像来源可控,即可通过某种反馈机制让用户输入较高清图像,则直接用图像质量评估模型 reject 掉 low-res/low-quality images 即可(回归图像的 mean opinion score,或直接做 binary classification 均可)。例如京东/淘宝的图搜要求上传图片不得小于 200px(PS:从业务场景出发,选择成本最低的可行性方案,永远是工业界最适合方案,而不是折腾 fancy 的模型),实用指数:★★★★★
方案2:混合分辨率训练
Mix-size training;即混合 LR 与 HR 图像训练,使得模型能够学习到对 low-res/low-quality 场景下更有效的信息,常见操作方法有以下几种,实用指数:★★★★
- 若原图大小为 w*h,先 downsample 到w / s, h / s 大小,然后再 resize 回原图大小,再混合训练构建image pyramid 来使得模型对multi-scale信息感知更友好.
模型层面做改进来使得对multi-scale信息感知更友好:例如类似 FPN/Res2Net/SKNet/Inception 结构等等
方案3:教师网络指导学生网络的方式
高分辨图像训练出一个教师网络,然后指导训练出一个低分辨率图像的学生网络。 Knowledge Distillation:即先用 HR images 训练 teacher model,再基于 LR images 训练 student model,常见的 KD 算法均可(基于logits也好,基于 hints 也好),然后固定teacher model的权重,分别提取HR与LR的特征,以 L2 loss 作为KD loss,来使得来自不同 domain(LR VS HR)的 feature 能够更接近,整体的 loss 为 Cross Entropy 与 L2 loss 的加权。实用指数:★★★★
方案4:超分辨率的方式
Super-resolution/Image Deblurring 做预处理;即先人工构造 HR-LR image pairs,训练超分模型。识别时,先过一个 超分/去模糊 模型,再过分类,听起来似乎 work,但维护成本高,且识别模型精度依赖于 超分/去模糊 模型的输出,且无法保证 超分/去模糊 模型输出的信息是否对分类任务是有帮助的。实用指数:★★
方案5:修改网络的输入尺寸
这个方案是我自己想的,现有的人脸识别模型输入尺寸一般为112112像素,如果实际场景中的人脸都是很小的尺寸(例如:3030甚至更小的分辨率)。可以尝试将网络的输入设置小一些然后减少特征图下采样的操作(即stride为2的卷积)。PS:因为输入本来就很小,下采样太多,到最后特征图尺寸就几乎没了。
|