PaddleClas/docs/zh_CN/faq_series/faq_2021_s2.md

6.6 KiB
Raw Blame History

图像识别常见问题汇总 - 2021 第2季

目录

第1期

Q1.1: 目前使用的主体检测模型检测在某些场景中会有误检?

A目前的主体检测模型训练时使用了COCO、Object365、RPC、LogoDet等公开数据集如果被检测数据是类似工业质检等于常见类别差异较大的数据需要基于目前的检测模型重新微调训练。

Q1.2: 添加图片后建索引报assert text_num >= 2错?

A请确保data_file.txt中图片路径和图片名称中间的间隔为单个table而不是空格。

Q1.3: 识别模块预测时报Illegal instruction错?

A:可能是编译生成的库文件与您的环境不兼容,导致程序报错,如果报错,推荐参考向量检索教程重新编译库文件。

Q1.4 主体检测是每次只输出一个主体检测框吗?

A主体检测这块的输出数量是可以通过配置文件配置的。在配置文件中Global.threshold控制检测的阈值小于该阈值的检测框被舍弃Global.max_det_results控制最大返回的结果数这两个参数共同决定了输出检测框的数量。

Q1.5 训练主体检测模型的数据是如何选择的?换成更小的模型会有损精度吗?

A训练数据是在COCO、Object365、RPC、LogoDet等公开数据集中随机抽取的子集小模型精度可能会有一些损失后续我们也会尝试下更小的检测模型。关于主体检测模型的更多信息请参考主体检测

Q1.6 识别模型怎么在预训练模型的基础上进行微调训练?

A:识别模型的微调训练和分类模型的微调训练类似,识别模型可以加载商品的预训练模型],训练过程可以参考识别模型训练,后续我们也会持续细化这块的文档。

Q1.7 PaddleClas和PaddleDetection区别

APaddleClas是一个兼主体检测、图像分类、图像检索于一体的图像识别repo用于解决大部分图像识别问题用户可以很方便的使用PaddleClas来解决小样本、多类别的图像识别问题。PaddleDetection提供了目标检测、关键点检测、多目标跟踪等能力方便用户定位图像中的感兴趣的点和区域被广泛应用于工业质检、遥感图像检测、无人巡检等项目。

Q1.8 PaddleClas 2.2和PaddleClas 2.1完全兼容吗?

APaddleClas2.2相对PaddleClas2.1新增了metric learning模块主体检测模块、向量检索模块。另外也提供了商品识别、车辆识别、logo识别和动漫人物识别等4个场景应用示例。用户可以基于PaddleClas 2.2快速构建图像识别系统。在图像分类模块,二者的使用方法类似,可以参考图像分类示例快速迭代和评估。新增的metric learning模块可以参考metric learning示例。另外新版本暂时还不支持fp16、dali训练也暂时不支持多标签训练这块内容将在不久后支持。

Q1.9 训练metric learning时每个epoch中无法跑完所有mini-batch为什么

A在训练metric learning时使用的Sampler是DistributedRandomIdentitySampler该Sampler不会采样全部的图片导致会让每一个epoch采样的数据不是所有的数据所以无法跑完显示的mini-batch是正常现象。后续我们会优化下打印的信息尽可能减少给大家带来的困惑。

Q1.10 有些图片没有识别出结果,为什么?

A在配置文件如inference_product.yamlIndexProcess.score_thres中会控制被识别的图片与库中的图片的余弦相似度的最小值。当余弦相似度小于该值时,不会打印结果。您可以根据自己的实际数据调整该值。

Q1.11 为什么有一些图片检测出的结果就是原图?

A:主体检测模型会返回检测框,但事实上为了让后续的识别模型更加准确,在返回检测框的同时也返回了原图。后续会根据原图或者检测框与库中的图片的相似度排序,相似度最高的库中图片的标签即为被识别图片的标签。

Q1.12 使用circle loss还需加triplet loss吗?

Acircle loss是统一了样本对学习和分类学习的两种形式,如果是分类学习的形式的话,可以增加triplet loss

Q1.13 hub serving方式启动某个模块怎么添加该模块的参数呢

A:具体可以参考hub serving参数

Q1.14 模型训练出nan为什么

A

1.确保正确加载预训练模型, 最简单的加载方式添加参数-o Arch.pretrained=True即可;

2.模型微调时学习率不要太大如设置0.001就好。

Q1.15 SSLD中大模型在500M数据上预训练后蒸馏小模型然后在1M数据上蒸馏finetune小模型

A:步骤如下:

1.基于facebook开源的ResNeXt101-32x16d-wsl模型 去蒸馏得到了ResNet50-vd模型;

2.用这个ResNet50-vd在500W数据集上去蒸馏MobilNetV3

3.考虑到500W的数据集的分布和100W的数据分布不完全一致所以这块在100W上的数据上又finetune了一下精度有微弱的提升。

Q1.16 如果不是识别开源的四个方向的图片,该使用哪个识别模型?

A建议使用商品识别模型一来是因为商品覆盖的范围比较广被识别的图片是商品的概率更大二来是因为商品识别模型的训练数据使用了5万类别的数据泛化能力更好特征会更鲁棒一些。

Q1.17 最后使用512维的向量为什么不用1024或者其他维度的呢

A使用维度小的向量为了加快计算在实际使用过程中可能使用128甚至更小。一般来说512的维度已经够大能充分表示特征了。

Q1.18 训练SwinTransformerloss出现nan

A训练SwinTransformer的话需要使用paddle-dev去训练安装方式参考paddlepaddle安装方式后续paddlepaddle-2.1也会同时支持。

Q1.19 新增底库数据需要重新构建索引吗?

A:这一版需要重新构建索引,未来版本会支持只构建新增图片的索引。

Q1.20 PaddleClas 的train_log文件在哪里?

A:在保存权重的路径中存放了train.log