一、mmfewshot 框架概述
少样本学习的基本流程:
我们将为所有小样本学习任务引入一个简单的基线,以进一步说明小样本学习的工作原理。最明显的流程是微调。它通常包括两个步骤:在大规模数据集上训练模型,然后在小样本数据上进行微调。对于图像分类,我们首先使用交叉熵损失对训练集的模型进行预训练,然后我们可以迁移主干并微调新的分类头。对于检测,我们可以首先在训练集上预训练一个 faster-rcnn,然后在一些实例上微调一个新的 bbox 头来检测新的类别。在许多情况下,微调是一种简单但有效的小样本学习策略。
MMFewShot 由 4 个主要部分组成datasets、models、core和apis。
datasets用于数据加载和数据增强。在此部分中,我们支持用于分类和检测算法的各种数据集、pipelines用于预处理图像的有用数据增强转换以及灵活的数据采样datasetswrappers。
models包含模型和损失函数。
core为模型训练和评估提供评估工具和定制钩子。
apis为模型训练、测试和推理提供高级 API。
二、mmfewshot 环境搭建
Step 1.创建conda虚拟环境并激活
conda create -n mmfewshot python=3.8 -y #创建环境
conda activate mmfewshot #激活环境
Step 2.安装 PyTorch
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch #安装 PyTorch and torchvision (官方)
#如果网不好,可以这样安装
pip3 install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio===0.11.0 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
#验证是否安装成功
>>> import torchvision
>>> import torch
>>> import.__version__
File "<stdin>", line 1
import.__version__
^
SyntaxError: invalid syntax
>>> torch.__version__
'1.11.0+cu113'
三、数据准备
1、Few Shot Classification
Preparing Mini-ImageNet Dataset
2、Few Shot Detection
四、Few Shot Detection Model Zoo
TFA(迁移学习)
FSCE(迁移学习)
Attention_RPN(QueryAwareDataset)
FSDETVIEW(NwayKshotDataset)
Meta_RCNN(NwayKshotDataset)
MPSR(TwoBranchDataset)
五、案例测试
1、少量样本检测演示
Attention RPN Inference with Support Instances Demo。
我们提供了一个演示脚本来测试单个查询图像,给定支持实例图像的目录。支持图像的文件名将用作类名。图像的形状将用作实例的 bbox,即 [0, 0, width, height]。
python demo/demo_attention_rpn_detector_inference.py \
${IMG_ROOT} ${CONFIG_FILE} ${CHECKPOINT_FILE} \
[--device ${GPU_ID}] \
[--score-thr ${BBOX_SCORE_THR} --support-images-dir ${DIR_ROOT}]
python demo/demo_attention_rpn_detector_inference.py \
demo/demo_detection_images/query_images/demo_query.jpg \
configs/detection/attention_rpn/coco/attention-rpn_r50_c4_4xb2_coco_base-training.py \
https://download.openmmlab.com/mmfewshot/detection/attention_rpn/coco/attention-rpn_r50_c4_4xb2_coco_base-training_20211102_003348-da28cdfd.pth \
--support-images-dir demo/demo_detection_images/support_images
六、环境问题
1、问题 Error:AttributeError: module ‘numpy‘ has no attribute ‘bool‘.
1、降低numpy版本
# 卸载当前NumPy版本
pip uninstall numpy
# 安装指定版本的NumPy
pip install numpy==1.19.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
虽然这种方法能够暂时解决NumPy库中没有bool属性的问题,但我们必须意识到,这可能会引发新的问题。由于一些第三方库(如opencv)需要与特定版本的NumPy兼容,因此,仅仅为了修复一个bug而卸载当前的NumPy库可能会导致更多的错误。因为新安装的NumPy版本可能无法与这些第三方库完全兼容,这无疑增加了潜在的麻烦和风险。