PyTorch神经网络实战:移动端图像处理
上QQ阅读APP看书,第一时间看更新

前言

蒸汽机、电动机和计算机的发明与应用极大地推动了人类文明的发展。现在,一项新的技术浪潮正在掀起——人工智能(Artificial Intelligence)。

在人工智能领域包含的诸多技术中,深度学习是当前最受瞩目的技术之一。自2012年AlexNet模型在ImageNet分类任务上获得惊人的准确率开始,深度学习技术就被广泛应用于多项计算机科学研究任务之中,包括计算机视觉、自然语言处理及强化学习等。

学术界和工业界的前沿深度学习模型通常依赖海量的数据和强大的计算设备来设计出高质量的应用模型。然而对于普通开发者的入门学习,通常只需要一台计算机就能动手编写众多的深度学习算法,并训练出可用的模型。

深度学习技术具有如此强大的魅力,开发者要如何开展具体的学习、研究与应用呢?这时就需要一款高质量的辅助工具来完成算法的设计、实现、训练与部署了,这款工具就是本书将要介绍的深度学习框架——PyTorch。

本书将带领读者实现多种有趣的AI算法,比如风景图分类、人像前景背景分割、低光照图像增强、动漫头像生成、画风迁移、风格转换等。不仅如此,书中还提供了移动端的应用案例,手把手地教读者如何将模型部署到Android手机上。

本书适合的读者

本书面向的读者群体主要包括:

1)人工智能相关专业的高校师生。

2)从事软件开发、数据库设计、编译器设计、自然语言处理、计算机视觉等领域工作的技术人员。

当然,即使读者并非上述群体,只要具有强烈的兴趣和学习意愿,仍然能够充分地学习并利用本书所讲的知识内容,成为人工智能研究领域中的一员。

如何使用本书

在编写此书前,笔者对网络上大量的深度学习入门资料进行了梳理总结,发现它们大都存在以下三个问题。

1)所介绍的任务同质化严重,都集中于手写字识别等简单场景,难以引起初学者的兴趣。因此本书精选了众多具有实际价值的场景任务,由浅入深地进行编排,方便读者学习。

2)由于深度学习框架在前几年发展太过迅速,众多早期资料已经因为API不兼容而无法运行,这非常考验初学者的代码调试能力。而现阶段深度学习框架已经基本稳定,API的兼容性也能得到很好的保证。本书准备了大量代码,它们都适合最新版本的框架,很大程度地规避了不兼容问题。

3)目前虽然有较多优质的开源代码,甚至已经成功地应用于实际商业场景。但这些开源代码并不适合初学者学习,它们往往出于工程角度设计,封装得过于复杂,初学者难以在短时间内厘清关系,容易把精力浪费在非核心的逻辑上。而本书针对每个任务给出了最为核心的代码,降低了学习成本,使读者能够专注在重要的内容上。

学习本书最好的方式是理论结合实践,不仅要掌握书中的各类知识点,还要能够独立编写出对应的代码。本书涉及大量的PyTorch基础知识和常用代码,建议读者按照书中的例子动手敲出这些代码。

本书的代码托管在GitHub仓库中,读者可以下载本书所有源码。此外,本书的代码仓库将会不断更新,希望读者能够在GitHub平台上提出意见或者建议,仓库地址为https://github.com/cwpeng-cn/PyTorch-neural-network-practice。

本书主要内容

本书共9章,鉴于本书前后各章具有一定的关联,希望读者能够按照章节顺序进行阅读,以达到最佳的学习效果。各章主要内容如下。

第1章介绍了人工智能的研究起源与发展历程,并指出了人工智能与深度学习之间的关系。同时讲解了深度学习的入门知识,以及神经网络的基本原理与概念。

第2章对PyTorch的基础知识和使用方法进行了归纳和梳理。如果读者在阅读本书之前不具备深度学习框架的使用经验,或者所用的不是PyTorch框架,建议仔细阅读并实现本章的示例。

第3章包含了Android Studio开发基础和PyTorch移动端部署两方面内容,第4~9章的部署案例都能够通过本章的代码逻辑完成。

第4章讲解了图像分类网络,以及适合在移动端部署的轻量级分类模型,并向读者展示了如何构建一个风景图归档器。

第5章以人像的前景和背景分割为例,介绍了图像分割任务的研究目标和经典算法,阅读本章后读者可以学会制作一款简易的智能抠图工具。

第6章针对黄昏和傍晚时拍照所获图像亮度较低的问题,介绍了低光照图像增强算法,并设计了一款低光照图像增强应用。

第7章的案例是动漫人脸生成,使用了基于生成对抗网络的图像生成技术。如果读者能够搜集真实人脸的数据,或者其他类型的具有明显类别特征的数据,也可以扩展为其他图像的生成应用。

第8章讲述了图像风格迁移任务,即用户可以将某种风格的图像改为其他风格。

第9章可以看作是第8章知识的扩展,从图像风格转换的角度设计并实现了苹果风格和橘子风格互相转换的应用,背后的技术是学术界公认为经典的循环一致性对抗网络。

致谢

本书介绍了人工智能、深度学习、PyTorch框架、Android开发等理论与实践知识,这些知识是各领域科研人员和软件工程师共同创造的,感谢你们的辛苦付出。

在本书的写作过程中,机械工业出版社的编辑团队提出了众多有价值的建议和意见,他们的丰富经验与耐心指导是本书能够顺利完成的重要基础。