返回列表

15th place solution

432. Shopee - Price Match Guarantee | shopee-product-matching

开始: 2021-03-09 结束: 2021-05-10 商品理解 数据算法赛
第15名方案
作者: s_shohei (Grandmaster) | 比赛排名: 第15名 | 投票数: 50

第15名方案

概要

  • 图像:CNN + GeM + Arcface
  • 标题:TF-IDF 和 微调后的 LaBSE
  • 后处理:交叉均值 和 DBA/QE
  • 融合:将图像/标题嵌入作为图进行融合

流程图

图像模型

  • resnest101
  • resnest200
  • eca_nfnet_l1

使用 Arcface 和 GeM 进行训练。输入尺寸为 512x512。
通过 albumentations 进行常规数据增强(左右翻转、cutout、亮度调整、平移缩放旋转等)。
每个模型输出 512 维向量,将它们拼接以生成 1536 维向量。

标题模型

  • 预处理

    • Unicode 处理
    • 转换为小写
    • 单位清洗
      250 gram, 250gr, 250gram, 250g 意思几乎相同,
      因此我在预处理中将它们统一改为 "250gram"。
      我对其他几十个单位也做了同样的处理。
  • TF-IDF
    在测试数据集上进行拟合和转换。

  • LaBSE
    使用 Arcface 和 GeM 进行微调。
    通过类 EDA (Easy Data Augmentation) 方法进行数据增强。

最后将 TF-IDF 和 BERT 向量拼接作为标题嵌入。

后处理

  • 交叉均值嵌入
    (我不确定是否有专业术语描述这个)
    如果有产品(例如 A、B 和 C)拥有完全相同的图像,它们就是同一个产品。(精确度 > 99.9%)
    我将每个标题嵌入替换为标题嵌入的均值:(A+B+C)/3。
    对图像嵌入执行相同的过程,即按相同标题取均值。

  • DBA/QE
    对于图像 X,我通过图像嵌入找到了 3 个最近邻(例如 X、Y、Z),然后用 的加权和(logspace 对数空间权重)替换 X 的图像嵌入。
    标题处理方式相同。

图融合

现在我们有了两组嵌入:图像和标题。
我将它们作为图进行融合。

对于每个图像或标题嵌入,我找到了 50 个最近邻及其欧几里得距离。
一个节点代表一个嵌入。边的权重是它们的欧几里得距离。
然后我们可以合并图像图和标题图。如果有重复的边,选择较小(距离更近)的那条。

我采用了一种 Dijkstra 算法 来形成聚类。
我根据 LB(Leaderboard)分数选择了最终阈值。

图融合示意1
图融合示意2

未起作用的方法

  • 伪标签:在 CV 中效果很好,但我无法在 2 小时内完成。
  • uSIF, fasttext, glove
  • PorterStemmer, LancasterStemmer
  • 拼写纠正
  • CosFace, AdaCos
  • OCR:生成的标题质量不佳
同比赛其他方案