AI模型跨语言调用
前言
目前AI训练的模型只支持python调用,如果要使用c++或者在java中调用就显得极为不方便,本文采用一种将AI模型调用API使用Socket做二次封装做为一个客户端,提供给其他语言的服务端调用。
环境:
- win10
- python-3.6
- torch-1.1
- torchvision-0.3.0
服务端发送指令使用pytorch模型,返回模型结果
import torch |
1.使用pyinstall打包python文件为exe文件
terminine切换到anaconda指定的python环境下,cd切换到打包路径执行
pyinstaller -F -c use_model.py
2.在terminine执行打包好的exe文件
问题:could not get source code
terminine报错 如下
File “site-packages\torchvision\ops\misc.py”, line 135, in
File “site-packages\torchvision\ops\misc.py”, line 148, in FrozenBatchNorm2d
File “site-packages\torch\jit_init_.py”, line 850, in script_method
File “site-packages\torch\jit\frontend.py”, line 152, in get_jit_def
File “inspect.py”, line 973, in getsource
File “inspect.py”, line 955, in getsourcelines
File “inspect.py”, line 786, in findsource
OSError: could not get source code
解决办法:更换更低版本的torchvision
pip uninstall torchvision
pip install torchvision==0.2.2.post3
其他语言调用
在其他语言中创建一个Socker服务端,开启服务,需要使用到时候给客户端发送图片的路径,客户端接收到路径会去调用模型,得到预测结果并返回给socker服务器
总结
这里目前做得还是有问题,应该把AI模型部分作为服务端。由于后来领导改需求了,这个思路并没有完成,这篇文章也算给大家提供思路吧。
有任何疑问和想法,欢迎在评论区与我交流。