一、项目简介
由于本人毕业设计的需要,所以本人在最近搭建了一个网站,用来部署我的深度学习模型,我用的主要是生成对抗网络GAN模型,其他网络模型同理可以一样部署,只不过需要改一下自己的WEB应用程序罢了。先来介绍下,我的部署方案吧:
我的部署主要用了Windows系统下的IIS的Web服务器+Anaconda管理的Python语言+Python语言里的Flask Web开发框架+腾讯云服务器作为自己的主机+Pytorch深度学习框架+GAN深度学习模型。
域名部分
1.想要通过在浏览器中输入一个网址,也叫域名,例如(www.baidu.com)来进行访问,那你需要了解从键入网址,到你看到网页中间发生了什么。这不是这篇文章主要要讲的,但我们还是需要自己学了解一下相关知识,才能更好的部署自己的网站,才能知道自己需要什么。
2.首先输入了网址,浏览器会通过http协议方式get或者post请求到DNS服务器,DNS服务器解析域名对应的Web服务器,然后转到那个Web服务器,接着Web服务器再将请求传给Web应用程序。这个Web应用程序主要是根据你输入的网址来进行数据处理,然后返回响应,也就是返回到你的浏览器。
3.根据上面的原理,我们可以知道搭建一个网站需要哪些东西了。首先,我们需要一个域名,这个域名,就是你在浏览器输入的网址。但这个域名并不是必要的,如果你只是想展示自己的网页给一小部分人看,你可以通过IP来访问你的网页。我为了能给更多人看,然后方便他们记住网站地址,我买了个域名:www.qskbs.xyz(在腾讯云买的,新用户,1元1年,还送解析,和SSL证书。先声明我没收腾讯钱,在打广告,只是感觉腾讯云的客服人很好很耐心,中间遇到问题都解决了。) ,但在中国购买域名后需要备案,很麻烦,估计要1个月才能通过,本人的域名还在备案中。。。。当你买好域名后,并且完成备案 了,那你需要通过DNS系统来让域名对应你的Web服务器的主机IP,这个在腾讯云购买的域名可以直接在控制台里进行解析,很方便,但需要你购买Web云服务器来对应解析。这个IP就是类似62.234.50.140的东西,他决定你在的计算机在网络中的位置,可以直接通过IP来访问自己的网站,不信你试试输入网址和域名,看看他们是不是都指向了一个相同的网站,如果你不准备弄域名,可以略过上述域名的部分。(在写这篇文章时,我的域名还没备案完成,所以现在还只能通过IP来访问,想看网站,请在浏览器地址栏输入上述IP。)
腾讯云服务器
我买的是学生用的10元/月,最便宜的那个,毕竟作为穷学生,能节省就节省。这个云服务器就是我们网站的主机,我们的网站就是在这个云服务器上运行的,所有想访问我们网站的人,都是通过访问这个云服务器的IP。我们的所有网站程序都是存储在这个云服务器上的。
想购买的话,可以去下面这个链接
腾讯云服务器
Web应用程序部分
拥有了云服务器和域名,那么就可以写自己的网站程序了,我是用python语言的Flask框架写的,如果没有Flask的相关知识,可以去下面这个网址学学:
Flask框架学习
深度学习模型部署
我的深度学习模型主要是把生成器网络保存在一个单独的.py文件中,然后通过view.py视图文件中的视图函数调用。项目文件结构如下图所示。.pth文件是模型参数文件,用于加载模型,dcgan.py和models.py里有GAN模型。具体的代码文件请参考我的github:
Github 整个项目文件都在face_generator_com.zip文件内。
这里再讲一下,我在部署深度学习模型时的一些问题:
一、模型生成的图片无法保存到static文件夹里用于显示,显示的错误是没有写入权限(permition deny),这时需要修改网站项目文件夹的访问权限,如下图所示:
1.先让此文件夹可以共享,让别的人能访问你的网站
2.为了让web程序能修改你的文件,需要在everyone权限里勾选修改和写入,这样,你的python程序才能保存图片到static文件夹里。
二、第二个问题是,我的static文件夹里的图片改变了,但网站刷新后还是原来的图片。解决这个问题主要是通过改变缓存时间,刷新后不改变是因为浏览器缓存了我们之前的静态文件,起到加速的作用,但也导致我们改变文件后,需要过段时间,才能更新。解决方法就是改变缓存时间,具体就是在如下地方添加两行代码:
Web服务器部分
1.我用的是Windows下的IIS服务程序,因为用Windows用的多,所以才用IIS。你也可以用阿帕奇或者nginx之类的,但这篇文章以IIS为主。如果此时你已经写好了自己的Web应用程序,那么接下来请看这个链接,详细的说明了,如何在IIS上配置你的Web程序,来让IP地址指向你写的网站。
IIS配置Web应用程序 在上述链接里,有一些部分我觉得我需要说明一下,因为在我自己做的时候遇到了一点问题。
2.首先,是配置环境变量,上述链接的环境变量,要根据你写的Flask程序来更改。这个环境变量Value中的face_generator_com就是你定义了app=Flask(_name)的那个.py文件的文件夹。
3.另一个环境变量是你的网站的根目录,这个根目录就是放了wfastcgi.py的那个路径。在我的项目中就是如下图所示
结尾
根据上面的办法配置好程序,应该就能显示自己的网站了,下面是我的网站效果图: