【Detectron2】入门02-使用自己的数据集

Detectron2 official Documents: https://detectron2.readthedocs.io/tutorials/datasets.html

目录

COCO格式数据集

Standard dataset dict

Datasets的Metadata


COCO格式数据集

ref: COCO - Common Objects in Contexticon-default.png?t=L9C2https://cocodataset.org/#format-data

有两种方法,第一种是Detectron2官方提供的组织数据集格式:Standard Dataset Dict;第二种是将数据集转换为COCO format,然后用register_coco_instances()函数注册数据集。

from detectron2.data.datasets import register_coco_instances

register_coco_instances(dataset_name, {}, json_file, image_root)

在COCO格式下,所有图片需放在一个文件夹下,另有一个单独的json文件。这个json文件包含了所有的annotations, metadata, categories。如果想要对数据集做划分,那么就建立多个文件夹,并用不同的json文件。 具体来说:

  • the coco dataset's json is a dict, and its keys is categories, images, annotations;
  • the categories is a list, and each item is a dict which keys are supercategory,id,name;
  • the images is a list, and each item is a dict which keys are file_name,height,width,id,depth;
  • the annotations is a list, and each item is a dict which keys are category_id,segmentation,area,id,iscrowd

Standard dataset dict

dataset APIs: DatasetCatalog, MetadataCatalog

建立自己的数据集,包含两步:

  1. 登记数据集,告诉detectron2如何获得数据集;
  2. 为数据集登录Metadata

建立函数,范数返回如下格式的数据:

  1. Detectron2的Standard dataset dict
  2. 增加额外的key,方便在之后的downstream的任务中处理他们

对于标准任务:instance detection, instance/semantic/panoptic segmentation, keypoint detection。我们把原始数据载入到list[dict]中,类似于COCO的annotations。每一个字典包含一张照片的信息,字典应该有以下部分:

  • file_name:到这张图片的完整路径,如果图片有EXIF metadata,可能会在图片上做随机旋转或反转
  • height, width:整型,图片的形状
  • image_id:整型/字符,unique id
  • annotations:list[dict],每一个dict对应图片中一个instance,如果annotations是空表,则代表该图片没有目标,会在训练中被去除,具体每个dict包含:

bbox list[float]:代表bbox的四个数

bbox_mode:整型,bbox的格式,必须是structures.BoxMode的成员,目前支持BoxMode.XYXY_ABS和BoxMode.XYWH_ABS

category_id:整型,属于[0, num_categories - 1]

  • 对于Fast R-CNN (with precomputed proposals),还有一些额外的keys需要:

proposal_bboxes (array) 2维numpy array,形状是(K, 4),代表K个precomputed proposal boxes

proposal_objectness_logits numpy array,形状是(K, )和proposal在proposal_boxes的objectness logits相关

proposal_bbox_mode 类似于bbox_mode

Datasets的Metadata

通过MetadataCatalog.get(dataset_name).some_metadata获取,Metadata是一个键值对,包含了整个数据的一些信息,例如,类别的名字,类别的颜色,文件的根目录。这对于augmentation,evaluation,visualization,Logging等有用。

通过MetadataCatalog.get(dataset_name).some_key = some_value来填充

  • thing_classes: list[str]
  • thing_colors: list[tuple(r, g, b)] r,g,b in [0,255],如果不给,则随机产生

另外还需更新新数据集的config:

cfg.Datasets.TRAIN或cfg.Datasets.TEST

MODEL.ROI_HEADS.NUM_CLASSES和MODEL.RETINANET.NUM_CLASSES是R-CNN和RetinaNet的类

### 安装和运行 Detectron2 的方法 #### Windows 上安装 Detectron2 尽管官方文档主要支持 Linux 和 macOS 平台,但在 Windows 上也可以通过一些额外配置来实现 Detectron2 的安装和运行。以下是具体的方法: 1. **创建 Conda 虚拟环境** 使用 Anaconda 或 Miniconda 创建一个新的虚拟环境并激活它。这可以确保依赖项不会与其他项目冲突。 ```bash conda create -n detectron2 python=3.8 -y conda activate detectron2 ``` 这一步是为了准备一个干净的 Python 环境[^1]。 2. **安装 PyTorch 及其相关库** 根据您的 GPU 配置(如果有),从 [PyTorch 官方网站](https://pytorch.org/) 获取适合您系统的命令,并执行该命令以安装 PyTorch 和 torchvision。例如: ```bash pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio===0.9.0 -f https://download.pytorch.org/whl/torch_stable.html ``` 此外,还需要确认 CUDA 版本与 NVIDIA 显卡驱动兼容。如果未配备 GPU,则可以选择 CPU-only 的版本[^2]。 3. **克隆 Detectron2 仓库** 下载 Detectron2 源码到本地目录并通过 `pip` 工具完成开发模式下的安装。 ```bash git clone https://github.com/facebookresearch/detectron2.git cd detectron2 pip install -e . ``` 如果遇到任何编译错误,请仔细阅读控制台输出日志定位问题所在位置[^3]。 4. **验证安装是否成功** 执行以下脚本来测试基本功能是否正常工作: ```python import detectron2 print(detectron2.__version__) ``` 5. **可选:设置 WSL (Windows Subsystem for Linux)** 对于更复杂的训练任务或者需要利用 Docker 来简化部署流程的情况,在 Windows 中启用 WSL 是一种推荐的方式。WSL 提供了一个接近原生 Linux 的环境从而减少跨平台差异带来的麻烦[^4]。 --- ### 常见问题及其解决办法 - **Q:** 我尝试按照上述步骤操作但是仍然出现了很多奇怪的错误怎么办? A: 很多时候这些问题是由于不同软件包之间存在版本不匹配引起的。建议严格按照官方指南中的说明选择合适的组件组合;另外注意查看是否有最新的更新可用因为开发者可能已经修复了一些已知缺陷。 - **Q:** 是否可以在没有 GPU 支持的情况下仅依靠 CPU 来跑模型? A: 当然可以这样做只是性能会受到很大影响尤其是当处理大规模数据集时速度可能会变得非常慢因此如果不是特别必要的话还是尽量争取获得至少一块入门级显卡用于加速计算过程. - **Q:** 如何自定义自己的目标检测数据集并与之配合使用? A: 结合 Colab 笔记本文档描述的内容依次完成导入必要的模块、下载标注好的图片文件夹结构转换成 COCO JSON 文件格式最后加载至框架内部作为输入源之一参与后续环节比如可视化预览效果调整超参数设定等等一系列动作直至最终得到满意的结果为止. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值