432. Shopee - Price Match Guarantee | shopee-product-matching
大家好!
首先,我想祝贺大家在这次比赛中展现出的惊人才能。此外,我要感谢我的队友(Miguel、Pablo 和 Carlos)在这一路走来教会我的所有东西,这让我在第一次参加 Kaggle 比赛中就获得了银牌!最后,我想特别祝贺我的队友 Alejandro Lanaspa,在获得这枚银牌后,他成功晋升为 Kaggle Master!说了这么多,让我们深入探讨本帖的主要目的:
我创建这个主题是为了分享我的团队在这次比赛中使用的方法之一,也是我负责实现的部分:目标检测(Object Detection)。顾名思义,该方法基于检测每张产品图片中的对象,旨在为不同元素之间提供另一个比较项。
从技术角度来看,我们使用了 YOLOv5m 作为模型。该模型的实现库可以在这里找到;我们努力使用离线的预训练模型,以便在提交期间可用(参见我为此目的创建的数据集)。关于该模型提供的信息,其输出不仅仅是对象列表。实际上,它会产生以下数据:
为 Shopee 训练集生成此数据的示例代码可以在这个笔记本(列表格式)和这个笔记本(独热格式)中找到。我还将这些笔记本的输出上传到了这个数据集,以便大家可以直接使用,无需执行任何操作。
现在,让我们分析从这些项目中获得了哪些进一步的细节:
这是显而易见的输出,但多亏了它,我们可以筛选出与比赛相关的对象。默认情况下,模型尝试检测 80 种不同类型的对象,这些对象列在这里。在这个列表中,你可以发现彼此截然不同的对象,从“棒球棒”到“大象”,这些显然与本次应检测的内容无关。在观察结果并计算了不同的统计数据(具有对象的元素数量、不同组的数量、具有对象的组的完整性百分比……完整的分析请参阅这个笔记本)后,我们确定其中最相关的两个是“人”(在展示服装的人物图片中)和“瓶子”(在化妆品和食品项目中)。
虽然一开始我们考虑只包含模型非常确定的对象,但我们发现它遗漏了一些以较低置信度检测到的重要对象。此外,为了在下一点末尾描述的算法中拥有尽可能多的选择,我们倾向于设置较低的置信度水平,这显然会输出更多检测到的对象。
从坐标中获得了以下信息:
