我已经给出了pytorch模型文件,并给出了一些目标检测结果。对象检测结果给出了识别它检测到的对象类型的编号,但是我需要模型文件中的名称。
我发现的一些python代码如下所示
model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half)
stride, names, pt = model.stride, model.names, model.pt我很确定我需要获得names数组,但我使用的是java,而不是python。我查看了ai.djl.pytorch.engine.PtModel,但是找不到从数字到名称的映射。
看起来DeepJavaLibrary甚至不能支持加载普通的.pt文件:
String fname = "/tmp/yolov5s.pt";
{
PtEngine engine = (PtEngine) Engine.getEngine("PyTorch");
Model model = engine.newModel("bacon", null);
model.load(new File(fname).toPath());
Block block = model.getBlock();
System.out.println(block);
}Exception in thread "main" ai.djl.engine.EngineException: PytorchStreamReader failed locating file constants.pkl: file not found
at ai.djl.pytorch.jni.PyTorchLibrary.moduleLoad(Native Method)
at ai.djl.pytorch.jni.JniUtils.loadModule(JniUtils.java:1550)
at ai.djl.pytorch.engine.PtModel.load(PtModel.java:90)
at ai.djl.Model.load(Model.java:110)
at project.pictureServer.PyTorchFile.main(PyTorchFile.java:37)使用Java和PyTorch模型文件将对象/类编号映射到名称的正确方法是什么?
发布于 2022-09-21 23:34:42
问:从pyTorch模型文件映射到的正确方法是什么?
答:我认为pyTorch模型文件只是泡菜对象的序列化。一种选择可能是PythonPickle。
你的挑战是阅读PyTorch (.pt?)Java中的模型文件。
总之-请告诉我们你的决定。
https://stackoverflow.com/questions/73803672
复制相似问题