ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

航拍图像建筑物数据集 瓦林根航拍图像建筑物实例分割数据集 并实现可视化与评估 用于_mask rcnn等网络的训练与测试_ 714张图像,2939栋建筑物;建筑物实例分割数据集

航拍图像建筑物数据集 瓦林根航拍图像建筑物实例分割数据集 并实现可视化与评估 用于_mask rcnn等网络的训练与测试_ 714张图像,2939栋建筑物;建筑物实例分割数据集 瓦林根航拍图像建筑物实例分割数据集(已转为标准coco格式)城市:德国瓦林根规模:714张图像2939栋建筑物地面分辨率:9cm用途:mask rcnn等网络的训练与测试wurzburg_aerial_dataset/ ├── images/ │ ├── img_00001.jpg │ ├── img_00002.jpg │ └── ... └── annotations/ ├── instances_default.json # COCO格式的标注文件当然使用Mask R-CNN进行训练和测试是一个常见的任务。我们将使用Detectron2库来实现这一目标。Detectron2是由Facebook AI Research开发的一个强大的计算机视觉库特别适合处理实例分割任务。环境准备首先确保你已经安装了Detectron2和其他必要的Python库# 安装pytorchpipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 根据你的CUDA版本选择合适的命令# 安装detectron2pipinstalldetectron2-fhttps://dl.fbaipublicfiles.com/detectron2/wheels/cu118/index.html# 根据你的CUDA版本选择合适的命令# 安装其他必要的库pipinstallnumpy opencv-python-headless matplotlib pycocotools数据集结构假设你的数据集目录结构如下wurzburg_aerial_dataset/ ├── images/ │ ├── img_00001.jpg │ ├── img_00002.jpg │ └── ... └── annotations/ ├── instances_default.json # COCO格式的标注文件创建配置文件config.yaml我们需要创建一个配置文件来描述训练参数和数据集路径。Detectron2提供了许多预定义的配置文件我们可以在此基础上进行修改。注册数据集我们需要注册数据集以便Detectron2能够找到并加载它们。编写训练脚本下面是一个完整的训练脚本用于使用Mask R-CNN训练建筑物实例分割数据集运行训练脚本将上述代码保存为一个Python文件例如train_wurzburg_maskrcnn.py然后在终端中运行python train_wurzburg_maskrcnn.py --config-file config.yaml解释注册数据集: 使用register_coco_instances函数注册训练和验证数据集。设置日志记录器: 使用setup_logger设置日志记录器。配置文件: 使用get_cfg加载配置文件并根据需要进行调整。自定义评估器: 继承DefaultTrainer并重写build_evaluator方法以使用COCOEvaluator。主函数: 设置参数、构建模型、加载权重、启动训练或评估。可视化预测结果使用 Detectron2 进行预测和可视化Detectron2 提供了方便的工具来进行预测和可视化。以下是一个完整的脚本用于加载训练好的模型并对测试集中的图像进行预测和可视化解释注册数据集: 使用register_coco_instances函数注册训练和验证数据集。加载配置文件: 使用get_cfg加载配置文件并指定训练好的模型权重路径。构建模型: 使用build_model构建模型并加载权重。测试集路径: 指定测试集图像路径。创建输出目录: 创建用于保存结果图像的目录。获取元数据: 获取数据集的元数据信息。遍历测试集中的所有图像: 使用Path(./wurzburg_aerial_dataset/images).glob(*.jpg)获取所有测试图像路径。读取图像: 使用cv2.imread()读取图像。预测: 使用训练好的模型对图像进行预测。可视化: 使用Visualizer将预测结果绘制到图像上。保存结果图像: 将处理后的图像保存到指定的输出目录。运行脚本将上述代码保存为一个Python文件例如evaluate_and_visualize_wurzburg_maskrcnn.py然后在终端中运行python evaluate_and_visualize_wurzburg_maskrcnn.py结果运行脚本后你会在./wurzburg_aerial_dataset/output目录中看到带有预测结果的图像。这些图像会在检测到的建筑物上绘制边界框、标签和掩码。通过这些步骤你可以全面地评估和可视化你的建筑物实例分割模型的表现。如果需要进一步优化模型可以根据评估结果调整超参数或增加数据增强技术。使用Mask R-CNN评估和可视化瓦林根航拍图像建筑物实例分割数据集importcv2importnumpy as np from detectron2.configimportget_cfg from detectron2.modelingimportbuild_model from detectron2.checkpointimportDetectionCheckpointer from detectron2.dataimportMetadataCatalog, DatasetCatalog from detectron2.utils.visualizerimportVisualizer from detectron2.data.datasetsimportregister_coco_instances from pathlibimportPath# 注册数据集register_coco_instances(wurzburg_train,{},./wurzburg_aerial_dataset/annotations/instances_default.json,./wurzburg_aerial_dataset/images)register_coco_instances(wurzburg_val,{},./wurzburg_aerial_dataset/annotations/instances_default.json,./wurzburg_aerial_dataset/images)# 加载配置文件cfgget_cfg()cfg.merge_from_file(./config.yaml)cfg.MODEL.WEIGHTS./output/model_final.pth# 替换为你训练好的模型路径cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST0.5# 设置置信度阈值# 构建模型modelbuild_model(cfg)DetectionCheckpointer(model).load(cfg.MODEL.WEIGHTS)model.eval()# 测试集路径test_image_dirPath(./wurzburg_aerial_dataset/images)# 创建输出目录output_dirPath(./wurzburg_aerial_dataset/output)ifnot output_dir.exists(): output_dir.mkdir(parentsTrue,exist_okTrue)# 获取元数据metadataMetadataCatalog.get(wurzburg_val)# 遍历测试集中的所有图像forimage_pathintest_image_dir.glob(*.jpg):# 读取图像imagecv2.imread(str(image_path))# 预测outputsmodel([{image:torch.as_tensor(image.transpose(2,0,1))}])[0]# 可视化vVisualizer(image[:, :, ::-1],metadatametadata,scale1.2)outv.draw_instance_predictions(outputs[instances].to(cpu))# 保存结果图像output_pathoutput_dir / image_path.name cv2.imwrite(str(output_path), out.get_image()[:, :, ::-1])print(预测和可视化完成结果保存在 ./wurzburg_aerial_dataset/output 目录中)
返回列表