PaddleClas/docs/zh_CN/application/logo_recognition.md

2.5 KiB
Raw Blame History

Logo识别

Logo识别技术是现实生活中应用很广的一个领域比如一张照片中是否出现了Adidas或者Nike的商标Logo或者一个杯子上是否出现了星巴克或者可口可乐的商标Logo。通常Logo类别数量较多时往往采用检测+识别两阶段方式检测模块负责检测出潜在的Logo区域根据检测区域抠图后输入识别模块进行识别。识别模块多采用检索的方式根据查询图片和底库图片进行相似度排序获得预测类别。此文档主要对Logo图片的特征提取部分进行相关介绍内容包括

  • 数据集及预处理方式
  • Backbone的具体设置
  • Loss函数的相关设置

全部的超参数及具体配置:ResNet50_ReID.yaml

1 数据集及预处理

1.1 LogoDet-3K数据集

LogoDet-3K数据集是具有完整标注的Logo数据集有3000个标识类别约20万个高质量的人工标注的标识对象和158652张图片。相关数据介绍参考原论文

1.2 数据预处理

由于原始的数据集中图像包含标注的检测框在识别阶段只考虑检测器抠图后的logo区域因此采用原始的标注框抠出Logo区域图像构成训练集排除背景在识别阶段的影响。对数据集进行划分产生155427张训练集覆盖3000个logo类别同时作为测试时gallery图库3225张测试集用于作为查询集。抠图后的训练集可在此下载

2 Backbone的具体设置

具体是用ResNet50作为backbone主要做了如下修改

  • 使用ImageNet预训练模型

  • last stage stride=1, 保持最后输出特征图尺寸14x14

  • 在最后加入一个embedding 卷积层特征维度为512

    具体代码:ResNet50_last_stage_stride1

3 Loss的设置

在Logo识别中使用了Pairwise Cosface + CircleMargin 联合训练其中权重比例为1:1

具体代码详见:PairwiseCosfaceCircleMargin

其他部分参数,详见配置文件