detectron2配置与部署

1、配置文件

Detectron2提供了一个基于键值的配置系统,该系统可用于获取标准的常见行为。

Detectron2的配置系统使用YAML和yacs。除了访问和更新配置的基本操作外,我们还提供以下额外功能:

  1. 该配置可以具有字段,该字段将首先加载基本配置。如果存在任何冲突,则基本配置中的值将在子配置中被覆盖。我们为标准模型架构提供了一些基本配置。_BASE_:base.yaml

  2. 我们提供配置版本控制,以实现向后兼容。如果您的配置文件使用config行这样的版本进行版本控制,即使将来我们更改某些密钥,detectron2仍会识别该文件。VERSION:2

配置文件是一种非常有限的语言。我们不希望Detectron2中的所有功能都可以通过配置使用。如果您需要的配置空间不可用,请使用detectron2的API编写代码。

1.1、基本用法

CfgNode这里显示了该对象的一些基本用法。请参阅文档中的更多内容

from detectron2.config import get_cfg
cfg = get_cfg()    # obtain detectron2's default config
cfg.xxx = yyy      # add new configs for your own custom components
cfg.merge_from_file("my_cfg.yaml")   # load values from a file

cfg.merge_from_list(["MODEL.WEIGHTS", "weights.pth"])   # can also load values from a list of str
print(cfg.dump())  # print formatted configs

detectron2中的许多内置工具都接受命令行配置覆盖:命令行中提供的键值对将覆盖配置文件中的现有值。例如,demo.py可以与

./demo.py --config-file config.yaml [--other-options] \
  --opts MODEL.WEIGHTS /path/to/weights INPUT.MIN_SIZE_TEST 1000

要查看detectron2中可用配置的列表及其含义,请查看“ 配置参考”

1.2、配置最佳实践

  1. 将您编写的配置视为“代码”:避免复制或复制它们;用于_BASE_在配置之间共享公用部分。

  2. 使您编写的配置保持简单:不要包含不会影响实验设置的键。

  3. 在您的配置(或基本配置)中保留一个版本号,例如,以便向后兼容。读取没有版本号的配置时,我们会打印警告。官方配置不包含版本号,因为它们始终是最新的。VERSION:2

2、部署方式

2.1、Caffe2部署

我们目前支持通过ONNX将detectron2模型转换为Caffe2格式。转换后的Caffe2模型可以在Python或C ++中运行而无需detectron2依赖性。它具有针对CPU和移动设备推理优化的运行时,但不适用于GPU推理。

Caffe2转换需要PyTorch≥1.4和ONNX≥1.6。

2.2、覆盖范围

它支持3种最常见的元体系结构:GeneralizedRCNN,,RetinaNet和 PanopticFPN,以及这3种元体系结构下的大多数官方模型。

只要用户的自定义扩展名不包含Caffe2中不可用的控制流或运算符(例如,可变形卷积),就支持这些体系结构下的用户自定义扩展名(通过注册添加)。例如,开箱即用通常支持自定义主干和头部。

2.3、用法

转换API记录在API文档中。我们提供了一个工具,caffe2_converter.py作为使用这些API转换标准模型的示例。

要转换经过COCO培训的官方Mask R-CNN,请先 准备COCO数据集,然后从Model Zoo中选择模型,然后运行:

cd tools/deploy/ && ./caffe2_converter.py --config-file ../../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \
	--output ./caffe2_model --run-eval \
	MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl \
	MODEL.DEVICE cpu

注意:

  1. 转换需要有效的样本输入和权重来跟踪模型。这就是脚本需要数据集的原因。您可以修改脚本以其他方式获取样本输入。

  2. 带有--run-eval标志,它将评估转换后的模型以验证其准确性。由于不同实现之间的数值精度,精度通常与PyTorch略有不同(在0.1 AP内)。如果转换不支持您的自定义模型,建议始终验证准确性。

转换后的模型位于指定caffe2_model/目录中。部署需要两个文件model.pb ,model_init.pb其中包含网络结构和网络参数。然后可以使用Caffe2的API将这些文件加载​​到C ++或Python中。

该脚本生成model.svg包含网络可视化文件。您也可以加载model.pb到诸如netron之类的工具以使其可视化。

2.4、在C ++ / Python中使用模型

该模型可以用C ++加载。给出了一个示例caffe2_mask_rcnn.cpp,该示例使用进行CPU / GPU推理COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x。

C ++示例需要使用以下代码构建:

  • 内置caffe2的PyTorch

  • gflags,glog,opencv

  • 符合您caffe2版本的protobuf标头

  • 如果caffe2是使用MKL构建的,则为MKL标头

以下可以在官方detectron2 docker内部编译示例:

sudo apt update && sudo apt install libgflags-dev libgoogle-glog-dev libopencv-dev
pip install mkl-include
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.tar.gz
tar xf protobuf-cpp-3.6.1.tar.gz
export CPATH=$(readlink -f ./protobuf-3.6.1/src/):$HOME/.local/include
export CMAKE_PREFIX_PATH=$HOME/.local/lib/python3.6/site-packages/torch/
mkdir build && cd build
cmake -DTORCH_CUDA_ARCH_LIST=$TORCH_CUDA_ARCH_LIST .. && make

# To run:
./caffe2_mask_rcnn --predict_net=./model.pb --init_net=./model_init.pb --input=input.jpg

注意:

  • 所有转换的模型(.pb文件)都采用两个输入张量:“ data”是一个NCHW图像,“ im_info”是一个Nx3张量,每个图像由(高度,宽度,1.0)组成(形状可能是“ data”)由于填充而比“ im_info”中的大)。

  • 转换后的模型不包含将原始图层输出转换为格式化的预测的后处理操作。该示例仅从未经后期处理的最终层生成原始输出(28x28蒙版),因为在实际部署中,应用程序通常需要自定义的轻量级后期处理(例如,通常无需为每个检测到的对象使用全图像蒙版) )。

我们还在Caffe2Model .__ call__方法中为转换后的模型提供了python包装器 。此方法的接口与模型pytorch版本相同,并且在内部应用预处理/后处理代码以匹配格式。它们可以作为实际部署中的预处理的参考。

detectron2配置安装,总目录

1、coco数据集下载格式解析

2、win10下detectron2环境配置

3、windows10离线安装pycocotools

4、detectron2代码运行及数据集配置

5、detectron2使用自定义数据集及数据加载

6、detectron2模型使用、读写、训练及测试

7、detectron2配置与部署

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Detectron2是一个用于计算机视觉任务的开源软件库,它是Facebook Research团队开发的。它提供了一系列强大的工具和算法,用于目标检测、实例分割和关键点检测等任务。如果你想在本地使用Detectron2,可以按照以下步骤进行操作: 1. 首先,你需要将Detectron2库下载到本地。你可以使用以下命令将其克隆到本地: ``` git clone https://github.com/facebookresearch/detectron2.git ``` 2. 接下来,你需要安装Detectron2的依赖项。你可以使用以下命令安装所需的依赖项: ``` python -m pip install -e detectron2 ``` 3. 在安装完成后,你可能需要进行一些修改以解决一些已知的问题。根据你提供的引用内容,以下是一些可能需要修改的地方: - 在`detectron2/layers/csrc/ROIAlignRotated/ROIAlignRotated_cuda.cu`文件中,将所有的`ceil`改为`ceilf`。 - 在`detectron2/layers/csrc/deformable/deform_conv_cuda_kernel.cu`文件中,将所有的`floor`改为`floorf`。 - 在`torch/include/torch/csrc/jit/ir/ir.h`文件中,将第1347行的代码注释掉:`// static constexpr Symbol Kind = ::c10::prim::profile_optional`。 - 在`detectron2/layers/csrc/cocoeval/cocoeval.cpp`文件中,修改第487行的代码:`// localtime_r(&rawtime, &local_time); localtime_s(&local_time,&rawtime);` 完成以上步骤后,你就可以在本地使用Detectron2进行计算机视觉任务了。希望这些信息对你有所帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [深度学习 | Detectron2使用指南](https://blog.csdn.net/qq_43701912/article/details/123590274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Win10下安装Detectron2,超详细教程!](https://blog.csdn.net/zzy153/article/details/120693321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值