Photo by Tim Gouw from Pexels

正如文章标题所言,本文是我的**《AI画家》**系列的终章,从4月16号开始的第一篇文章《介绍一下我的毕业设计》到今天已经过了将近2个月了(2个月就更新7篇文章我也是服了我自己了😂),其实这个系列就是我的毕业设计,如今我的毕设做完了,论文也定稿了,想着也该给这个系列画个句号了。

在公众号上发系列文章是我的一次尝试,因为知道自己的文笔不好,写不好什么感悟感想,只能水水技术文了,然而即使要写技术文也得找个切入点,可事实上哪会有那么多切入点,无奈只能靠弄个技术文系列,吸引下路人的眼球,勉强度日了。

既然是终章,那就对整个系列做个简单的总结吧,希望这篇不会是烂尾文。

开题

《介绍一下我的毕业设计》一文中我提到,刚开始我单纯因为觉得好玩才开始研究图像风格迁移,后来认为名字逼格够高,足够唬住老师才把这个课题作为我的毕设,现在回过头来结合最后的答辩觉得自己选这个题目的毕设是真的傻X,不是因为这个选题不好,而是把这个选题作为毕业设计的题目真的傻X,说到这就想起一些在答辩现场不好的事情了,溜了溜了。

过程

作者自认为在这个系列中思路还是比较清晰的。

首先是第一弹,想要做深度学习有关的东西,刚开始肯定是要搭建好一个深度学习的环境的。在这篇文章中,详细的介绍了在我的游戏本上利用GPU搭建深度学习环境的过程,包括安装nvidia drive、CUDA、cuDNN和TensorFlow的GPU版本,以及简单介绍了如何利用Pyenv和Pipenv管理自己电脑上的Python虚拟环境。

然后是第二弹,介绍了什么是图像风格迁移,以及如何用TensorFlow实现了一个基本的图像风格迁移的程序,在这篇文章中我只是简单的介绍了图像风格迁移的原理,一方面是因为公式实在是有点多,公众号对于公式的支持不是很好,另一方面作为一个入门介绍,放太多的数学公式的话估计本来人数不多的公众号又要取关一批人了。

第三弹介绍了一个目前非常流行的Python web框架Flask,介绍他的原因不仅仅是因为我的毕业设计就是用这玩意做的,而且在开题的时候我也提到了最后要将这个深度学习算法落地,能够做出一个可用的RESTful API,而相较于其他Web框架,Flask有着得天独厚的优势:首先TensorFlow的首选语言是Python,Flask也是用Python写的,调用起来非常方便;相对于Django,Flask非常轻便,使用起来也非常的灵活。然而在用Flask之前,必须要有些基础知识,因此在这篇文章开篇,我又介绍了前后端分离,介绍了什么是RESTful API,如果对这些概念没有理解的话就算把代码写出来了也很难知道是干嘛的。

既然在第三弹介绍了一个用来编写RESTful API的工具,那第四弹自然就是如何编写这个RESTful API了。其实在第二弹中就指出了那个算法的不足之处——“慢”,所以在这篇文章中就使用了第二个算法训练出来的模型,之所以不介绍新的风格迁移算法,主要是因为这个算法有点难度,我理解的时候也花了好长时间,等到基本上理解了,第四弹都已经写完了😂。所以在这篇文章中我干脆直接用别人训练好的现成的模型了。其中介绍了如何利用蓝图(BluePrint)进行模块化开发,并给出了我自己认为的比较好的分层方法,然后利用七牛云存储为服务器减压,最后利用Postman请求该API完成测试。

第五弹的主要内容就是介绍如何将第四弹中已经在本地测试成功的项目发布到服务器上实现公网访问,介绍了如何使用了XX云主机,并在上面安装配置了项目所需要使用到的环境的过程,介绍了TermiusFileZilla等工具。在这篇文章中我希望会有些和别的文章不一样的东西,因此我不仅把实现过程展现了出来,还分享了一些我在实际使用过程中产生的疑问,踩到的坑以及我个人在部署过程中总结的一些经验。

最后

总的来说,这个系列不仅仅是我在做毕业设计时的一个缩影,也是我自己对于公众号运营的一个探索。期间也收到了很多读者的支持与鼓励,感谢你们的一路陪伴🙏

推荐阅读

  1. 《介绍一下我的毕业设计》
  2. 《AI 绘画第一弹——用GPU为你的训练过程加速》
  3. 《AI绘画第二弹——图像风格迁移》
  4. 《AI画家第三弹——毕业设计大杀器之Flask》
  5. 《AI画家第四弹——利用Flask发布风格迁移API》
  6. 《AI画家第五弹——从0到1部署你的RESTful API》