FewX 开源项目使用教程
1. 项目的目录结构及介绍
FewX 是一个基于 Detectron2 的开源工具箱,用于数据有限的实例级识别任务。以下是项目的目录结构及其简要介绍:
FewX/
├── configs/ # 配置文件目录
│ └── fsod/ # 特定任务的配置文件
├── datasets/ # 数据集目录
├── fewx/ # 项目核心代码
├── log/ # 日志文件目录
├── .gitignore # Git 忽略文件配置
├── LICENSE # 项目许可证
├── README.md # 项目说明文档
└── fsod_train_net.py # 训练网络的启动文件
目录结构详细介绍
configs/
: 包含项目的各种配置文件,特别是fsod/
目录下有针对特定任务的配置文件。datasets/
: 用于存放数据集的目录。fewx/
: 项目的主要代码库,包含实现各种实例级识别任务的代码。log/
: 用于存放训练和测试过程中的日志文件。.gitignore
: 配置 Git 忽略的文件和目录。LICENSE
: 项目的许可证文件。README.md
: 项目的说明文档,包含项目的基本信息和使用方法。fsod_train_net.py
: 训练网络的启动文件。
2. 项目的启动文件介绍
项目的启动文件是 fsod_train_net.py
,该文件用于启动训练过程。以下是该文件的简要介绍:
# fsod_train_net.py
import os
import sys
from detectron2.engine import DefaultTrainer
from detectron2.config import get_cfg
from fewx.config import add_fsod_config
def setup(args):
cfg = get_cfg()
add_fsod_config(cfg)
cfg.merge_from_file(args.config_file)
cfg.merge_from_list(args.opts)
cfg.freeze()
return cfg
def main(args):
cfg = setup(args)
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=args.resume)
trainer.train()
if __name__ == "__main__":
from detectron2.engine import launch
launch(main, sys.argv[1:])
启动文件详细介绍
setup(args)
: 该函数用于设置配置文件,包括从命令行参数中读取配置文件路径和选项,并将其合并到配置对象中。main(args)
: 主函数,负责启动训练过程。它首先调用setup(args)
函数设置配置,然后创建DefaultTrainer
实例并启动训练。launch(main, sys.argv[1:])
: 用于在多GPU环境下启动训练过程。
3. 项目的配置文件介绍
项目的配置文件位于 configs/
目录下,特别是 fsod/
目录下有针对特定任务的配置文件。以下是一个典型的配置文件示例:
# configs/fsod/example.yaml
MODEL:
BACKBONE:
NAME: "build_resnet_backbone"
RESNETS:
OUT_FEATURES: ["res4"]
ROI_HEADS:
NAME: "StandardROIHeads"
NUM_CLASSES: 80
ROI_BOX_HEAD:
NAME: "FastRCNNConvFCHead"
NUM_FC: 2
POOLER_RESOLUTION: 7
SOLVER:
BASE_LR: 0.001
STEPS: (210000, 250000)
MAX_ITER: 270000
DATASETS:
TRAIN: ("coco_2017_train",)
TEST: ("coco_2017_val",)
INPUT:
MIN_SIZE_TRAIN: (640, 672, 704, 736, 768, 800)
MAX_SIZE_TRAIN: 1333
MIN_SIZE_TEST: 800