深度学习计算机视觉实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

写作目的

犹记数年之前,自己在学习深度学习技术时的苦恼。那时,有一款能识别不同的植物的App带给我很大的震撼,于是想弄明白图像处理的原理及其实现方法,结果不甚理想。后来,才知道这个App是通过AI技术实现的,自己也萌生了将其复现出来的想法。当时的我没有任何AI技术基础,于是买了很多书来学习,但这些书讲的都是高深的理论和复杂的公式,即使对我这个从业者而言也很难有读下去的欲望,常常看了几页就没了兴致,甚至怀疑自己可能不适合这个方向。这么断断续续地看下去,机器学习常用算法的理论公式推导了不少,但还是不知道怎么去做出一款App。

通过跌跌撞撞的学习,我开始对机器学习、深度学习有了一个模糊的轮廓,然后明确了自己的学习方向——钻研计算机视觉。然而,这个方向的图书绝大部分是长篇累牍地讲某种深度学习框架的使用,如 TensorFlow、PyTorch,或者是将某个功能模型的搭建代码贴出来而鲜有详细说明,在给出训练结果后草草结束。至于这些训练出来的模型怎么使用,以及为什么这么搭建,书中并没有详细说明,很多读者想入门而不得。因此,写作本书的目的是让读者不重蹈覆辙,为读者指明学习的方向,帮助初学者快速入门,为工程应用提供相应的落地解决方案。

主要内容

本书从算法实现到最后的落地部署都有详细的介绍,全书内容可分为四个部分。

第一部分包括第1~2章,主要讲解深度学习基础和计算机视觉基础。本部分讲解计算机视觉领域的经典网络,这些网络是很多视觉算法模型的主干网络,用于特征的提取;还讲解常见的目标检测算法,有关的算法论文在介绍时都有指出,读者可以查看论文原文,了解更多的算法细节。

第二部分包括第3~6章,主要讲解图像处理知识。对每个知识的作用点进行分析,说明OpenCV中Python和C++接口的详情,并给出多个应用案例,让读者能够清晰地看到图像处理的效果,增加对知识点的理解。

第三部分包括第7~11章,主要讲解计算机视觉中的实战项目。这些应用是计算机视觉方向的常见任务,有很多开源代码可供参考。本书在讲解时依照相同的结构讲解,包括数据预处理、网络搭建和模型训练三个模块,这些算法模型经过转换之后的应用效果在本书中也有介绍。在进行项目介绍时,本书对代码做了详细的注释,对于实现细节也做了追本溯源的讲解,让读者能够理解设计意图。

第四部分包括第12~13章,主要讲解模型的落地部署。本书基于TensorFlow Lite进行模型部署的讲解,选用此框架一方面是因为TensorFlow的受众较广、热度很高;另一方面是因为该框架在各平台都有对应的支持与优化加速,性能较高,文档完备,比较容易使用。本部分讲解部署中的模型转换、模型优化、部署中可能遇到的问题及解决办法,这些都是我在工程应用中的经验总结,遇到的问题也是在部署过程中亲历并顺利解决的,在此讲解是希望帮助读者少走弯路,以最小的代价实现自己的需求。

本书每章末尾设置了“进阶必备”,作为扩展阅读给读者提供更多的知识,其形式多样,既有学习方向的指引与选择(如第1、2章)、工具或开发库的讲解(第3章),也有对比于深度学习方法而使用传统图像处理算法实现的任务案例(第8、10章),还有经验的总结与分享(第9、12章)等。全书共有近60个案例,使用理论与实践相结合的思想,真正实现理论学习、算法开发、模型部署上线的一站式搞定。

学习建议

对于本书的使用,有以下一些建议可供参考。

(1)对于初学者,可按照本书写作的顺序阅读,对不熟悉的算法不需要深究,可以在动手完成案例的过程中加深理解。从案例中学习,不仅有助于学习理解,还能增加学习的信心与成就感。

(2)对于计算机视觉算法开发人员,本书的算法部分可以作为参考阅读,部署部分可以帮助算法工程师了解模型研发出来后的部署详情。了解了部署过程中的资源受限情况,可以在算法研发过程中做一些优化,如模型量化的量化感知训练就是在模型的训练阶段完成的。如果存储或执行速度受限,算法工程师在选择算法时就应该评估训练出的模型参数量,进而选择合适的算法以匹配存储或执行速度的要求。另外,执行性能与准确率之间的权衡最好在算法研发的过程中就有所考量。

(3)对于对深度学习有兴趣的用户或者亟须工程落地使用的用户来说,可能只是想通过AI技术实现某一个功能,这些功能可能使用开源的模型就能满足,那么这些用户只需要参考阅读部署章节。因为这些用户需要考虑的是如何将手上的模型转换为适合部署的模型,以及将这个模型部署到自己负责的端侧设备上去。

最后,希望本书能给予正在学习的读者一些帮助,这将是笔者莫大的荣幸。由于能力有限,书中可能存在一些疏漏之处,恳请读者不吝赐教。

肖铃

2021年5月30日