【GiantPandaCV导语】上学期快结束的时候参加了华为和CCF组织的零售商品识别的比赛,队伍名称为GiantPandaCV队,比赛大约持续了两个月,期间从开始摸索MindSpore框架,配置环境,上手ModelArts花费了不少功夫。现在比赛终于告一段落,本文进行一下复盘。
CCF大数据与计算智能大赛(CCF Big Data & Computing Intelligence Contest,简称CCF BDCI)由中国计算机学会于2013年创办。大赛由国家自然科学基金委员会指导,是大数据与人工智能领域的算法、应用和系统大型挑战赛事。大赛面向重点行业和应用领域征集需求,以前沿技术与行业应用问题为导向,以促进行业发展及产业升级为目标,以众智、众包的方式,汇聚海内外产学研用多方智慧,为社会发现和培养了大量高质量数据人才。
本赛题识别对象是零售商品,使用的数据集是RP2K数据集,RP2K是品览基于零售商品识别能力发布的零售数据集。不同于一般聚焦新产品的数据集,RP2K收录了超过50万张零售商品货架图片,商品种类超过2000种,该数据集是目前零售类数据集中产品种类数量TOP1,同时所有图片均来自于真实场景下的人工采集,针对每种商品,我们提供了十分详细的注释。
RP2K数据集(https://arxiv.org/pdf/2006.12634.pdf)具有以下特性:
(1) 迄今为止,就产品类别而言,它是规模最大的数据集。
(2) 所有图片均在实体零售店人工拍摄,自然采光,符合实际应用场景。
(3) 为每个对象提供了丰富的注释,包括大小、形状和味道/气味。
数据集中的一些样本如下图所示,大部分分布是细长的,长宽分布要比ImageNet等数据集更加分布不均匀:
此外,该数据集的数据量和类别数量也非常多,下图展示了RP2K和其他零售数据集的对比,RP2K具有2388个类别的零售商品,属于大规模分类问题。
此外,数据集某一些类间分布差异较小,相同品牌不同子产品之间差异较小,可以归属为细粒度分类问题。数据质量也存在一定的问题,比如光照,包装差异,拍摄角度,标注错误等等问题。
经过统计,该数据集呈现明显的长尾分布:
Structure-Retention Resize策略,保留原有的结构化信息。性能上能够提升3个百分点,如下图所示,也就是padding黑边的方式。这个策略在比赛初期是最有效的策略,比传统的resize方法能够提高3.17个百分点。
我们测试了三种经典的数据增强方法:
实验效果如下:
采用了NIPS19年Facebook提出的FixRes的后处理技巧,ImageNet上经典的数据增强方式会导致训练时和测试时的模型看到的目标尺寸出现差异。
之前写过一篇文章解读FixRes详细内容可以看这里:
xxx
https://blog.csdn.net/DD_PP_JJ/article/details/121202386?spm=1001.2014.3001.5501
简单来说是由于ImageNet经典的数据处理方法会导致Region of Classification,即模型看到的目标尺寸不同。
可以看到,下图中通过训练和测试过程得到的“7喜”的logo标志大小存在差异,为了弥补两者差异,最简单的方式是提高测试过程中分辨率。
FixRes有三步流程:
具体实验结果如下:
由于数据集规模比较大,为了快速测试各个模型的有效性,使用了50%的数据进行快速验证,验证选择的模型包括:
我们最终选择了SEResNeXt50作为主要模型,并配合ResNet50_CBAM还有Inception_resNet_v2进行模型集成。Swin Transformer和EfficientNet两个模型由于其运行速度太慢,在比赛时间限制下没有使用两者。
SEResNeXt模型由两部分构成
模型改进部分是一个简单而符合直觉的方法,我们观察到,现有的大部分模型都是针对ImageNet进行设计的,而ImageNet类别数为1000个类别,但RP2K数据集规模比较大,拥有2388个类别。
我们关注大多数模型的最后一个linear层的设计,针对ImageNet设计的模型的Linear层通常由2048维度映射到1000维度,由高纬度映射到低纬度比较合理。
但是由于RP2K的规模较大,类别数量为2388,直接由2048映射至2388可能会导致容量不够的问题,由低纬度映射映射至高纬度则不太符合直觉。
针对此,我们进行了简单而符合直觉的改进,如下图所示:
通过以上改进,扩充了模型的容量,取得了0.26%的提升。
在林臻帮助下,手工分析了一下错误样例(注:以上分析去除了others类别错分样本),可以发现这个数据集比较难处理的是细粒度带来的识别困难、疑似数据标注错误、以及长尾分布的尾部类别,这也符合我们数据分析的结论。
本次比赛面向国产AI框架,基于MindSpore开发商品识别算法,必须在昇腾910平台训练和部署模型,以官方复现结果为准。
使用MindSpore的感受:
最后对MindSpore感兴趣的小伙伴可以使用以下的参考资料快速上手:
GiantPandaCV队比赛的全部源码已经开源,收集了非常多的模型,欢迎尝试MindSpore框架。
Github地址:https://github.com/pprp/GoodsRecognition.MindSpore
Gitee地址:https://gitee.com/pprp/GoodsRecognition.MindSpore