11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

图像技术在上亿规模实拍图片中的应用(算法好文)

  • 2021-06-21
  • 本文字数:6029 字

    阅读完需:约 20 分钟

图像技术在上亿规模实拍图片中的应用(算法好文)

背景

闲鱼作为一个自由的商品和内容分发市场,每天有上百万的用户图片上传,其中不乏图片重复,图片描述内容不明确、图文不符等低质量的商品;也有各种搞笑、抖机灵等倒流的内容;还有色情、黑产等违规或违法灰色地带。如果让这些低质的商品和内容都正常流入每天日常的商品展示中,不但会影响用户的交易效率,还会降低产品在市场中的口碑和价值,甚至增加被监管治理和叫停的风险,其中较为典型的问题包括:


  • 图片内容重复:在闲鱼日常的发布内容中,有些卖家为了增加自己商品的曝光机会用不同的描述和图片创建多个相同商品进行投放,这时文本的表述可能完全不同,但商品图片看上去基本一样如图 1 所示:


null

图 1.相同商品图片


  • 图文内容不一致:部分图片内容与所售商品描述不一致,在排序时这些商品与其他一致的商品混排在一起时会影响整体搜索的体感和效果,如图 2 所示;


null

图 2.商品图片和文本描述差异


  • 图片内容质量:用户上传的图片不是所有图片都适合做商品图片展示的,例如商品包装,商品局部,非商品图片,发票单据,商品描述图等,如图 3;


null

图 3.不适合的商品图片


  • 违规:一些卖家为了吸引买家的注意,会把一些如美女、性感和搞笑等违规图片作为商品主图导流,严重影响闲鱼的品牌价值和公平优良的交易环境,如图 4。


null

图 4.美女首图商品


上述问题都可以归结为和视觉技术所涉及的范围,实际上互联网公司已经大规模的应用相关技术解决实际问题,例如阿里、百度、腾讯等头部公司都有自己的视觉算法团队,每年各大顶会也都是常客。大家不但探索相关的前沿技术,同时将其转化应用到实际的产品中,如图像特征在拍立淘、百度识图中的应用,图像检测直接运用在自动驾驶和工业质检中,图像识别相关技术分别在审核、短视频、广告等业务得到广泛的应用。本文针对闲鱼产品中涉及的部分问题介绍如何利用视觉技术解决,例如图片内容本身非商品或是色情等违规的物料都是可以利用图像分类,图像特征等方法去解决,以下主要从以下几个部分介绍:


  1. 构建大规模图片分类模型,学习闲鱼产品中的图片分布特征;

  2. 基于分类模型学习图像比对特征;

  3. 组合图像分类和图像特征解决实际问题;

构建大规模图片分类模型

图像分类模型是视觉模型的基础,检测,分割等视觉问题都依赖基础的图像的分类模型。在闲鱼场景构建图像分类模型存在以下几个难点:


  1. 图片大部分是用户上传,图像质量偏低,增加识别难度;

  2. 图片内容不限于商品类目本身,涵盖很多和商品不相关其他类别,整体类别定义困难;

  3. 闲鱼商品的 title 是由用户自己填写的,结构化信息参差不齐,同时还包含很多口语化的噪声;

  4. 同类的商品包含的噪声图片很大,不能直接训练

  5. 数据标注成本高,短时间内不能有效覆盖大部分数据;


我们这里要求不直接识别出众多的具体商品类目名称,只要可以区分彼此即可,对于需要重点识别的类别,我们采用训练好的特征进行样本挖掘,整体流程如图 5 所示,包括基础图像特征学习,聚类样本构建,和分类模型的训练:

null

图 5.半自动图像分类识别

基础图像特征学习

基础图像模型主要是为了学习数据的整体分布,在尽可能提高样本覆盖的情况下发掘较简单的样本使得模型可以冷启动。首先根据线上的 query 请求的展示结果,收集高频 query 下的点击商品作为候选集合,因为有用户误点击和高点击导流样本存在,所以需要过滤掉点击率偏低和偏高的商品样本,同时需要语义相近的 query 进行去重,经过上述几步就构成了图像分类的基础数据。模型训练采用 resnet101 模型,对比了 softmax 和 arcface[5]两种损失的效果,结果 softmax 好于 arcface,原因可能是因为样本不纯 arcface 很难收敛到较好的目标。

聚类样本构建

有了基础模型后,接下来需要收集闲鱼类目样本。首先收集闲鱼每个类目下商品样本,这步可以把语义概念控制在一定的范围内,接下来根据 title 中的中心词的命中率把该类目下下样本划分为不同的子类目,每个子类目下的样本都有明确的语义含义,但是图片存在较大变化如上图 8-1 所示“詹姆斯”这个子类目下的样本存在多个品类的情况,这类样本无法直接训练。这时我们可以利用上面得到的基础图像特征对子类目下的样本提纯,即在每个子类目类做聚类,把互为图像特征余弦距离最近的样本聚合成新的类别,过滤掉样本较少的类目,最终就得到了我们训练闲鱼场景下的图像分类样本,针对不同的距离阈值,我们分别选取了 4.6K,7.4K,12K 三组类目细分类,人工评估效果 7.4K 较为理想,其他两个对样本的划分要么太粗要么太细。

分类模型的训练

基于之前的分类模型参数,训练新的类目标签,采用 batchsize=256, centercorp=224, 加入随机 crop,镜像,cutout 预处理,学习率采用 cos 学习率同时在一定轮数加入热重启,使模型在后期还能进一步提升准确率,最终验证集合 top@1 准确率 74%,基本达到了应用要求。


为了能识别票据,文字图,建筑物,人物等特定类别,我们需要对这些类别做定制的样本挖掘:通过已经训练好的模型抽取特征搭建商品库的检索系统,收集需要特殊处理的样本进行最紧邻查找,对查找后的结果卡阈值并再次进行检索继续扩充需要的样本集合如图 6,最终合并这些类目与原有类目一起训练。


null


图 6.特定类目样本挖掘

基于分类模型学习图像比对特征

比对特征主要是用来判断商品是否同款,过滤掉或打散图片重复的商品。由于系统里每个商品已经单独定义,所以这里采用 deepid[1][2]][3]方案,训练同款特征,但直接用每个商品的图片训练存在两个问题:1.每个 id 类别存在变化较大的多张图片并不能直接使用所有图片;2.每个 id 类目的样本稀少,直接训练很难收敛。


针对上述问题 1 我们有个先验的假设即用户上传的多张图片中与商品主要意图相关的图片占大多数,所以我们可以借鉴之前聚类的思路,在同一个商品的多张图片中进行聚类,选取样本最多的类别为我们的候选集合,如果类别间的样本相差不大则认为该商品不适合做训练应丢弃。


为了每个类别都可以尽可能挖掘到同款样本,我们选取在线上同一个 query 下有交易行为的商品和点击率较高的商品作为候选集合同时对每个商品内部进行聚类保证样本纯度,在实验时我们发现品牌类 query 或品类 query 下的样本存在较大的多样性,如“安踏”、“华为手机”、“电动车”,即使点击行为较为稠密,但可能属于不同 sku 的商品,所以我们需要对 query 进行限制,尽量保证 query 到单独 sku 粒度消除歧义性,如“华为 p40 pro”、“极米投影仪 h3”、“小牛电动车 G2”。


有了上述的样本我们就可以训练 deepid 模型,这里采用人脸常用的 arcface loss[5], backbone 选择之前的分类模型和初始化参数,开始阶段先用较小 margin 参数,然后遍历 scale 参数,经过选取合适的 margin 和 scale 后训练模型到饱和,接下来增大 margin 参数同样选取合适的 scale 参数训练,经过 3 次这样的迭代使模型在不过拟合的情况下训练,最终相款识别准确率 95%, 商品 sku 内召回 79%。


基于同款特征也可以用于在相同识别的场景中,即利用同款特征做召回再利用 sift 特征做最后的几何校验,可以实现对旋转、部分裁剪和遮挡的相同图识别。

组合图像分类和图像特征解决相关性和多样性问题

闲鱼搜索相关性问题

针对用户提交商品图片多样性的特点,为了提升搜索体感,采用首图相关性聚类的方式重排检索结果如下图 7-1 示例,以“锐鲨”搜索 query 为例:图 7.1 举例对照组检索结果,可以看出整体队列都是和便携工具相关的商品,但也存在包装(坑位 1,6)和歧义(坑位 3)的体验不好的 case,通过上述的商品图像分类模型对商品多张图片进行预测并聚类,我们可以得到每个商品的主要的 top3 类别,随后统计整个队列的 top 类别做为该队列置信类别,最后根据置信度分档重排,结果参考图 7.2 看到 top 商品都是移动工具相关。另一个 case 如图 8.1 所示 query 为“詹姆斯”经过图像特征重排球鞋这个主要类别被重排到前排如图 8.2,其他一些不太相关的类别被降权。线上的 case 中,也会有 badcase,例如有些 query 如“华为”,“苹果”存在多类别是否需要重排需要根据用户反馈进行优化,重排的实验结果如下,点击率还是有明显的提升。


null

图 7.1.query="锐鲨" 对照组 top6 结果


null

图 7.2.query="锐鲨"图像特征重拍实验组 top6 结果


null

图 8.1.query="詹姆斯" 对照组 top6 结果


null

图 8.2.query="詹姆斯"图像特征重拍实验组 top6 结果

闲鱼 Feed 多样性问题

多样性是推荐效果的一个重要的指标,相关结果太集中会影响用户的体验。闲鱼用户定义的商品特殊性,在多样性问题上很难用一种方法解决,需要利用类目,文本描述,商品图片等多维度共同解决,其中商品图片多样性问题解法与上面搜索一致性问题有些相似。如下图 9.1 所示,同为“华为 mate Xs”一款商品,用户定义类目可能属于不同类别,所以直接用户定义类目无法做多样性处理,但从图片维度我们可以发现这些商品有相同的元素即商品包装图片, 所以可以利用图像分类模型分别对每个商品图片进行预测类目实现打散。


null

图 9.1 视觉同类但提交类目不同的 case 举例


首先需要过滤掉人物和文字类目这些图像表示一致但语义变化很大的商品不做处理,之后对商品的多张商品图进行类目预测并对预测后的置信度 top1 的类目进行聚合,具有相同类目的商品即为将要去重的候选集合,实际中发现有些相同商品的 top1 类目并不相同,可能是在 top3 中,但直接使用 top3 去重影响面会很大,会带来不少 badcase,所以这里采用迭代两次方式即对 top1 聚合后的结果 top3 类目投票,选取具有非共现但投票过半的类目进行第二次去重如 9.2 所示,经过两次去重后可对文本和类目不好去重的 case 有效的补充。

null

图 9.2 图像多样性去重逻辑


上线后各项指标都有提升

相同商品图片去重

闲鱼商品中有的卖家为了增加自己的曝光会创建多个商品并采用相似的描述和视觉上变化很小的商品图片,另外还有一些卖家会使用相同原始的商品图片,这类商品如果出现在同一个搜索结果页会带来不好的用户体验,也会降低商品的交易效率。这里利用之前图像对比特征搭建图像搜索引擎,索引方式采用通用的乘积量化的方法构建 1.2 亿商品库,整体流程如下图 10.1。


每天实时的商品相对全库比例较小,我们不需要做到实时精准去重,所以我们采用离线的去重方案:首先每天新增商品会以增量的方式入库,在构建索引的同时会同步当前的商品在架、是否有效等状态过滤掉无效的商品,然后利用乘积量化的方法构建离线去重检索引擎,每天新增的商品会经过去重检索引擎找到与库里相同的商品并更新到线上的 KV 存储中,由于原有库中的商品和新商品产生了新链接关系,所以还需要根据新的链接匹配关系去更新 KV 存储中原有库中该商品的相同商品列表。线上的请求在完成召回后,会根据召回的商品 id 去 KV 存储中实时查询对应的相同商品,最后打散逻辑会对当前页中命中的相同商品进行分页打散完成去重。


null

10.1 商品离在线去重方案

不合规商品过滤

闲鱼中的不合规商品主要包括美女首图,性感首图,搞笑图片,人体局部等,但实际出售的商品和这些商品图片没有任何关系,卖家使用这类图片主要是为了吸引用户的注意骗取流量。采用普遍使用的审核模型、OCR 识别可以过滤掉大多数色情、涉黄、涉政和暴恐等非法内容。然后还有些违规类的商品如图 11.2 和搞笑、段子类的内容如图 11.3 影响正常的交易市场,这类问题无法直接用审核等模型过滤掉。


null


11.1 违规商品识别流程


针对与上述问题,我们设计了违规商品识别的方案如图 11.1 所示,因为涉及到线上业务策略这里不做详细描述,新增商品会经过两个逻辑判断是否违规:

  1. 首先识别和人相关的主图,利用通用分类给所有商品图片打标签,然后过滤掉语义不一致的商品,但这是会有一定的 badcase 如图 11.4,这里的用户晒单是正常的商品,所以我在过滤后还需判断是否有同款的商品,如果识别同款,则会通过该商品;

  2. 搞笑、段子类的图片一般都为热门图片,虽然会有可能再编辑,但主题内容是没变化的,这类图片通过建立违规内容库利用相同识别可以得到解决,如图 11.1 中的相同图识别分支;


null

11.2 违规商品示例

null

11.3 非商品搞笑、段子等示例

null

11.4 人物首图正常商品示例

总结

本文主要介绍了利用视觉技术中的分类,特征学习解决实际用户分发商品中的应用,然而闲鱼用户自定义的商品和内容的多样性使得在审核、治理和结构方面给我们带来了很多挑战,单纯利用一种模态和内容很难把所有问题都解决,所以在实际应用中会综合多种方案和技术组合求解,例如在识别类目问题上,不但需要利用文本、图像内容提升识别精度,还在产品侧引导用户帮助完成商品结构化;对于样本提纯不但可以标注,还可以充分合理利用用户的反馈行为帮助我们;另外检索系统、数据加工流程和同步管理等工程化是最终模型体现价值的关键,光只有单纯几个模型并不能直接解决线上问题;在违规治理问题上正所谓“魔高一尺,道高一丈”,有些不合规用户总钻平台的漏洞为自己牟利,与他们的斗智斗勇是个长期的过程,也需要技术不断迭代和超越。感谢合作团队:闲鱼结构化团队,闲鱼架构团队,达摩院、审核部分等兄弟团队给与的人力和技术支持。

引用

[1]Yi Sun,Xiaogang Wang,Xiaoao Tang. Deep Learning Face Representation from Predicting 10,000 Classes .CVPR 2014

[2]Yi Sun[1], Xiaogang Wang[2], Xiaoou Tang[3]. DeepID2: deep learning face representation by joint identification-verification. CVPR 2014

[3]Yi Sun[4], Xiaogang Wang[5], Xiaoou Tang[6]. Deeply learned face representations are sparse, selective, and robust. CVPR 2014

[4]Yi Sun[7], Ding Liang[8], Xiaogang Wang[9], Xiaoou Tang[10]. Face Recognition with Very Deep Neural Networks. CVPR 2015

[5]Jiankang Deng[11], Jia Guo[12], Niannan Xue[13], Stefanos Zafeiriou[14]. ArcFace: Additive Angular Margin Loss for Deep Face Recognition. CVPR 2018

References

[1]Yi Sun: https://arxiv.org/search/cs?searchtype=author&query=Sun%2C+Y

[2]Xiaogang Wang: https://arxiv.org/search/cs?searchtype=author&query=Wang%2C+X

[3]Xiaoou Tang: https://arxiv.org/search/cs?searchtype=author&query=Tang%2C+X

[4] Yi Sun: https://arxiv.org/search/cs?searchtype=author&query=Sun%2C+Y

[5]Xiaogang Wang: https://arxiv.org/search/cs?searchtype=author&query=Wang%2C+X

[6]Xiaoou Tang: https://arxiv.org/search/cs?searchtype=author&query=Tang%2C+X

[7]Yi Sun: https://arxiv.org/search/cs?searchtype=author&query=Sun%2C+Y

[8]Ding Liang: https://arxiv.org/search/cs?searchtype=author&query=Liang%2C+D

[9]Xiaogang Wang: https://arxiv.org/search/cs?searchtype=author&query=Wang%2C+X

[10]Xiaoou Tang: https://arxiv.org/search/cs?searchtype=author&query=Tang%2C+X

[11]Jiankang Deng: https://arxiv.org/search/cs?searchtype=author&query=Deng%2C+J

[12]Jia Guo: https://arxiv.org/search/cs?searchtype=author&query=Guo%2C+J

[13]Niannan Xue: https://arxiv.org/search/cs?searchtype=author&query=Xue%2C+N

[14]Stefanos Zafeiriou: https://arxiv.org/search/cs?searchtype=author&query=Zafeiriou%2C+S


本文转载自:闲鱼技术(ID:XYtech_Alibaba)

原文链接:图像技术在上亿规模实拍图片中的应用(算法好文)

2021-06-21 07:001042

评论

发布
暂无评论
发现更多内容

架构师训练营第 1 期 -Week7 - 性能优化一学习总结

鲁小鲁

极客大学架构师训练营

Week3 代码重构

贺志鹏

极客大学架构师训练营

Week 7 作業

Christy LAW

第三周-课后练习

jizhi7

第 7 周 听说你有好几个线程

Pyr0man1ac

第七周 性能优化 作业二

应鹏

极客大学架构师训练营

week3- 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业

未来已来

装饰器模式

猴子胖胖

设计模式 Go 语言

架构师训练营week07作业

IT老兵重开始

week3-作业二:根据当周学习情况,完成一篇学习总结

未来已来

第 7 周 作业

Pyr0man1ac

Week 7 學習總結

Christy LAW

架构师训练营 1 期 - 第七周作业(vaik)

行之

极客大学架构师训练营

7.2全链路压测的挑战

张荣召

第七周总结

Geek_ac4080

【架构师训练营第 1 期 07 周】 作业

Bear

极客大学架构师训练营

第3周作业

伊灵

#链表# #快慢指针#

玉皇大亮

链表 快慢指针

springboot 热部署

hepingfly

Java springboot SpringCloud 热部署

第三周-总结

jizhi7

极客大学架构师训练营

架构师训练营第一期 - 第七周学习总结

卖猪肉的大叔

极客大学架构师训练营

架构师训练营第 1 期 -Week7 - 课后练习

鲁小鲁

极客大学架构师训练营

架构师训练营 1 期 - 第七周总结(vaik)

行之

极客大学架构师训练营

架构师训练营第七周学习笔记

一马行千里

学习 极客大学架构师训练营

第七周 性能优化 作业一

应鹏

极客大学架构师训练营

科技与产业革命的历史性交汇期,光华工程科技奖名单上的AI排面

脑极体

架构师训练营1期 - week07- 作业

lucian

极客大学架构师训练营

第七周作业

Geek_ac4080

7.1性能测试:系统性能的主要技术指标

张荣召

【架构师训练营第 1 期 07 周】 学习总结

Bear

极客大学架构师训练营

与前端训练营的日子--Week02

SamGo

学习

图像技术在上亿规模实拍图片中的应用(算法好文)_AI_闲鱼技术_InfoQ精选文章