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

xytpbqjk  于 2022-11-09  发布在  Java
关注(0)|答案(1)|浏览(110)

我已经得到了一个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,但是没有发现任何看起来像是从数字到名称的Map。
看起来DeepJavaLibrary甚至不支持加载一个普通的.pt文件:
第一个
使用Java和PyTorch模型文件将对象/类编号Map到名称的正确方法是什么?

jhiyze9q

jhiyze9q1#

问:从pyTorch模型文件Map到Java对象的正确方法是什么?
答:我认为pyTorch模型文件只是Python对象的pickle序列化,一个替代方案可能是PythonPickle
您的挑战是读取Java中的PyTorch(.pt?)模型文件。

  • 一种替代方法是对您感兴趣的格式部分进行“反向工程”,并编写您自己的“.pt解码器”。

听起来你已经开始走这条路了,并且取得了一些成功。如果这对你有用的话-太好了!

  • 由于. pt文件只是“pickle Python”,我建议试试PythonPickle。它非常“轻量级”,看起来它可以做你想做的一切--甚至更多。
  • 另一个替代方案可能是DeepJavaLibrary,这是一组用于pyTorch的Java语言绑定。
  • 谁知道呢--您甚至可能希望编写一个小Python脚本来a)读取.pt文件,B)将其写入JSON。

无论如何-请让我们知道你的决定。

相关问题