深度学习实践:计算机视觉
上QQ阅读APP看书,第一时间看更新

前言

目前人工智能领域越来越受到公众的关注,因此人工智能算法工程师也渐渐浮出水面,成为招聘网站上一个非常耀眼的岗位,各类创业投资也紧紧围绕着AI主题旋转。

我认为目前人工智能算法工程师主要分为两类。

● 科学家型:主要研究前沿算法,在各大高校和企业的研究院居多。

● 工程师型:主要将最新的算法应用到具体的业务场景,在企业开发部门居多,为本书主要针对对象。

人工智能算法按特征学习的深浅分为机器学习、深度学习,另外也有强化学习方向。按应用场景则可分为:计算机视觉、自然语言和语音处理等。

编写本书主要基于以下事实,笔者在学习机器学习和深度学习的过程中,发现理论方面的书籍十分丰富,包括周志华老师的《机器学习》与Ian Goodfellow的《深度学习》;教学视频也十分丰富,包括斯坦福大学吴恩达教授的CS229与李飞飞教授的CS231,以及台湾大学(National Taiwan University)林轩田老师和李宏毅老师的课程。但是很少有关于一个方向(比如计算机视觉)比较丰富的工程应用书籍,包括当前主流框架的综合介绍,笔者当时从理论到实践走了不少弯路,也踩过不少坑,故希望本书能在这个方面做出一点小小的贡献,成为理论与实践的桥梁,让读者相对容易地迈出由0到1的那一步。

本书主要关注计算机视觉领域,基于开源项目介绍最新的算法,在此也感谢各位开源人士,借助他们的成果,我们学习到了很多知识,本书各章主要内容如下:

第1章对深度学习与计算机视觉进行简要介绍,也会简单介绍开发环境的搭建。

第2章主要介绍OpenCV的基本操作及部分高级操作,包括人脸和人眼的检测与识别。

第3章着重介绍目前常用的几类深度学习框架,包括PyTorch、Chainer、TensorFlow-Keras和MXNet-Gluon,另外本书中偶尔还会用到ChainerCV和GluonCV。

第4章对图像分类进行了介绍,包括经典的网络类型(VGG、ResNet、Inception、Xception、DenseNet),并展示了部分实践操作。

第5章对目标检测与识别进行了介绍,包括三种主流的网络结构:YOLO、SSD、Faster R-CNN,并展示了实践操作。

第6章介绍图像分割技术,主要从前背景分割(Grab Cut)、语义分割(DeepLab与PSPNet)和实例分割(FCIS、Mask R-CNN、MaskLab、PANet)三个粒度阐述。

第7章介绍图像搜索技术,主要指以图搜图方面(CBIR),以及对应的实践展示。

第8章主要介绍图像生成技术,包括三个大方向:Auto-Encoder、GAN和Neural Style Transfer。

计算机视觉是一个非常大的方向,涉及的内容非常多,本书只涉及了其中部分领域,未涉及OCR、目标追踪、三维重建和光场等方面的内容。

本书面向的主要是已经拥有机器学习和深度学习基础,但在计算机视觉领域实践较少,对各个方向了解较少的读者,其他感兴趣的读者也可作为科普读物。希望本书能为计算机视觉感兴趣的读者打开一扇窗户,引领大家迈出从理论到实践的关键一步。另外由于笔者学识、经验和能力水平所限,书中难免有错误或误解的地方,欢迎广大读者批评指正。

阅读本书需要的知识储备包括以下几种:

● 线性代数

● 概率论

● 统计学

● 高等数学,主要指函数方面

● 机器学习

● 深度学习

● Python编程技术(特别需要熟悉Numpy库)

● Linux基础知识(可选项)

如果在学习过程中遇到任何问题或不太理解的概念,那么最好的方式是通过网络寻找答案,请相信我们所遇到的问题,有很大一部分是大家都会遇到的问题,网上说不定已经有了详细地讨论,这时只需要去发现即可;如果没有找到对应的解决方法,那么在对应的社区提问也是很好的一种方式。

希望读者在阅读本书时,谨记计算机是负责资源调度的,永远会有时间资源和空间资源的平衡问题。GPU的使用就是并行利用空间换取时间,而IO密集型与计算密集型则是另外两个常常遇到的问题。在做深度学习方面的实践时,这些问题都应该考虑到位,特别是面临海量数据的时候,比如上亿级别的图像搜索业务。这些知识在计算机操作系统的书籍当中有非常详细的论述,如果读者希望在计算机领域有长足的发展,那么这是一本最基本最重要的书籍,建议好好学习。

对于本书的完成,要特别感谢王金柱编辑给予的帮助和指导,感谢体贴的妻子体谅笔者分出部分时间来撰写此书。

读者联系邮箱:booksaga@126.com。

缪 鹏

2018年7月1日