问题标签 [detectron]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 Detectron2 进行每图像模型评估
我已经使用Detectron2训练了一个自定义图像分割模型,并且我已经成功地对一批图像进行了推理和模型评估,主要是按照创建者提供的Colab Notebook中的指南进行的。
现在,我还想为测试数据集中的每个图像而不是整个批次收集评估指标(AP 或 mAP)。为此,我修改了inference_on_dataset
函数,将原始代码的最后一位从
进入
Whereimg_ids
是要评估的图像列表,res_dict
最初是空字典。这样做,推理应该只对整批图像运行一次,而对每个图像进行评估,将结果保存在字典中。
for循环的前两次迭代一切正常,但在第三次迭代时,出现以下错误
但是预测都是正确的,并且在正确的 ID 范围(0-3)内,我不明白 4 是从哪里来的。此外,如前所述,问题仅出现在第三次迭代中,而且奇怪的是,它独立于图像(如果我交换列表中图像的顺序,如果它在第一次迭代中,相同的图像不会出错两个位置)。也许每次迭代都必须以某种方式重置评估过程,但我找不到任何函数可以这样做(除非我也清除了预测)。
关于如何在测试数据集的每个图像上递归运行评估的任何想法?谢谢!
deep-learning - 如何在 Detectron2 中使用 DefaultTrainer 保存模型?
如何使用 DefaultTrainer 在 Detectron2 中保存检查点?这是我的设置:
我得到错误:
文档:https ://detectron2.readthedocs.io/en/latest/modules/checkpoint.html
pytorch - Detectron2 的 DefaultPredictor 中的图像大小
对于物体检测,我使用的是detectron2。我想修复输入图像的大小,所以我制作了我的自定义数据加载器:
我想知道的是预测,我可以使用Detectron2的DefaultPredictor并将我的图像调整为(1200、1200)作为prepossessing,然后再发送到预测器?或者 DefaultPredictor 在预测之前调整图像大小,我必须重写一个函数来调整大小为 (1200, 1200)?
python - 将Detectron2实例分割转换为opencv Mat数组
我正在尝试从使用 Detectron2 执行的实例分割输出中获取二进制图像。根据官方文档,掩码的输出格式如下:
“pred_masks”:形状 (N, H, W) 的张量,每个检测到的实例的掩码。
所以我尝试将其转换为 numpy:
mask = outputs["instances"].get("pred_masks").numpy()
输出如下:
但是数据类型是布尔值,所以我添加了以下行以更接近 opencv 格式:
array = (mask > 126) * 255
这就是我所到之处。我希望能够将每个蒙版单独可视化为 opencv 图像:
cv2.imshow("Mask", mask)
,而无需保存图像。
先感谢您。
json - 将 json 注解转换为 coco 格式
我已经使用 vott 注释了我的数据,默认格式是 json。我想将我的数据加载到detectron2模型,但似乎所需的格式是coco。谁能告诉我如何将我的数据从 json vott 转换为 coco 格式?
pytorch - 将detectron2模型导出到torchscript时得到“无法导出Python函数调用'_ScaleGradient'”
通过 Detectron2 训练了一个模块后,我尝试将模型导出到 TorchScript,然后出现以下错误:
无法导出 Python 函数调用“_ScaleGradient”。删除对 Python 函数的调用 > 在导出之前。您是否忘记添加 @script 或 @script_method 注释?如果这是 > nn.ModuleList,请将其添加到 __constants__
我发现代码在detectron2/modeling/roi_heads/cascade_rcnn.py
所以我将@statcmethod annos 更改为@torch.jit.script_method,之后出现“'ScriptMethodStub' 对象不可调用”错误。
我对torchscript不熟悉,如何解决这个问题?
提前致谢。
deep-learning - 如何在训练集中训练没有边界框但有分割标签的detectron2模型
我有一个训练数据集,其中包含许多图像但没有边界框注释。我在验证和测试数据集中对图像进行了注释。目标是使用验证(带 bbox)和训练数据集(不带 bbox)训练detectron2 模型,而不影响模型的准确性。当我尝试使用验证数据集训练模型时,准确度仅为 71%,但当我尝试将训练数据集和验证数据集结合起来时,准确度降低到 9%。我正在使用 Faster RCNN 是一种对象检测架构 (faster_rcnn_R_50_FPN_1x.yaml) 有人可以帮助我如何在没有边界框的情况下训练模型吗?
python-3.x - 从推理 Pytorch 接收坐标
我正在尝试获取由 Pytorches DefaultPredictor 生成的蒙版内像素的坐标,以便稍后获取多边形角并在我的应用程序中使用它。
但是,DefaultPredictor 产生了 pred_masks 的张量,格式如下: [False, False ... False], ... [False, False, .. False] 其中每个单独列表的长度是图像的长度,并且总列表的数量是图像的高度。
现在,由于我需要获取掩码内的像素坐标,因此简单的解决方案似乎是循环遍历 pred_masks,检查值并 if == "True" 创建这些元组并将它们添加到列表中。然而,当我们谈论宽度 x 高度约为 3200 x 1600 的图像时,这是一个相对较慢的过程(循环单个 3200x1600 大约需要 4 秒,但是因为有很多对象需要我进行推理最后 - 这最终会变得非常缓慢)。
使用pytorch(detectron2)模型获取检测到的对象的坐标(掩码)的更智能方法是什么?
请在下面找到我的代码以供参考:
//
编辑:在将 for 循环部分更改为压缩后 - 我设法将 for 循环的运行时间减少了 ~3 倍 - 但是,理想情况下,如果可能的话,我希望从预测器本身接收它。
performance - Detectron2 加速推理实例分割
我有工作实例分割,我正在使用“mask_rcnn_R_101_FPN_3x”模型。当我推断图像时,GPU 上大约需要 3 秒/图像。我怎样才能更快地加快速度?
我在 Google Colab 中编码
这是我的设置配置:
这是推论:
回程时间:
每张图像的推理时间为:2.7835421562194824 s
图像 I 推断大小为 1024 x 1024 像素。我改变了不同的大小,但它仍然推断出 3 秒/图像。我是否缺少有关 Detectron2 的任何信息?
更多信息 GPU 在此处输入图像描述