探讨图库行业AI图片评分系统的构建和应用

0 评论 1659 浏览 9 收藏 12 分钟

为了提升图库公司审核图片投稿的效率,我们或许可以搭建AI图片评分系统,来帮助提升审核效率。那么,图库行业的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 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!