本书基于国产开源深度学习框架PaddlePaddle进行编写,全面、系统地介绍了PaddlePaddle在数字图像处理中的各种技术及应用,书中项目实例全部采用动态图版本实现。全书共8章,分别介绍了基于深度学习的图像分类、目标检测、语义分割、实例分割、关键点检测、风格迁移等内容,所有知识点均通过实际项目进行串联,旨在帮助读者在掌握基本深度学习算法原理的基础上,扩展项目实操能力,达到学以致用的效果。
本书可作为全国高等学校计算机、人工智能等专业的深度学习课程教材,主要面向相关领域的教师、在读学生和科研人员,以及从事深度学习与图像处理的工程技术人员和爱好者。
近年来,随着深度学习技术的革新、GPU计算性能的突破、互联网数据的激增,图像处理领域的研究蓬勃发展,尤其在自动驾驶、智能安防、智慧城市、医疗保健、商业零售、航空能源、虚拟现实等诸多人工智能热门领域,图像处理技术落地开花,熠熠生辉。图像处理研究工作在学术界和工业界取得的巨大成功,每年吸引着数以万计的研究人员蜂拥而至,甚至生物医学、机械制造、自动化、土木建筑等诸多跨专业的从业人员也开始涉猎研究。对于非计算机相关专业的读者而言,学习过程中往往因缺少交流机会,不容易把握深度学习与图像处理知识的全貌,并且该领域知识更新迭代快,新的理论层出不穷,如何在日新月异的知识体系中抽丝剥茧,掌握核心的算法精髓显得尤为重要,这也是撰写本书的根本原因。
本书内容
本书以图像处理技术作为切入点,围绕近些年流行的深度学习算法进行讲解,研究方向包括图像分类、目标检测、语义分割、实例分割、关键点检测和风格迁移等,重点剖析了各个图像处理领域常见的算法原理,并在此基础上结合新颖实用的项目案例贯穿所学,让读者在掌握算法原理基础上能够达到产业界要求的深度学习实战能力。
本书项目案例采用国产开源深度学习框架PaddlePaddle来实现,考虑到易用性以及未来发展趋势,全部采用最新的动态图版本进行编写。
全书分为两部分,共8章,在内容安排上循序渐进。第1部分基础知识(第1、2章),第1章图像处理基础,第2章深度学习基础; 第2部分案例应用(第3~8章),第3章图像分类(智能垃圾分拣器),第4章目标检测(二维码扫码枪),第5章语义分割(证件照制作工具),第6章实例分割(肾小球影像分析仪),第7章关键点检测(身份证识读App),第8章风格迁移(照片动漫化在线转换网站)。
本书特色
(1) 理实结合,强调实用。本书以基础知识点精讲与实战开发案例相结合的方式,由浅入深地带领读者掌握深度学习与图像处理开发的原理和技术。
(2) 实战开发,案例丰富。手把手带领读者完成8个完整工程项目案例开发,并对其采用的算法原理进行详解,同时提供源代码和数据集,便于读者复现。
(3) 内容翔实,讲解全面。部署方案齐全且详细,涵盖Jetson Nano边缘计算、树莓派嵌入式、Qt客户端、C#工控程序、安卓App、HTTP微服务等。
配套资源
为便于教与学,本书配有丰富的配套资源,包括微课视频、源代码、教学课件、教学大纲、教学进度表、教案、期末试卷及答案。
(1) 获取微课视频方式: 先刮开并用手机版微信App扫描本书封底的文泉云盘防盗码,授权后再扫描书中相应的视频二维码,观看教学视频。
(2) 获取源代码、彩色图片和全书网址方式: 先刮开并用手机版微信App扫描本书封底的文泉云盘防盗码,授权后再扫描下方二维码,即可获取。
源代码
彩色图片
全书网址
(3) 其他配套资源可以扫描本书封底的书圈二维码,关注后回复本书书号,即可下载。
读者对象
本书可作为全国高等学校计算机、人工智能等专业的深度学习课程教材,主要面向相关领域的教师、在读学生和科研人员,以及从事深度学习与图像处理的工程技术人员和爱好者。
写给读者
阅读本书前需要读者具备Python基础语法知识及基本的数学背景知识(如向量、矩阵、求导等)。
通过阅读本书,希望读者能够掌握常见的深度学习与图像处理概念,并构建出一套自己的知识脉络; 能够深入了解图像分类、目标检测、语义分割、实例分割、关键点检测、风格迁移等技术在各个领域的处理方法; 能够借鉴本书项目案例运用到实际的研究或工作任务中,举一反三,学以致用。
本书在项目部署部分涉及多门编程语言和编程框架,知识点较多,如果在学习本书前没有完全掌握本书软硬件涉及的相关知识,那么也不必立即打退堂鼓,可以先尝试性地跟着本书 跑起来,熟悉掌握了整个开发流程后,再逐个对知识点进行学习。这种靶向型、实践型的学习方式未尝不是一种有效的学习范式。
致谢
在本书的撰写过程中,感谢南京理工大学沈肖波教授和北京工业大学同磊副教授对本书的建议,感谢俞晓燕、赵婷和朱妤梦为本书提供的人像素材,感谢无锡儿童医院成芸医师对本书医学影像数据的专业标注。
由于时间仓促,加之作者水平有限,错误和疏漏之处在所难免。在此,诚恳地期望得到各领域的专家和广大读者的批评指正。
作者2024年7月
第1部分基 础 知 识
第1章图像处理基础
1.1图像处理的基本概念
1.1.1模拟图像和数字图像
1.1.2数字图像常见类型
1.1.3应用方向
1.2图像处理基本操作
1.2.1安装OpenCV
1.2.2图像读取、保存和可视化
1.2.3像素操作
1.2.4图像转换
1.2.5图像缩放
1.2.6图像裁剪
1.2.7翻转和旋转
1.3图像卷积和滤波
1.3.1线性滤波与卷积
1.3.2常见卷积核
1.4综合案例应用: 基于OpenCV的自动驾驶小车
1.4.1任务概述
1.4.2安装仿真平台
1.4.3车道线检测
1.4.4动作控制
1.5小结
第2章深度学习基础
2.1深度学习概述
2.1.1人工智能、机器学习和深度学习
2.1.2深度学习起源和发展
2.1.3深度学习框架
2.2环境安装
2.2.1安装说明
2.2.2Windows平台
2.2.3Ubuntu平台
2.2.4AI Studio平台
2.3PaddlePaddle基础
2.3.1Tensor表示
2.3.2Tensor计算
2.3.3自动求梯度
2.4PaddlePaddle实现机器学习: 线性回归投资预测
2.4.1问题定义
2.4.2导数法
2.4.3梯度下降法
2.5PaddlePaddle实现深度学习: 自动驾驶小车控制
2.5.1卷积神经网络基础
2.5.2算法原理
2.5.3数据采集
2.5.4数据读取
2.5.5网络模型
2.5.6损失函数
2.5.7优化算法
2.5.8模型训练
2.5.9模型验证
2.5.10模型集成
2.6小结
第2部分案 例 应 用
第3章图像分类(智能垃圾分拣器)
3.1任务概述
3.1.1任务背景
3.1.2安装PaddleClas套件
3.2算法原理
3.2.1VGG算法
3.2.2ResNet算法
3.2.3MobileNet算法
3.3算法研发
3.3.1数据集准备
3.3.2算法训练
3.4Jetson Nano智能终端部署(Linux GPU推理)
3.4.1部署工具FastDeploy介绍
3.4.2Jetson Nano上Python推理
3.4.3Jetson Nano上C 推理
3.5小结
第4章目标检测(二维码扫码枪)
4.1任务概述
4.1.1任务背景
4.1.2安装PaddleDetection套件
4.2算法原理
4.2.1目标检测常用概念
4.2.2RCNN算法
4.2.3Fast RCNN算法
4.2.4Faster RCNN算法
4.2.5YOLO v3算法
4.2.6PicoDet算法
4.3算法研发
4.3.1目标检测数据集常用格式介绍
4.3.2使用Labelme制作自己的二维码检测数据集
4.3.3Labelme格式转换成COCO格式
4.3.4算法训练
4.4树莓派开发板部署(Linux CPU推理)
4.4.1树莓派上Python推理
4.4.2树莓派上C 推理
4.5小结
第5章语义分割(证件照制作工具)
5.1任务概述
5.1.1任务背景
5.1.2安装PaddleSeg套件
5.2算法原理
5.2.1FCN算法
5.2.2UNet算法
5.2.3HRNet算法
5.2.4OCRNet算法
5.3算法研发
5.3.1数据集准备
5.3.2使用Labelme制作自己的语义分割数据集
5.3.3算法训练
5.4Qt C 桌面客户端部署(Windows CPU推理)
5.4.1Qt基础示例程序介绍
5.4.2配置并导入FastDeploy库
5.4.3编写算法推理模块
5.4.4集成依赖库和模型
5.5小结
第6章实例分割(肾小球影像分析仪)
6.1任务概述
6.1.1任务背景
6.1.2实例分割概述
6.2算法原理
6.3算法研发
6.3.1数据集准备
6.3.2算法训练
6.4C#工控程序部署(Windows GPU推理)
6.4.1生成C 示例工程
6.4.2编译C 动态链接库
6.4.3编写C#工程
6.5小结
第7章关键点检测(身份证识读App)
7.1任务概述
7.1.1任务背景
7.1.2关键点检测概述
7.2PPTinyPose算法原理
7.2.1LiteHRNet骨干网络算法
7.2.2数据增强算法
7.2.3分布感知坐标表示方法
7.2.4无偏数据处理
7.3算法研发
7.3.1数据集准备
7.3.2算法训练
7.4移动端部署(安卓Java推理)
7.4.1安卓基础示例程序
7.4.2配置FastDeploy库
7.4.3编写推理模块
7.5小结
第8章风格迁移(照片动漫化在线转换网站)
8.1任务概述
8.1.1任务背景
8.1.2安装PaddleGAN套件
8.2算法原理
8.2.1GAN算法
8.2.2DCGAN算法
8.2.3AnimeGAN算法
8.3算法研发
8.3.1数据集准备
8.3.2训练
8.4微服务部署(FastDeploy Serving推理)
8.4.1准备Docker环境
8.4.2部署服务
8.4.3微服务开发
8.5小结
后记