Detectron2 实例分割训练实战:COCO 数据注册、训练与评估
Detectron2 实例分割训练实战COCO 数据注册、训练与评估这篇教程根据我复现 Detectron2 实例分割流程时整理重点演示如何安装 Detectron2、注册 COCO 格式数据集、训练 Mask R-CNN 并评估结果。本文整理自我的学习和项目复现过程尽量按实操顺序保留 notebook 的关键步骤同时把数据集获取方式调整为适合中文教程发布的写法。本文会重点跑通以下流程安装 Detectron2 环境运行预训练模型推理从数据集后台获取 COCO 实例分割数据注册训练、验证和测试数据集训练并评估自定义实例分割模型如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录Detectron2 实例分割训练实战COCO 数据注册、训练与评估⚙️ 环境准备 安装 Detectron2 预训练模型推理 从数据集后台获取 COCO 数据 注册数据集️ 可视化训练样本️ 训练实例分割模型 评估模型 小结 同系列教程汇总⚙️ 环境准备先检查 GPU 与基础运行环境。建议优先使用 Colab GPU 或本地 NVIDIA GPU 环境。!nvidia-smi 安装 Detectron2Detectron2 对 CUDA/PyTorch 版本较敏感先确认依赖安装成功。!python-m pip installgithttps://github.com/facebookresearch/detectron2.gitimporttorch,detectron2 !nvcc--version TORCH_VERSION..join(torch.__version__.split(.)[:2])CUDA_VERSIONtorch.__version__.split()[-1]print(torch: ,TORCH_VERSION,; cuda: ,CUDA_VERSION)print(detectron2:,detectron2.__version__)# COMMON LIBRARIESimportosimportcv2fromdatetimeimportdatetimefromgoogle.colab.patchesimportcv2_imshow# DATA SET PREPARATION AND LOADINGfromdetectron2.data.datasetsimportregister_coco_instancesfromdetectron2.dataimportDatasetCatalog,MetadataCatalog# VISUALIZATIONfromdetectron2.utils.visualizerimportVisualizerfromdetectron2.utils.visualizerimportColorMode# CONFIGURATIONfromdetectron2importmodel_zoofromdetectron2.configimportget_cfg# EVALUATIONfromdetectron2.engineimportDefaultPredictor# TRAININGfromdetectron2.engineimportDefaultTrainer 预训练模型推理用预训练模型跑一张图确认安装和推理流程正常。!wget http://images.cocodataset.org/val2017/000000439715.jpg-q-Oinput.jpg imagecv2.imread(./input.jpg)cv2_imshow(image)cfgget_cfg()cfg.merge_from_file(model_zoo.get_config_file(COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml))cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST0.5cfg.MODEL.WEIGHTSmodel_zoo.get_checkpoint_url(COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml)predictorDefaultPredictor(cfg)outputspredictor(image)print(outputs[instances].pred_classes)print(outputs[instances].pred_boxes)visualizerVisualizer(image[:,:,::-1],MetadataCatalog.get(cfg.DATASETS.TRAIN[0]),scale1.2)outvisualizer.draw_instance_predictions(outputs[instances].to(cpu))cv2_imshow(out.get_image()[:,:,::-1]) 从数据集后台获取 COCO 数据从数据集后台导出 COCO 实例分割格式数据后修改本地路径。fromtypesimportSimpleNamespace# 从数据集后台下载 COCO 实例分割 格式数据集后修改 DATASET_DIR 指向解压目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR,version1,namecustom-dataset) 注册数据集Detectron2 训练前必须先注册 train/valid/test 数据集。DATA_SET_NAMEdataset.name.replace( ,-)DATA_SET_LOCATIONdataset.location# TRAIN SETTRAIN_DATA_SET_NAMEf{DATA_SET_NAME}-trainTRAIN_DATA_SET_IMAGES_DIR_PATHos.path.join(dataset.location,train)TRAIN_DATA_SET_ANN_FILE_PATHos.path.join(dataset.location,train,ANNOTATIONS_FILE_NAME)register_coco_instances(nameTRAIN_DATA_SET_NAME,metadata{},json_fileTRAIN_DATA_SET_ANN_FILE_PATH,image_rootTRAIN_DATA_SET_IMAGES_DIR_PATH)# TEST SETTEST_DATA_SET_NAMEf{DATA_SET_NAME}-testTEST_DATA_SET_IMAGES_DIR_PATHos.path.join(dataset.location,test)TEST_DATA_SET_ANN_FILE_PATHos.path.join(dataset.location,test,ANNOTATIONS_FILE_NAME)register_coco_instances(nameTEST_DATA_SET_NAME,metadata{},json_fileTEST_DATA_SET_ANN_FILE_PATH,image_rootTEST_DATA_SET_IMAGES_DIR_PATH)# VALID SETVALID_DATA_SET_NAMEf{DATA_SET_NAME}-validVALID_DATA_SET_IMAGES_DIR_PATHos.path.join(dataset.location,valid)VALID_DATA_SET_ANN_FILE_PATHos.path.join(dataset.location,valid,ANNOTATIONS_FILE_NAME)register_coco_instances(nameVALID_DATA_SET_NAME,metadata{},json_fileVALID_DATA_SET_ANN_FILE_PATH,image_rootVALID_DATA_SET_IMAGES_DIR_PATH)[data_setfordata_setinMetadataCatalog.list()ifdata_set.startswith(DATA_SET_NAME)]️ 可视化训练样本可视化训练样本能快速发现标注或类别映射问题。metadataMetadataCatalog.get(TRAIN_DATA_SET_NAME)dataset_trainDatasetCatalog.get(TRAIN_DATA_SET_NAME)dataset_entrydataset_train[0]imagecv2.imread(dataset_entry[file_name])visualizerVisualizer(image[:,:,::-1],metadatametadata,scale0.8,instance_modeColorMode.IMAGE_BW)outvisualizer.draw_dataset_dict(dataset_entry)cv2_imshow(out.get_image()[:,:,::-1])️ 训练实例分割模型配置 Mask R-CNN 训练参数并启动训练。# HYPERPARAMETERSARCHITECTUREmask_rcnn_R_101_FPN_3xCONFIG_FILE_PATHfCOCO-InstanceSegmentation/{ARCHITECTURE}.yamlMAX_ITER2000EVAL_PERIOD200BASE_LR0.001NUM_CLASSES3# OUTPUT DIROUTPUT_DIR_PATHos.path.join(DATA_SET_NAME,ARCHITECTURE,datetime.now().strftime(%Y-%m-%d-%H-%M-%S))os.makedirs(OUTPUT_DIR_PATH,exist_okTrue)cfgget_cfg()cfg.merge_from_file(model_zoo.get_config_file(CONFIG_FILE_PATH))cfg.MODEL.WEIGHTSmodel_zoo.get_checkpoint_url(CONFIG_FILE_PATH)cfg.DATASETS.TRAIN(TRAIN_DATA_SET_NAME,)cfg.DATASETS.TEST(TEST_DATA_SET_NAME,)cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE64cfg.TEST.EVAL_PERIODEVAL_PERIOD cfg.DATALOADER.NUM_WORKERS2cfg.SOLVER.IMS_PER_BATCH2cfg.INPUT.MASK_FORMATbitmaskcfg.SOLVER.BASE_LRBASE_LR cfg.SOLVER.MAX_ITERMAX_ITER cfg.MODEL.ROI_HEADS.NUM_CLASSESNUM_CLASSES cfg.OUTPUT_DIROUTPUT_DIR_PATHtrainerDefaultTrainer(cfg)trainer.resume_or_load(resumeFalse)trainer.train()# Look at training curves in tensorboard:%load_ext tensorboard%tensorboard--logdir $OUTPUT_DIR_PATH 评估模型训练完成后在验证集或测试集上评估分割效果。cfg.MODEL.WEIGHTSos.path.join(cfg.OUTPUT_DIR,model_final.pth)cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST0.7predictorDefaultPredictor(cfg)dataset_validDatasetCatalog.get(VALID_DATA_SET_NAME)fordindataset_valid:imgcv2.imread(d[file_name])outputspredictor(img)visualizerVisualizer(img[:,:,::-1],metadatametadata,scale0.8,instance_modeColorMode.IMAGE_BW)outvisualizer.draw_instance_predictions(outputs[instances].to(cpu))cv2_imshow(out.get_image()[:,:,::-1]) 小结这篇教程完整整理了Detectron2 实例分割训练的核心复现流程。实际操作时建议先确认 GPU、依赖版本、数据集路径和模型权重路径再逐段运行 notebook。后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式SAM 3 视频分割实战教程用文本提示分割并跟踪视频中的目标Detectron2 实例分割训练实战COCO 数据注册、训练与评估-本文