探讨图库行业AI图片评分系统的构建和应用
一、需求背景
图库行业,基本业务流是投稿——审核——入库——上线销售,对于国内几大头部图库公司,除代理版权图片之外,均有自己的供稿人社区。例如:
- 视觉中国(代理Getty Images):500px(摄影师社区)、爱视觉(插画师社区)
- 图虫创意(代理Adobe Stock):图虫(摄影师社区)
- 千图网:千图网(图片、插画、设计模板供稿)
- 站酷海洛(代理Shutter Stock):站酷海洛(图片、插画供稿)
对于有自己社区、供稿途径的公司来说,审核的效率是在审核、入库环节的痛点。出于降本增效的目的,审核人员一定是有限的,不可能无止境的增加。而人工审核的效率,是相对固定的。随着社区/供稿途径的发展,投稿量、每日待审图片势必会持续增加。如果审核时间长,会导致投稿用的体验差,给社区发展带来明显的负面影响。
因此,本文所述,是借助AI图片评分系统,辅助审核提高审核效率,甚至直接完成一部分审核工作,从而提高审核速度,提高投稿人的用户体验及图库每日入库图片数量。该系统已用于实际生产中,达到预期目标,现作基本思路和流程的分享。
二、目标
辅助图片审核,提高图片审核效率。
三、目标用户群
图库业务,图片审核人员。
四、基本思路
对所有社区投稿内容(非签约摄影师部分)给出AI评分,AI评分分为质量评分、美学评分,分别代表社区用户对图片的认可,以及图片色彩、构图等美学因素的评价。对于高于评分阈值的图片推送到人工审核,对于低于阈值的图片自动审核拒绝。
在审核系统中展示每张图片的质量评分、美学评分,以供审核人员参考,方便在外包审核人员审美水平参差不齐的情况下提供参考和辅助,确保审核标准的相对统一和稳定。
五、核心流程示意图
六、结构概述
整体系统开发流程分为以下几大部分:
- 数据收集
- 数据处理
- 模型训练(模型微调 Fine-tune)
- 模型评估
- 模型优化
最终会获得训练后的模型参数,模型参数结合底层模型构成AI评分应用,可对图片进行AI评分,获得质量评分与美学评分。
七、数据收集
模型训练需要收集对应训练数据集与测试数据集。为保证训练出来模型参数的通用性和准确性,需要对数据集有一些构建策略。
1. 训练数据集
从摄影师社区选取100万张图片,为保证训练模型对各种类别、风格图片的通用性,需要保证这100万张图片均匀分布于各类风格、主题,例如:人像、静物、彩色、黑白、城市建筑、人文摄影等。并且为保证评分分布的多样性,需要选取尽可能完整的用户评分分布的图片。
100万张图片取完之后,我们自然就获得了100万张图片+评分的数据对,评分作为图片的数据标签。(为防止极端评分、不客观评分的影响,每张图片分数取所有用户评分的中位数评分)该部分作为训练质量评分模型的训练数据集。
100万张图片中,抽取10万张,交由众包系统,进行人工美学评分。众包人员来自各大高校设计、艺术相关专业在校生、毕业生。从而获得10万张图片+美学评分的数据对,评分作为图片数据标签。该部分数据作为美学评分训练的数据集。
2. 测试数据集
参照训练数据及逻辑,再从摄影师社区选取1万张图片,尽可能在图片分类、评分上分布均匀,确保多样性。取图片的用户评分中位数作为质量评分参考,另通过众包平台给这1万张图片打上美学评分。该部分数据作为模型评估使用的测试数据集。
八、数据处理
1. 图片压缩
考虑到后续模型的处理效率,并且质量、美学评分更多看整体色块像素分布,不需要太多细节,因此将图片统一压缩为224*224像素。
2. 数据归一化处理
为让数据在各个维度上分布更加一致,加速优化算法更快收敛。避免模型在一个特征维度上过渡你和,提高模型泛化能力。需要对数据进行归一化处理。本方案中主要涉及两部分,一是图片像素的归一化处理,二是评分的归一化处理。
图片像素值从0~255全部转换到0~1的浮点数,质量评分、美学评分也转换计算到0~1的浮点数。
九、模型训练
1. 选择模型
本方案,总共从多种模型中选择了深度残差网络(ResNet)来进行训练。对比了ResNet50、ResNet101、ResNet152三个模型,从效率(训练速度)、评分预测准确性来进行模型评估,最终选择了ResNet50即可满足业务需求。
2. 模型微调(Fine-tune)
ResNet50是一个通用的特征提取器,先天在图像分类、物体检测、图像分割、特征提取等图像处理需求上有很好的支持。微调最终要的一步是替换模型最后一层(全连接层),因为我们期望的评分是一个连续分值,属于回归问题,ResNet50默认的最后一层是离散输出,适用于分类问题。原始ResNet50输出单元数量是1000,相当于1000个类别。我们需要改为输出单元数量为1,并通过激活函数限定保证输出的预测分值在0~1之间。
3. 损失函数
本案例中我们选择了最常用的回归损失函数均方误差(MSE),计算预测值和真实值之间的平方差的平均值。
4. 优化器
案例中考虑到综合性能,我们选择了Adam作为优化器。
5. 训练模型
上述工作完毕之后开始进行模型训练,最终输出了两个模型参数,分别用于预测图片质量评分、美学评分。
十、模型评估
使用测试数据集(测试数据集是完全与训练数据集无交集的独立数据集)对模型输出的质量评分、美学评分进行了测试。最终与人工评分整体误差控制在10%~15%。
十一、模型优化
整个模型训练的过程相对简单,期间我们进行的模型优化主要在以下几方面:
- 模型选择:在ResNet50、ResNet101、ResNet152之间,从训练效率、输出准确性综合评估。
- 训练周期评估:基于Early Stopping,尽可能降低训练时间,避免过拟合,在准确度没有明显提升的训练周期及时停止周期的增加。
- 优化器&学习率优化:由算法工程师测试不同优化器、学习率,确保最终模型评分与人工评分误差在可接受范围内。
十三、其他知识分享
因为这一块,也是现有了需求,再从需求想解决方案,其实很多技术对于产品经理的我来说都是0基础,好在有一些开发背景情况下了解得会快一些。
对于产品经理来说,一些技术知识够用即可,所谓够用即可以知道什么技术能干什么事,怎么评估不同技术和方案的好坏,能够结合技术给出解决方案,能够和技术同学更好的沟通即可。
反而不能够太过于钻一块技术,想着自己如何如何深入,人的时间经历是有限的,如何发现问题,解决问题才是这个工作的核心所在(个人所见,不一定对)。
所以在这个项目里,一些基础的知识做了些思维导图,不一定很对,没有仔细校验过,可以分享给有需要的同学。
1. 深度学习优化器
2. 深度学习损失函数
3. PyTorch
4. 开源机器学习库
5. 图像处理模型
本文作者 @Damon
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!