我只想预测一个类别,即正在检查和预测的所有84个类别中的人。
对于YOLACT,请参考https://github.com/dbolya/yolact
结果还不错,但是我想我只需要很短的时间就修改其中一个代码,但是我无法找出答案
与此相关的一个问题是,我做了他提到的事情,例如在 Yolact / layers / output_utils.py 中添加了4行,而没有进行其他更改。这些行如下:
boxes = torch.cat((boxes[classes==0], boxes[classes==2]),dim=0)
scores = torch.cat((scores[classes==0], scores[classes==2]),dim=0)
masks = torch.cat((masks[classes==0], masks[classes==2]),dim=0)
classes = torch.cat((classes[classes==0], classes[classes==2]),dim=0)
但是会出现以下错误:
RuntimeError: strides[cur - 1] == sizes[cur] * strides[cur] INTERNAL ASSERT FAILED at
/opt/conda/conda-bld/pytorch_1573049310284/work/torch/csrc/jit/fuser/executor.cpp:175,
please report a bug to PyTorch.
The above operation failed in interpreter, with the following stack trace:
terminate called without an active exception
Aborted (core dumped)
我尝试添加提及的if条件,但仍然给出错误。我正在使用pytorch 1.3
答案 0 :(得分:1)
为了在推理时显示单个类(人,id:0)输出,您只需要添加
cur_scores[1:] *= 0
yolact/layers/functions/detection.py第83行中cur_scores = conf_preds[batch_idx, 1:, :]
之后。
然后跑步
!python eval.py --trained_model=weights/yolact_resnet50_54_800000.pth --score_threshold=0.15 --top_k=15 --image=input_image.png:output_image.png
将为您提供单类推断。
如作者在issue#218中所述:
您可以进行更改以保存到NMS计算中, 只需添加
cur_scores[<everything but your desired class>] *= 0
对于索引,如果只需要一个人(类别0),则可以放置
1:
,但是如果您想要另一个类别,则需要执行2条语句:其中一条带有:<class_idx>
另一个带有<class_idx>+1
:。然后,当您运行eval时,请使用--cross_class_nms=True
运行它,这将从NMS中删除所有其他类。
其他方法是修改output_utils.py
中的输出。