之前做服务用的是golang调用C,因为go语言和C有比较好的兼容性。但是自从pytorch1.0问世及tensorflow发布了2.0,python框架的简洁和易用性,以及python的可读性,我觉得有必要去尝试一下用python做成算法API服务。Django和Flask都是python写成的服务框架,但据说Flask相较于Django更加轻量级,因此我首先尝试用Flask构建微服务的可能性。
另外这里用的深度学习框架是Pytorch,并以yolov3目标检测作为例子。
准备工作
安装pytorch:
这里建议用conda安装,版本0.4.1以上即可(建议用1.0)。按照官网建议的安装方式 即可,如果遇到下载过慢情况,可以参考这篇博客。
安装flask:
我是用conda 安装的
conda install flask
下载pytorch-yolov3:
git clone https://github.com/eriklindernoren/PyTorch-YOLOv3
我用的是这个版本,测试过检测效果是接近于原版的。
服务代码
from flask import Flask, request
from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler
import threading
import json
import base64