基于pytorch模型的web应用开发和部署

https://i.328888.xyz/2023/02/22/xfWeC.png

项目代码:https://github.com/c0ldheart/virtual-try-on-demo

将虚拟试衣模型部署成web应用,涉及到了全栈开发和项目部署等方面的知识。

1. 前端

  1. 前端使用 create-react-appant design 构建。create-react-app 用于快速搭建出基于 React 的 Web 应用程序;ant design是一个非常流行的React UI组件库,具有响应式布局、自定义主题和可配置的样式等特性,使得开发者可以快速构建美观的Web界面。
    • 表单中图片上传的逻辑值得注意:使用上传图片组件后立刻上传至服务器,返回图片远程URL的响应并记录,之后提交表单时请求包含URL而不需要上传图片。
    • 图片的本地展示:URL.createObjectURL(info.file.originFileObj)
  2. 使用 vercel 实现自动化部署和静态资源获取服务
    • 注意依赖的配置:需要添加@ant-design/icons依赖,否则在构建时会报错。

2. 后端

  1. 我使用了Flask来启动Web服务,处理上传和预测请求。在部署后端应用程序时,我们使用了腾讯云服务器,需要注意一些注意事项。例如,在配置https时,需要选择合适的证书,否则浏览器会警告访问不安全。此外,如果需要域名访问,则需要进行备案,否则无法正常访问。
    • vercel资源为https,因此需要给服务器配置https,且私签证书不可用。
    • 如需域名访问需要备案(不管是不是80/443端口)。
    • 不用域名可直接http://ip:port访问,但需要走https,通过 zerossl 给裸ip地址签发权威证书。
    • 跨域问题通过flask_cors库解决。
  2. 对于模型的处理,我编写了一个Predictor类来保存模型已经进行前中后处理。在启动服务时,先将模型加载到GPU中。
  3. PyTorch 作为深度学习框架,用于构建虚拟试衣的模型,对于用户上传的照片,模型需要先经过一些预处理步骤,例如去除背景、检测人体等,然后才能进行虚拟试衣操作。开发者需要将衣服分割的mask和用户上传的照片一起送入虚拟试衣的模型中进行预测。在这个过程中,需要注意以下几个问题:
    • 路径准备:在处理用户上传的照片和预测结果时,开发者需要准备好相应的资源路径,例如分割掩码的保存路径、模型预测结果的保存路径等。这些路径需要提前定义并准备好,以便在处理过程中使用。
    • 图像的归一化和反归一化:在将照片送入模型进行预测之前,需要对其进行归一化处理,以便模型能够正常工作。同样,在得到模型的输出之后,需要将其反归一化,以便得到真实的预测结果。开发者需要确保归一化和反归一化的处理逻辑正确,以避免对预测结果的影响。