细粒度视觉分类(FGCV,Fine-Grained Visual Categorization)
即识别细分类别的任务,一般它需要同时使用全局图像信息与局部图像信息精准识别图像子类别。
解决方案:
一般细粒度识别可以分为两种,即基于强监督信息的方法和仅使用弱监督信息的方法。
基于强监督的细粒度识别通常需要使用边界框和局部标注信息,例如2014年提出的Part-based R-CNN利用自底向上的候选区域(region proposals)计算深度卷积特征而实现细粒度识别。这种方法会学习建模局部外观,并加强局部信息之间的几何约束。
仅使用弱监督信息的方法指数据集只有类别标签,是一种弱监督信息的细粒度识别。
iMaterialist 2018 解决方案借鉴参考:
服装第一名解决方案:
利用预训练resnet152、xception和dn201等模型并结合XGBoost做预测,另外,Radek Osmulski 使用了1 Cycle LR Policy进行精调。
1 Cycle 用两个等长的步骤组成一个 cycle:从很小的学习率开始,慢慢增大学习率,然后再慢慢降低回最小值。Radek Osmulski 在增大学习率的同时降低动量,这也印证了一个直觉:在训练中,我们希望 SGD 可以迅速调整到搜索平坦区域的方向上,因此就应该对新的梯度赋予更大的权重。其实在真实场景中,可以选取如 0.85 和 0.95 的两个值,在增大学习率的时候,将动量从 0.95 降到 0.85,在降低学习率的时候,再将动量重新从 0.85 提升回 0.95。
服装第二名解决方案:
开发者采用了非常多的数据增强手段,包括水平翻转、旋转、高斯模糊、锐化、截取和归一化等方法;然后根据DenseNet、inception_resnet_v2、Inception-v3、Nasnet和ResNet-50等九个基础卷积网络抽取输入图像的特征,并分别作出预测;最后结合所有基础模型的预测就能得出非常不错的最终结果。
上述细粒度识别需要很多局部图像信息才能实现子类别的判断,谷歌(Xiao Zhang)表示:[选手这些网络最终层的dimension都比较小(比如7×7),这种情况下最终最决策时很难兼顾不同尺度的信息。如果需要兼顾局部和整体需要使用Feature Pyramid Network,或者类似于编码器/解码器的结构,在最终层使用高维的预测。]
在整个流程中,Stacking CNN是非常有意思的过程。开发者会将这九个模型的预测结果叠加在一起为9×228×1的张量,它代表了模型对228个类别的预测结果。然后,使用3×1的卷积在它上面执行步幅为1的卷积运算,这种卷积可以学习到各基础模型原始预测之间的相关性。输出张量7×228×8(8个3×1的卷积核),再经过16个3×1的卷积核执行卷积运算并馈送到全连接层后,就能做出最终的预测。因为3×1的卷积其实相当于在同一个类别上,加权三个模型的预测并输出到下一层。所以这也相当于一种集成方法,模型会自动学习不同基础模型预测的重要性,并结合所有基础模型作出最终预测。
家具细粒度分类的两个解决方案也非常有特点
Roman Khomenko 和 Lei Li 设计的家具第一名解决方案使用了一种称之为概率校准的技术。他们表示在训练集中,类别数量是非常不平衡的,但在验证集中类别数量是平衡的,因此我们可能需要使用概率校准以解决这种训练于验证之间的分布差异。
Google Research 张晓表示:「校准分为两步: a) 对于每个 label 的预测概率,除以该类别的物体数,除以对应的先验概率; b) 对所有更新后的 label 的预测概率做归一化(相加得到 1)
Dmytro Panchenko 和 Alexander Kiselev 设计的解决方案获得了家具第二名,他们其实也使用了多个卷积网络的集成方案。
总的来说,这四个解决方案都是使用多个预训练卷积网络,它们会分别在训练集与验证集中进行学习与调参,然后再使用不同的集成方案总结各个模型的预测结果。
因为细粒度识别很多时候需要使用注意力机制或 Faster R-CNN 等方法抽取局部特征,并用于预测最终细分类别,而挑战赛中的模型很多都是模型集成。因此我们可能会比较好奇为什么不在竞赛中使用前沿和优秀的细粒度识别模型呢?
Dmytro Panchenko 团队解答到:
「我们其实也考虑了这个问题,并花时间进行调查和查文献,也许我们可以训练出照片上分割目标的网络。但这些方法很多都需要额外的标注,而且我们也不知道哪些特征对不同类型的椅子是最重要的,因此我们只是采用了「默认」的方式(完全不是因为我们懒)。」
此外,他们表示:「照片很多都来自在线购物网站,其中 99% 图像的主要目标都在图像中央,几乎是完美的剪裁。因此我们认为如果训练集足够大,那么 CNN 能从中抽取到足够好的特征。」
最后,作为联合举办单位,码隆科技首席科学家黄伟林博士总结,在多年从事商品识别的研究和实践过程中,面临的三个主要难点:
1. 细粒度商品识别,特别是对 SKU 级别的识别是至关重要的。如下图所示,不同种类的益达口香糖,在零售过程中通常价格会不太一样,因此需要作精确区分。
2. 除了细粒度分析,SKU 级别的商品识别通常需要识别大量的商品种类,比如超过 10 万类,而常见的 ImageNet 物体识别通常只有 1,000 类。这是商品识别的另一个挑战,而常用的单层 softmax 分类模型很难解决。这就需要引进多层级联的细粒度分类算法,从而加大细粒度识别的难度。
3. 由于商品类别多,就要去更多的海量训练数据和人工标注,比如 10 亿级别的。对于如此数量的人工标注和数据清洗,是很难完成的。
因此,如何有效地利用海量网络爬取的商品图片,在没有或者只有少量人工标注和清洗的情况下,训练一个高性能的商品识别模型,成为一个关键的技术。
码隆科技最近提出的弱监督学习算法- CurriculumNet,就是专门为训练海量无人工标注的海量网络图片而设计的。
参考:http://baijiahao.baidu.com/s?id=1604409810457993579&wfr=spider&for=pc