首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用什么java从PyTorch模型文件中提取名称?

我可以使用什么java从PyTorch模型文件中提取名称?
EN

Stack Overflow用户
提问于 2022-09-21 15:48:21
回答 1查看 41关注 0票数 0

我已经给出了pytorch模型文件,并给出了一些目标检测结果。对象检测结果给出了识别它检测到的对象类型的编号,但是我需要模型文件中的名称。

我发现的一些python代码如下所示

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
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模型文件将对象/类编号映射到名称的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-09-21 23:34:42

问:从pyTorch模型文件映射到的正确方法是什么?

答:我认为pyTorch模型文件只是泡菜对象的序列化。一种选择可能是PythonPickle

你的挑战是阅读PyTorch (.pt?)Java中的模型文件。

  • 另一种方法是“反向工程”您感兴趣的格式的那些部分,并编写您自己的".pt解码器“。 听起来你已经走上了这条路,并取得了一些成功。如果这对你有用的话-太好了!
  • 因为".pt“文件只是”腌制的Python",所以我建议尝试PythonPickle。它非常“轻量级”,看起来它可以完成你想要的一切--甚至更多。
  • 另一种选择可能是DeepJavaLibrary,这是一组用于pyTorch的Java语言绑定。
  • 谁知道呢--您甚至可能想要编写一个小Python脚本到( a)读取一个.pt文件,b)将它写到JSON。

总之-请告诉我们你的决定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73803672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档