tornado调用tensorflow模型对视频进行处理

本文介绍如何在Tornado框架下部署TensorFlow模型,实现视频处理服务。包括环境配置、模型调用及客户端交互过程,适用于后端开发与深度学习应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统环境:

linux系统:ubuntu16.04

tensorflow:tensorflow-1.13.1-cp35-cp35m-linux_x86_64.whl

python:3.5

OpenCV:3.4.5

 

1、安装tornado

sudo apt install python3-pip
pip3 install tornado

查看版本号,安装完成

2、运行官方例程 helloworld.py

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
python3 helloworld.py

打开浏览器,输入http://127.0.0.1:8888即可

3、tornado调用tensorflow模型对视频进行处理

服务端代码video_server.py如下:

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import requests
import base64
from PIL import Image
from io import BytesIO
import numpy as np
import cv2
import json

from tornado.options import define, options

from tf_human_pose_pb import runVideo

tensorflow_model = r"/mnt/c/workspace/code/model.pb"

# http://127.0.0.1:8888/video
define("port", default=8888, help="run on the given port", type=int)


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("run demo ......")

class testHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("test!!!")
    def post(self):
        ## using json 
        jsonbyte = self.request.body
        jsonstr = jsonbyte.decode('utf8')
        args = json.loads(jsonstr)
        video_url = args.get('video_url')

        if video_url is not None:
            to_return = {}
            output = runVideo(video_url,tensorflow_model)
            to_return['result'] = output
            self.write(json.dumps(to_return))
        else:
            self.write_error(401)
            return


def main():
    tornado.options.parse_command_line()
    application = tornado.web.Application([(r"/", MainHandler), (r"/video",testHandler)])
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port,address='0.0.0.0')
    tornado.ioloop.IOLoop.current().start()


if __name__ == "__main__":
    main()

客户端代码http_client.py如下:

import requests
import json


response = requests.post('http://XXX.XXX.XXX.XXX:8888/video', json.dumps({"video_url": "https://XXXXXXXXXX视频下载地址XXXXXXXXXXX"}))
print(response.json())

先运行服务端代码,再运行客户端代码,可以在服务端的命令行窗口那看到显示下面这行信息

 

其他的测试工具,可以用Postman或者火狐浏览器的插件RESTClient

在浏览器附加组件选项中搜索RESTClient,如下图

添加启用该组件后就可以愉快地玩耍了

 

参考链接

tornad官网:https://www.tornadoweb.org/en/stable/

 

参考资源链接:[使用Python3.6和Tornado开发RESTful API,部署机器学习模型](https://wenku.youkuaiyun.com/doc/5cndg6wyai?utm_source=wenku_answer2doc_content) 结合Python 3.6和Tornado框架开发RESTful API,并部署和调用机器学习模型,是当前人工智能领域中的一个重要实践。为了应对这一挑战,这里建议参考《使用Python3.6和Tornado开发RESTful API,部署机器学习模型》这一资源。该文档详细介绍了整个开发流程,包括创建API、部署模型以及API的调用等,非常适合希望深入理解并实践相关技术的开发者。 首先,理解RESTful API的基本概念至关重要。RESTful API使用标准HTTP方法进行通信,并强调无状态操作,这使得它非常适合部署在需要高并发和实时处理的场景中,比如机器学习模型的预测服务。Python 3.6提供了f-string和类型提示等特性,这些可以提升代码的清晰度和效率,为API的开发提供便利。 Tornado框架由于其轻量级和非阻塞的IO特性,非常适合用来创建性能良好的API。在Tornado中,你可以通过继承RequestHandler类来创建API路由和处理逻辑。同时,利用Python 3.6的新特性,如异步编程支持,可以进一步提高API处理请求的效率。 部署机器学习模型通常需要考虑模型的序列化、接口定义以及安全和效率问题。你可以选择合适的工具和框架,例如TensorFlow Serving,来帮助你部署模型调用模型则涉及到通过API发送数据给模型,并返回处理结果。 在整个过程中,测试和维护是不可或缺的环节。单元测试、集成测试和负载测试确保了API的质量,而文档更新、版本管理和性能优化则是API长期运行的关键。 综上所述,通过学习这份文档,你将能够掌握从API设计到机器学习模型部署和调用的整个过程。为了深入掌握这些知识,并能在实际项目中应用,建议你阅读《使用Python3.6和Tornado开发RESTful API,部署机器学习模型》。这份资源不仅能帮助你理解理论知识,还能通过实践案例,提高你在实际开发中的问题解决能力。 参考资源链接:[使用Python3.6和Tornado开发RESTful API,部署机器学习模型](https://wenku.youkuaiyun.com/doc/5cndg6wyai?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值