做了个目标检测项目,想把模型最后运用起来,奈何自己只会nodejs,不会java啥的,找了很多博客,基本上没有这样做过,最终在看了node运行命令行,以及多条命令行的运行相关知识,参考了其他大佬的知识,做了出来。
1.初始化项目在一个文件夹中打开cmd命令行,输入 express -e XXX
XXX为你的项目名字
在app.js 中添加代码,监听8090端口
在routes文件夹中的index.js中添加代码:
首先引入相关库child_process
const child_process = require('child_process');
然后用child_process .exec()方法
第一个输入字符串就是你cmd命令行要执行的内容,也就是node帮你开了一个shell执行cmd命令
'activate pytorch && cd /d "E:/xiamen/web/public/test_val" && python run_on_seq.py'
这里第一个命令是 activate pytorch 就是激活你的anaconda下创建的pytorch环境
然后执行命令 cd /d “E:/xiamen/web/public/test_val” 进入你py文件代码的文件夹
最后就是运行 python run_on_seq.py
代码如下:
router.get('/calculation',function(req,res,next){
//创建子进程
//这里是shell语句,可以通过&&将多条命令执行,这里cmd 用activate就可以激活,只有conda的shell才需要加conda
var workerProcess = child_process.exec('activate pytorch && cd /d "E:/xiamen/web/public/test_val" && python run_on_seq.py', function (error, stdout, stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+error.code);
console.log('Signal received: '+error.signal);
}else{
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
res.send(eval(stdout)) //这里要eval一下,然后在客户端才能eval将字符串转化为json数组
}
});
workerProcess.on('exit', function (code) {
console.log('子进程已退出,退出码 '+code);
});
});
总结
之前就一直在想怎么用node把深度学习的模型运行起来,做一个交互。这下终于完成了,这个方法也适用于TensorFlow,改一改命令就行了,博客有不足之处,欢迎在评论中提出!
参考博客:
https://www.jianshu.com/p/b1dc42c152ab



