手把手教你使用pytorch+flask搭建草图检索系统(二)

本文详述了使用PyTorch和Flask搭建草图检索系统的后端部分,涵盖服务器搭建、模型加载及草图检索流程。通过具体代码示例,指导读者从零开始构建系统。

手把手教你使用pytorch+flask搭建草图检索系统(二)



一、提要与预告

  • 准备工作 -> 链接
  • 后端搭建 -> 本篇内容
  • 前端搭建
  • 前后端交互
  • demo

上篇《手把手教你使用pytorch+flask搭建草图检索系统(一)》介绍了搭建系统的准备工作,以及本系统的检索原理,还有孪生网络SketchTriplet提取特征的过程,预训练好的模型、模型所使用的代码、数据集已经贴在了上篇节尾,大家可以去google drive或者百度云上下载。本篇将介绍检索系统的后端搭建过程,包括使用flask搭建服务器,以及使用pytorch载入模型。已经咕咕咕到了现在,一是学业二是工作,近期我会努力逐步更新的,在此向那些等了半年的同学们说声抱歉。

二. flask搭建服务器

网上教程极多,我看的是这个FLASK的官方中文文档,写得极其详细且易懂,从零到一应有尽有,为了快速上手,我这里就简单讲下我的理解,flask有点像MVC(Module, View, Controller)那一套,它拥有两个固定的文件夹:static, templatesstatic里面存放着静态网页所加载的资源(如css、image、json等),所以针对某个静态端点static所使用的图像img_0.png,它的路径应该是:

url_for('static', filename='img_0.png')

而它在文件系统的位置应该是static/img_0.png,我们如果要访问这张图像,应该在浏览器中键入127.0.0.1/img_0.png。静态端点中可以有多个网页,保存在templates中,因此这个templates就有点像MVC中的V,而static则是MVC中的M,根目录下的python文件则是MVC中的C。也就是说,在一个APP中,应该有如下的文件结构:

- base_folder
	- static
		- img
		- css
		...
	- templates
		- 0.html
		- 1.html
		...
	- controller.py

注意static, templates不一定绝对叫这个名字,在flask初始化的时候,你可以随意修改,修改方式如下:

app = Flask(__name__, template_folder='templates', static_folder='static')

2.1 Controller实现

首先,对于手绘检索系统,按照流程来看:首先得有个界面绘制草图,这是前端工作;然后将绘制的草图保存下来,上传到后端,这是前后端交互;接着,后端依据上传的草图进行检索,得到检索结果,这是后端工作;然后将检索结果返回给前端,着是前后端交互;最后将检索结果展示出来,这是前端工作。也就是说,我们需要两次前端、两次交互、一次后端。

按上面的思路,我们先给绘图界面留个坑,在根目录下新建controller.py,按下面的代码,新建一个flask路由,使服务器能够正常运行、访问:

from flask import Flask, render_template
from datetime import timedelta

# 新建APP
app = Flask(__name__, template_folder='templates', static_folder='static')

# 设置静态文件缓存过期时间
app.send_file_max_age_default = timedelta(seconds=1)

# 新建路由,为绘图界面留个页面
@app.route('/')
def hello():
    return render_template('canva.html')


if __name__ == '__main__':
    # app.debug = True
    app.run(debug=True)

接着在./templates文件夹内,新建canva.html静态网页,如下所示:

<!DOCTYPE html>
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值