1 Star 0 Fork 3

ll / bd_cv3_webserver_demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

computer vision webserver project

db3_cv3_webserver_dome compliant

更新计划:

  1. 输入图片改为拖动上传的方式,检测结果以更多的形式返回,如返回整个图片,还返回分割后的图片。
  2. 添加其他简单api的支持

内容列表

背景信息

智能模型的部署方法主要有两种,一种是在互联网平台上,做成webserver的方式。一种是在生产环境中,模型需要布置在嵌入式的平台上。

本项目演示了互联网公司的一般部署方式:webserver的方式。

注意: 。

这个仓库的目标是:

  1. 项目目的:完成一个webserver的部署,实现一个类似百度ai里的接口。 例如:https://ai.baidu.com/ai-doc/IMAGERECOGNITION/Xk3bcxdum
  2. 学会一个标准接口的编写,包括错误码的定义。
  3. 学会用curl,python 等多种方法去调用我们写好的接口。
  4. 学会给我们的服务器设置鉴权方式,为商业化做好准备。

技术实现

主要在后端部分,计划用两种技术完成。一种是php+python,一种完全用python

安装

  1. 需要安装apache请确保你本地安装了它。
$ sudo apachectl -k stop & sudo apachedtl -k start
  1. 在apache服务器上配置php。
  2. 将服务器的跟目录设置为 本目录的[your_path]/web/documentroot/。设置好权限。chmod 777 /your_root_dir/
  3. 文件/web/documentroot/demo_cv_api.php负责返回json格式的数据。这是互联网企业制作网络api的一个基本demo。使用者调用这些接口得时候,可以使用/web/documentroot/python_tool里的代码,这里提供了curl的方式(curl.sh)和python的方式(post_example.py)。这部分的具体使用,调试方法可查看使用说明和接口设计。
  4. 这套代码里有两个模型,east和im2latex,这两个模型的实现代码分别在web/documentroot/EAST-tensorflow_zmm_modify,和web/documentroot/im2latex里。 demo_cv_api.php里有调用这两个模型的方法。具体可查看使用说明
  5. 在上步骤运行成功之后,打开127.0.0.1/demo_cv.php,在这个页面,可以使用east/im2latex/transformer模型来处理我们提交的图片,并查看演示效果。

以下为选做内容

  1. 安装mysql,并用以下语句建立数据库和表。建好表后,在表内适当的添加一下内容。
#建立数据库zmm
CREATE DATABASE `zmm`;
#在zmm中建立表前,先选中zmm
use zmm;
#建立数据表baiduclass
CREATE TABLE `baiduclass` (
  `id` int NOT NULL AUTO_INCREMENT,
  `info` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=62 DEFAULT CHARSET=utf8
建立好之后,表结构应该如下:
+-------+------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra          |
+-------+------+------+-----+---------+----------------+
| id    | int  | NO   | PRI | NULL    | auto_increment |
| info  | text | YES  |     | NULL    |                |
+-------+------+------+-----+---------+----------------+

#建立表baiduclasshomework
CREATE TABLE `baiduclasshomework` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` tinytext NOT NULL COMMENT '课程资料文章的标题',
  `content` text NOT NULL COMMENT '文章内容',
  `author` tinytext NOT NULL COMMENT '作者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 
表结构如下:
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| id          | int      | NO   | PRI | NULL    | auto_increment |
| title       | tinytext | NO   |     | NULL    |                |
| content     | text     | NO   |     | NULL    |                |
| author      | tinytext | NO   |     | NULL    |                |
| update_time | datetime | YES  |     | NULL    |                |
| create_time | datetime | YES  |     | NULL    |                |
+-------------+----------+------+-----+---------+----------------+
#建立表baiduclassoutziliao
CREATE TABLE `baiduclassoutziliao` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` tinytext NOT NULL COMMENT '课程资料文章的标题',
  `content` text NOT NULL COMMENT '文章内容',
  `author` tinytext NOT NULL COMMENT '作者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 
表结构如下:
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| id          | int      | NO   | PRI | NULL    | auto_increment |
| title       | tinytext | NO   |     | NULL    |                |
| content     | text     | NO   |     | NULL    |                |
| author      | tinytext | NO   |     | NULL    |                |
| update_time | datetime | YES  |     | NULL    |                |
| create_time | datetime | YES  |     | NULL    |                |
+-------------+----------+------+-----+---------+----------------+
#建立表baiduclassziliao
CREATE TABLE `baiduclassziliao` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` tinytext NOT NULL COMMENT '课程资料文章的标题',
  `content` text NOT NULL COMMENT '文章内容',
  `author` tinytext NOT NULL COMMENT '作者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
表结构如下:
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| id          | int      | NO   | PRI | NULL    | auto_increment |
| title       | tinytext | NO   |     | NULL    |                |
| content     | text     | NO   |     | NULL    |                |
| author      | tinytext | NO   |     | NULL    |                |
| update_time | datetime | YES  |     | NULL    |                |
| create_time | datetime | YES  |     | NULL    |                |
+-------------+----------+------+-----+---------+----------------+
#建立表huaweiclass
CREATE TABLE `huaweiclass` (
  `id` int NOT NULL AUTO_INCREMENT,
  `info` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
表结构如下:
+-------+------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra          |
+-------+------+------+-----+---------+----------------+
| id    | int  | NO   | PRI | NULL    | auto_increment |
| info  | text | YES  |     | NULL    |                |
+-------+------+------+-----+---------+----------------+
  1. 启动apache,然后在浏览器输入127.0.0.1/index.php,打开成功时,应该能看到如下主页面。主页index.php
  2. 点击主页面的[案例演示],会跳转到demo_cv.php,再这个页面,可以使用east/im2latex/transformer模型来处理我们提交的图片,并查看演示效果。demo_cv页面演示

使用说明

  1. 使用demo_cv_api.php和demo_cv.php前,需要先成功运行east模型和im2latex模型,可以检查如下命令是否运行成功。这两个模型的实现代码分别在web/documentroot/EAST-tensorflow_zmm_modify,和web/documentroot/im2latex里。
python EAST-tensorflow_zmm_modify/demo_use.py https://https://img2018.cnblogs.com/blog/1291224/201810/1291224-20181022204302682-772722177.png
# 这里infer.py是我重新写的前向计算过程,会有更加清晰的计算流。
python im2latex/infer.py https://img.mianfeiwendang.com/pic/1f296848e34b74eec54b5d9f/5-810-jpg_6-1080-0-0-1080.jpg
  1. 对于demo_cv.php页面,这个页面负责返回页面结果,鼠标操作查看结果。这个页面含有两个模型:east和im2latex.目前完成了east【已完成】,im2latex马上完成。实验east模型的时候,可以用这一张网络图片:https://img2018.cnblogs.com/blog/1291224/201810/1291224-20181022204302682-772722177.png,测试im2latex模型的时候,可用https://img.mianfeiwendang.com/pic/1f296848e34b74eec54b5d9f/5-810-jpg_6-1080-0-0-1080.jpg

配置east模型时,可以先在命令行把模型前向计算做好:

$ python EAST-tensorflow_zmm_modify/demo_use.py [image_url]
# east前向处理过程。
  1. 由于本代码设计到从网络下载图片,所有要求服务器上的权限要打开。打开的方式sudo chmod 777 [your_dir] .我遇到这个坑后,很久才发现解决办法。
  2. 目前im2latex模型的前向推理代码我重新整理了计算流,重新写了一下。这样看起来,计算流很多。但是模型还没有训练完成,所以我这里加载的是初始化的参数。你会看到运行结果不好。

接口设计

百度cv3网络API接口设计:

1 接口访问方式:http://localhost/demo_cv_api.php?access_token=houchangligong

2 返回的结果:
下面的数据是检测一张图片的返回结果,img_url是图片路径,net_cost是网络前向计算的耗时,nms_cost是nms部分的耗时。result中包含了100个quad,其中每个quad包含一个confidence和一个quadrangle,一个quadrangel包含4个顶点p1,p2,p3,p4.
json格式:
{
	"info": "xxx",
	"model_type":"east/im2latx",
	"output": 
	{
	        "net_cost":1,
		"nms_cost":24.6,
		"img_url":"https://https://img2018.cnblogs.com/blog/1291224/201810/1291224-20181022204302682-772722177.png",
		"result":
		{  
		"quad0": 
		    {
		        "quadrangle": 
			{
			    "p2": "263,266", 
			    "p3": "264,274", 
			    "p1": "225,269", 
			    "p4": "226,277"
			}, 
			"confidence": "0.46699054196234535"
		    },  
		"quad1": 
		    {
		        "quadrangle": 
			{
			    "p2": "263,266", 
			    "p3": "264,274", 
			    "p1": "225,269", 
			    "p4": "226,277"
			}, 
			"confidence": "0.46699054196234535"
		    }, 
		    ...
		"quad100": 
		    {
		        "quadrangle": 
			{
			    "p2": "263,266", 
			    "p3": "264,274", 
			    "p1": "225,269", 
			    "p4": "226,277"
			}, 
			"confidence": "0.46699054196234535"
		    },  
		}
	}
}



:
成功状态
{
	"msg":"OK",
	"code":200,
	“其他成功时得代码"
}
识别不出来
{
    "msg":"UNRECOGNIZED",
    "code":200,
    "img_url": "xxx",
    "data":null
}
其他错误
{
    "msg":"SERVER_ERROR",
    "code":500,
    "img_url": "xxx",
    "data":null
}
无效url
{
    "msg":"INVALID_URL",
    "code":200,
    "img_url": "xxx",
    "data":null
}

接口访问方式

crul的方式:

cd python_tool
chmod +x ./curl.sh
#./curl.sh [access_token 访问许可,例如’访问许可‘的为字符串:houchangligong],则可用下式访问:
./curl.sh houchangligong east
# 利用后厂理工的east模型
./curl.sh houchangligong im2latex
# 利用后厂理工的im2latex模型

python的方式:

cd python_tool
# 用python的post 调用east模型的 web api
python post_example.py
# 用python的post 调用im2latex模型的web api
python post_example_im2latex.py

返回的json过于复杂时,可把json复制到这个页面进行查看:https://www.sojson.com

开发日记

  • 截止20200401,这里基本完成了一个php+python版本。这个版本还需要完成得细节如下:

    • 图片下载,保存,模型识别,将结果显示,并返回json,这个过程中得每个模块都可以运行了。但是中间有些模块没有完全打通。
    • 目前只实现了EAST模型,还没有实现im2latex模型 本仓库包含以下内容:
  • 截止20200403:

    • 添加了下载文件到服务器目录。碰到的主要的坑:目录权限问题。一位是apache的httpd.conf里更改,最后用chmod 777 ~/web/documentroot解决了
    • 实现了east模型识别网络图片。打通了网络图片->本地图片->模型处理->结果图片显示。
    • 待实现内容:json接口的实现。
  • 截止20200407:

    • 实现了json接口demo_cv_api.php。使用web/documentroot/python_tool文件夹下的curl.sh和post_example.py均可完成对本接口的实用。
    • 鉴权方式
    • 返回错误码【已经完成设计,demo_cv_api.php中待实现,】
    • im2latex模型【待实现】
  • 截止20200408:

    • 实现了im2latex模型的inference部分。模型参数是初始化的,输入一张图片,输出图片对应的latex。代码在web/documentroot/im2latex文件夹下,模型需要的环境还需要读者自己配备,我后续会完善
    • 修改了demo_cv.php 和demo_cv_api.php,实现了网页端和api端的功能
    • ckeditor没改好,下一步把公式显示出来
    • 待优化一下前端显示
    • 待把训练好im2latex的模型用上。
    • 把数据库部分整理出来上传上来。
  • 截止20200409:

    • 完成数据库部分的整理上传。
    • 待实现:富文本ckeditor的加载和显示问题,前段显示问题,im2latex模型上传。

徽章

如果你的项目遵循 Standard-Readme 而且项目位于 Github上,非常希望你能把这个徽章加入你的项目。 它可以更多的人访问到这个项目,而且采纳 Stand-README。 加入徽章并非强制的

standard-readme compliant

为了加入徽章到 Markdown 文本里面,可以使用以下代码:

[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)

相关仓库

  • EAST-与项目配套的目标检测的代码

  • im2latex-与项目配套的图片序列处理的代码

维护者

@赵明明.

如何贡献

非常欢迎你的加入! 提一个Issue 或者提交一个 Pull R equest.

贡献者

感谢以下参与项目的人:

使用许可

HCT © 赵明明

空文件

简介

一个webserver的demo 展开 收起
PHP
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/zlinhome/bd_cv3_webserver_demo.git
git@gitee.com:zlinhome/bd_cv3_webserver_demo.git
zlinhome
bd_cv3_webserver_demo
bd_cv3_webserver_demo
master

搜索帮助