描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302577287丛书名: 华为智能计算技术丛书
华为公司官方出品
!华为智能计算技术丛书,20个典型案例解密昇腾CANN平台的强大功能,华为技术有限公司2012实验室总裁何庭波作序!
本书是《?N腾 AI处理器架构与编程》的续篇,专注于?N腾 AI处理器的革命性边缘计算SoC芯片, 基于 Atlas开发者套件或 Atlas推理卡建设应用生态。全书共20章,重点剖析若干重要领域的典型案 例,内容涵盖图像分割、图像生成、图像处理、模式分类、目标检测、智能机器人和序列模式分析等。每 章自成体系,较为完整地给出了案例系统的应用动机、系统架构和执行流程的设计方案,并结合代码剖 析案例系统的实现过程和实际测试结果,能够帮助读者快速把?N腾 AI处理器用于解决实际问题。 本书是市场上本介绍?N腾 AI处理器的案例教材。本书体例完整,案例具有典型性,配套案例代 码完全开源,实战资源丰富,可以作为高校人工智能、智能科学与技术、计算机科学与技术、软件工程、电子 信息工程、自动化等专业的教材,也适合从事人工智能系统开发的科研和工程技术人员作为参考用书。
引言00
篇目 标 检 测
第1章手写汉字拍照检测与识别00
1.1案例简介00
1.2系统总体设计00
1.2.1功能结构00
1.2.2运行流程与体系结构00
1.3系统设计与实现00
1.3.1数据集制作00
1.3.2字符图像预处理0
1.3.3模型训练0
1.3.4模型转换0
1.3.5文字区域提取0
1.3.6模型推理0
1.4系统部署0
1.5运行结果0
1.6本章小结0
第2章人类蛋白质图谱分类0
2.1案例简介0
2.2系统总体设计0
2.2.1功能结构0
2.2.2体系结构0
2.3系统设计与实现0
2.3.1数据集的下载与筛选0
2.3.2选择性搜索算法0
2.3.3数据集的制作0
2.3.4模型训练0
2.3.5模型推理0
2.4系统部署0
2.4.1服务器端部署0
2.4.2客户端部署0
2.5本章小结0
第3章遥感图像目标检测0
3.1案例简介0
3.2系统总体设计0
3.2.1功能结构0
3.2.2系统设计流程0
3.3系统设计与实现0
3.3.1目标检测模型定义0
3.3.2目标检测模型训练0
3.3.3模型转换0
3.3.4模型推理0
3.3.5系统运行界面设计0
3.4系统部署与运行结果0
3.5本章小结0
第二篇图 像 分 割
第4章人像的语义分割0
4.1案例简介0
4.2系统总体设计0
4.2.1功能结构0
4.2.2运行流程与体系结构0
4.3系统设计与实现0
4.3.1数据集生成0
4.3.2基于错误预测的分割网络0
4.3.3模型训练及评估0
4.3.4模型转换0
4.3.5获取视频数据0
4.3.6模型推理0
4.3.7推理结果后处理0
4.4系统部署0
4.5运行结果0
4.6本章小结0
第5章人像分割与背景替换0
5.1案例简介0
5.2系统总体设计0
5.2.1功能结构0
5.2.2系统设计流程0
5.3系统设计与实现0
5.3.1构建数据集0
5.3.2定义人像分割网络0
5.3.3模型转换0
5.3.4模型推理0
5.4系统部署0
5.5运行结果0
5.6本章小结0
第6章眼底视网膜血管图像分割0
6.1案例简介0
6.2系统总体设计0
6.2.1功能结构0
6.2.2体系结构0
6.3系统设计与实现0
6.3.1数据集制作0
6.3.2网络训练0
6.3.3模型部署0
6.3.4用户交互层0
6.4系统部署0
6.5运行结果0
6.6本章小结0
第7章边缘检测0
7.1案例简介0
7.2系统总体设计0
7.2.1功能结构0
7.2.2运行流程与体系结构0
7.3系统设计与实现0
7.3.1数据集制作0
7.3.2图像预处理0
7.3.3模型训练0
7.3.4模型评估和验证0
7.4系统部署0
7.4.1服务器端部署0
7.4.2客户端部署0
7.5运行结果0
7.6本章小结0
第三篇图 像 生 成
第8章AR阴影生成0
8.1案例简介0
8.2系统总体设计
8.2.1功能结构
8.2.2运行流程
8.3系统设计与实现
8.3.1数据集制作
8.3.2图像预处理
8.3.3模型创建
8.3.4模型转换
8.3.5网络推理
8.4系统部署
8.5运行结果
8.6本章小结
第9章卡通图像生成
9.1案例简介
9.2系统总体设计
9.2.1功能结构
9.2.2系统设计流程
9.3系统设计与实现
9.3.1网络模型定义
9.3.2算法应用
9.3.3模型转换
9.3.4模型推理
9.4系统部署
9.5运行结果
9.6本章小结
第四篇图 像 增 强
第10章图像去雾
10.1案例简介
10.2系统总体设计
10.2.1功能结构
10.2.2运行流程与体系结构
10.3系统设计与实现
10.3.1数据集介绍
10.3.2图像预处理
10.3.3模型训练
10.3.4模型转换
10.3.5模型推理
10.4系统部署
10.4.1服务器端部署
10.4.2客户端部署
10.5运行结果
10.6本章小结
第11章雨天图像增强系统
11.1案例简介
11.2系统总体设计
11.2.1功能结构
11.2.2运行流程与体系结构
11.3系统设计与实现
11.3.1数据集生成
11.3.2方向和残差感知的渐进式引导网络
11.3.3模型训练及评估
11.3.4模型转换
11.3.5模型推理
11.4系统部署
11.5运行结果
11.6本章小结
第12章图像的HDR效果增强系统
12.1案例简介
12.2系统总体设计
12.2.1功能结构
12.2.2系统设计流程
12.3系统设计与实现
12.3.1模型定义
12.3.2模型训练、保存与转换
12.3.3模型推理
12.4系统部署与运行
12.5运行结果
12.6本章小结
第13章超分辨率图像算法
13.1案例简介
13.2系统总体设计
13.2.1功能结构
13.2.2运行流程与体系结构
13.3系统设计与实现
13.3.1超分辨率图像算法
13.3.2数据集制作
13.3.3网络结构
13.3.4模型训练与验证
13.3.5模型转换
13.3.6预处理及模型推理
13.3.7推理结果后处理
13.4系统部署
13.4.1超分辨率图像转换系统
13.4.2基于Flask的Web应用
13.5运行结果
13.5.1实现结果
13.5.2PSNR
13.6本章小结
第五篇模 式 分 类
第14章人体动作识别
14.1案例简介
14.2系统总体设计
14.2.1功能结构
14.2.2系统设计流程
14.3系统设计与实现
14.3.1OpenPose检测骨骼关键点与制作数据集
14.3.2动作识别网络
14.3.3模型转换
14.3.4模型推理
14.4系统部署
14.4.1配置开发板环境
14.4.2部署动作识别项目
14.4.3实时传输摄像头数据
14.5运行结果
14.6本章小结
第15章人脸识别
15.1案例简介
15.2系统总体设计
15.2.1功能结构
15.2.2系统设计流程
15.3系统设计与实现
15.3.1模型定义
15.3.2模型转换
15.3.3人脸注册
15.3.4摄像头输入
15.3.5人脸检测模型
15.3.6关键点提取模型
15.3.7特征向量提取模型推理
15.3.8后处理
15.3.9展示器服务端
15.4系统部署
15.5运行结果
15.6本章小结
第16章大规模视频手势识别
16.1案例简介
16.1.1手势识别现状概述
16.1.2C3D模型介绍
16.1.3基于强化学习的ResC3D大规模手势识别
16.1.4案例迁移简介
16.2系统设计与实现
16.2.1系统综合设计
16.2.2C3D模型的定义、训练与生成
16.2.3系统设计流程
16.2.4模型转换
16.2.5模型推理
16.3系统部署
16.4运行结果
16.5本章小结
第六篇机器人
第17章VSLAM智能小车平台
17.1案例简介
17.2总体设计
17.2.1平台硬件系统
17.2.2VSLAM系统功能结构
17.2.3VSLAM系统流程
17.3系统设计与实现
17.3.1ROS框架
17.3.2实时跟踪定位
17.3.3深度预测模型训练
17.3.4地图重建
17.4系统部署
17.4.1ROS环境部署
17.4.2模型转换
17.4.3AscendCL模型推理
17.4.4SLAM系统部署
17.5运行结果
17.6本章小结
第七篇序 列 分 析
第18章中文语音识别
18.1案例简介
18.2系统总体设计
18.2.1功能结构
18.2.2系统设计流程
18.3系统设计与实现
18.3.1声学模型定义
18.3.2CTC算法应用
18.3.3语言模型训练
18.3.4模型转换
18.3.5模型推理
18.4系统部署
18.5运行结果
18.6本章小结
第19章手写文本行识别
19.1案例简介
19.2系统总体设计
19.2.1功能结构
19.2.2CNNA模型
19.3系统设计与实现
19.3.1数据集创建
19.3.2模型构建
19.3.3训练
19.3.4测试
19.4系统部署与运行
19.4.1图片预处理
19.4.2模型推理
19.4.3模型后处理
19.5识别结果
19.5.1数据集评估
19.5.2雅可比矩阵可视化分析
19.6本章小结
第20章意见挖掘与情感分析
20.1案例简介
20.2系统总体设计
20.2.1功能结构
20.2.2系统设计流程
20.3系统模型框架
20.3.1BERT
20.3.2LSTM
20.4系统设计与实现
20.4.1数据集
20.4.2数据读取
20.4.3词典构建
20.4.4网络搭建
20.4.5模型训练
20.4.6模型转换
20.4.7模型推理
20.5本地部署
20.5.1本地工程编译及运行
20.5.2本地系统演示
20.6本章小结
参考文献
2018年度的ACM(美国计算机协会)图灵奖授予深度学习领域三巨头(Yoshua Bengio、Yann LeCun、Geoffrey Hinton),这是学术界与工业界对深度学习的认可。深度学习具有强大的学习能力,为人工智能技术插上了翅膀。各国相继把发展人工智能确立为国家战略。我国国务院于2017年7月8日重磅发布《新一代人工智能发展规划》,人工智能课程已经相继走入中小学课堂。人工智能将是未来全面支撑科技、经济、社会发展和信息安全的重要支柱!深度学习已经在许多领域影响深远,但它对算力的要求极高。华为公司应时而动,打造出基于达芬奇架构的昇腾AI系列处理器,并进一步为全场景应用提供统一、协同的硬件和软件架构。其中有面向云端提供强大训练算力的硬件产品(如昇腾910处理器),也有面向边缘端和移动端提供推理加速算力的硬件产品(如昇腾310处理器)。与硬件同样重要的是昇腾AI处理器的软件生态建设。友好、丰富的软件生态会真正释放昇腾AI处理器的能量,走入千家万户,助力我国的新一代人工智能发展。
全书共分七篇计20章,重点剖析若干重要领域的典型案例,内容涵盖目标检测、图像分割、图像生成、图像增强、模式分类、智能机器人以及序列模式分析等领域,涉及各种典型的深度学习网络模型。
篇目标检测,包含三个案例,分别涉及手写汉字拍照检测与识别、人类蛋白质图谱分类和遥感图像目标检测,提供了基于联通成分分析搭配ResNet、选择性搜索算法搭配 ResNet和YOLOv3等方法的应用。
第二篇图像分割,分别涉及人像的语义分割、人像分割与背景替换(抠图)、眼底视网膜血管图像的分割和边缘检测四个不同领域的任务,展示了如何利用DeepLab V3 、U形语义分割网络、全卷积网络以及更丰富卷积特征(RCF)网络模型进行特定分割任务。
第三篇图像生成,包含两个案例,分别涉及AR(增强现实)阴影以及卡通图像生成,集中展示了如何使用对抗生成网络(GAN)生成逼真图像。
第四篇图像增强,包含四个案例,涵盖图像去雾、去雨、HDR(高动态范围渲染)和图像的超分辨率四个基本问题,分别从对抗生成网络、渐进式引导图像去雨网络(PGDN)、多尺度网络、超分辨率网络(SRCNN、FSRCNN和ESPC)设计算法,扩宽了原有处理思路。
第五篇模式分类,包含三个案例,介绍来自人体动作识别、人脸识别和手势识别的实践。这些与人类本身具有的能力相关,常常是我们特别期望赋予计算机的。本篇提供了基于图卷积网络(GCN)、朴素卷积网络和三维卷积网络等经典模型的分类应用。
第六篇机器人,给出机器人领域的一个案例,让智能小车自动感知环境并自动规划路线,基于ROS框架,综合利用了雷达传感信号感知、基于DenseNet的深度图预测、SLAM和PID控制等技术。
第七篇序列分析,集中介绍了序列分析领域的三个典型案例,包含中文语音识别、手写文本行识别以及意见挖掘与情感分析,给出了如何综合利用VGGNet网络、LSTM网络、注意力网络、BERT网络、CTC算法来解决序列分析问题。
本书的案例素材征集自国内20位知名教授,包括清华大学胡事民、刘永进、张松海,南开大学程明明、李涛,浙江大学许威威、朱秋国,上海交通大学杨旸、陈立,武汉大学肖春霞,华中科技大学颜露新,吉林大学徐昊,华东师范大学张新宇,西安电子科技大学苗启广、侯彪,哈尔滨工业大学张盛平、苏统华,深圳大学邱国平,苏州大学张民、付国宏。
苏统华和杜鹏对全书进行统稿。
在本书的编写过程中得到清华大学出版社盛东亮主任及钟志芳编辑的专业指导,他们的编辑和审校工作明显提高了本书的质量,特别向他们致以敬意。
在本书统稿过程中,刘姝辰、张明月和文荟俨等人做了大量辅助工作,特此感谢!在本书的编写过程中同时受到多个基金(新一代人工智能重大项目2020AAA0108003、重点研发计划课题2017YFB1400604、国家自然科学基金项目61673140和81671771)的资助。
苏统华杜鹏2021年6月第3章遥感图像目标检测3.1案例简介随着遥感卫星成像技术的发展,遥感卫星的成像分辨率得到了大幅度的提高,大量遥感卫星的成功发射,产生了海量的遥感数据,这些数据很难依靠人工去判读。遥感图像目标检测,是为了在难以判读的海量遥感图像中找到目标的位置。
遥感图像目标检测的主要过程包括: 对输入的目标(这里是飞机)图像进行数据预处理以及特征提取,然后通过目标检测模型对目标对象的特征进行推理,后对推理结果进行解析并标记输出,其流程如图31所示。
图31遥感图像目标检测过程本章主要介绍基于华为Atlas开发者套件构建的遥感图像系统。借助Atlas开发者套件提供的AscendCL API接口完成案例的设计与实现。本案例涉及Darknet模型向Caffe模型的转换,开发板OpenCV、ffmpeg等科学计算依赖库的安装,根据YOLOv3构建目标检测模型等过程。本案例主要为读者提供一个遥感图像目标检测相关应用在华为Atlas开发者套件上部署的参考。
3.2系统总体设计系统首先构建Caffe框架的目标检测模型并训练,之后利用模型转换工具将Caffe模型转换为om模型,接下来通过om模型对输入张量进行推理,对推理结果进行处理,终输出目标检测结果以及目标检测的终图像。
3.2.1功能结构遥感图像目标检测系统可分为遥感图片预处理、模型推理和目标检测结果输出这几部分。系统的整体结构如图32所示。
图32系统整体结构3.2.2系统设计流程该系统设计流程可分为模型训练阶段和模型推理阶段,如图33所示。前者主要在服务器端完成构建,后者主要在华为Atlas开发者套件上完成构建。
模型训练阶段首先构建目标检测模型,本案例中的目标检测模型采用深度学习框架Darknet中的神经网络Darknet53进行模型训练,然后将Darknet53训练所得的模型转换为Caffe模型,以此来满足MindStudio平台模型转换要求,后对转换后的Caffe格式模型进行验证和评估。
模型推理阶段首先对输入图片进行图片预处理以及特征提取,并将结果作为目标检测模型的输入张量,利用华为MindStudio平台将Caffe格式的目标检测模型转换为华为Atlas开发者套件支持的om格式模型,接下来通过目标检测模型对输入张量进行推理,对推理结果进行处理,终输出目标检测结果以及目标检测的终图像。
图33系统流程3.3系统设计与实现本节将详细介绍系统各部分功能的设计与实现过程,该系统利用华为Atlas开发者套件提供的AscendCL API接口[2]实现系统搭建。
3.3.1目标检测模型定义该系统的检测模型基于Caffe框架构建YOLOv3神经网络模型。在基本的图像特征提取方面,YOLOv3采用Darknet53网络(含有53个卷积层)作为骨干网络。Darknet本身是专门为YOLOv3开发的网络结构,借鉴了残差网络(Residual Network)的做法,在一些层之间设置了捷径连接(Shortcut Connections),且不采用池化(maxpool),而是通过步长(Stride)为2的卷积层实现特征图的尺寸变换。YOLOv3神经网络模型会在Darknet53骨干网络的基础上添加检测相关的网络模块。
3.3.2目标检测模型训练此目标检测训练模型参考YOLOv3的模型训练方法进行训练,后获得YOLOv3的模型文件。本次采用的模型训练数据从RSODDataset、NWPU VHR10数据集中分别选取446张大小为1044×915的遥感图像和80张大小约为958×808的遥感图像; 通过旋转,mixup(一种线性插值的数据增强方法)等方式对数据集扩增,提升模型泛化能力。
将所有数据的80%作为训练样本,剩余的20%作为测试样本。
模型训练代码请参见程序清单31的具体参数定义。
程序清单31yolov3.cfg文件的部分参数定义batch=64#仅表示网络积累多少个样本后进行一次反向传播(BP)subdivisions=16#表示将一批(batch)图片分16次完成网络的前向传播width=416#网络输入的宽height=416#网络输入的高channels=3#网络输入的通道数momentum=0.9#动量DeepLearning1中化方法中的动量参数,这个值影响梯度#下降到值的速度decay=0.0005#权重衰减正则项,防止过拟合angle=5#数据增强参数,通过旋转角度来生成更多训练样本saturation = 1.5 #数据增强参数,通过调整饱和度来生成更多训练样本exposure = 1.5 #数据增强参数,通过调整曝光量来生成更多训练样本hue=.1 #数据增强参数,通过调整色调来生成更多训练样本learning_rate=0.001 #学习率 burn_in=1000 #迭代次数大于1000时,才采用policy变量定义的更新方式max_batches = 2000 #训练次数达到批(max_batches)后停止学习,一次为跑完一个批policy=steps #学习率调整的策略steps=1600,1800scales=.1,.1#变量steps和scale是设置学习率的变化,比如迭代到1600次时,#学习率衰减为1/10,迭代到1800次时,学习率又会在前一个学习#率的基础上衰减1/10利用YOLO官网的原始YOLOv3网络模型,配合自己的数据集,根据实际情况通过修改部分参数进行训练,经过多次迭代实现模型的训练。
3.3.3模型转换该系统中原始的目标检测模型为使用Darknet53网络训练的模型,其网络模型文件为cfg文件及权重(weights)文件,这需要进行模型转换。华为MindStudio平台模型转换工具目前只支持Caffe和TensorFlow的pb格式模型的转换,所以首先需要将Darknet格式的模型转换为Caffe格式的模型。此处使用了由ChenYingpeng (https://github.com/ChenYingpeng/caffeyolov3)提供的darknet2caffe转换工具,具体的转化操作可参考网址: https://blog.csdn.net/avideointerfaces/article/details/89111955。
模型转换成功后获得Caffe格式的模型文件。om格式文件的转换方式有两种: 一是通过MindStudio平台进行转换,二是通过命令行命令进行转换。此处采用的方法是使用命令行命令进行转换。具体的转换操作如下所述。
首先将yolov3.caffemodel、yolov3.prototxt、aipp_nv12.cfg三个文件放入同一文件夹下,例如yolov3文件夹,此处aipp_nv12.cfg已在代码文档中提供,C7x对.prototxt文件有修改要求,可根据个人需要按照https://support.huaweicloud.com/tiatcA200dk_3000/altasatc_16_024.html网址中的文档介绍对其进行修改。接着进入yolov3文件夹,进行环境变量设置,具体代码如下: cd $HOME/yolov3export install_path=$HOME/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0export PATH=/usr/local/python3.7.5/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATHexport PYTHONPATH=${install_path}/atc/python/site-packages/te:${install_path}/atc/python/site-packages/topi:$PYTHONPATHexport LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATHexport ASCEND_OPP_PATH=${install_path}/opp执行以下命令转换模型:atc –model=yolov3.prototxt –weight=yolov3.caffemodel –framework=0 –output=yolov3 –soc_version=Ascend310 –insert_op_conf=aipp_nv12.cfg完成此项操作后即可得到对应的om模型。
3.3.4模型推理系统模型推理阶段在华为Atlas开发者套件上实现。需要安装ffmpeg和OpenCV的原因是适配多样性的数据预处理和后处理。本案例也是基于ffmpeg和OpenCV做的处理,此处依赖库的安装十分重要,将会影响后面绝大部分代码的运行。
系统推理部分利用华为Atlas开发者套件提供的pyACL API和数字视觉预处理(Digital Vision PreProcessing,DVPP)模块中的相关功能。模型推理部分主要包括以下子模块。
(1) 图像读取函数(acl_image类中相关函数): 负责读取文件夹下的所有遥感图片,并对图片信息进行获取。
(2) 预处理函数(ObjectDetect类中的Preprocess函数): 该函数完成的功能是对读取的遥感图片进行预处理,首先将图片从JPEG格式转换为YUV格式,然后对该转换后的YUV格式的图片进行缩放。
(3) 推理处理函数(ObjectDetect类中的Inference相关函数): 该函数完成的功能是将图片信息送入模型进行模型推理,其中主要使用pyACL API中的模型推理API。
(4) 后处理函数(ObjectDetect类中的Postprocess函数): 处理推理结果,对输入图片的推理结果进行获取,解析推理结果,对其进行处理,然后输出检测结果,并将目标检测结果在原始图片中进行标记,作为检测结果进行输出,同时将检测结果信息存储为json文件。
特别地,针对宽和高均大于1000像素的图像,先裁剪(crop)后再对分块图像单独推理,后将推理结果拼接起来。
3.3.5系统运行界面设计系统运行界面在用户主机上运行。该系统运行界面依托图PyQt5进行简易的窗口设计,在主机上运行后,即可通过相关接口,完成对遥感图片中目标检测(飞机)以及检测结果的查看。通过该界面,用户无须其他操作,即可上传待检测图片至开发板端,并对该图像的检测结果进行查看。
3.4系统部署与运行结果该案例系统运行在华为Atlas开发者套件上。系统基于pyACL API接口实现遥感图像飞机目标检测功能,Python程序负责完成图片的预处理和模型推理、图片裁剪与拼接、图片检测结果输出。
在运行前,将工程文件上传至开发者套件,将待检测图片放入data文件夹。之后在主机端的AtlasUI文件夹下运行uiHuawei.py,打开系统运行界面,如图34所示。
图34遥感图像飞机检测系统运行界面该界面上有4个按钮,实现不同功能。单击“选择图片”按钮,即可加载用户所要检测的遥感图像,此处为选择图片的示意图,如图35所示。单击“显示原图”即可查看该图片原图。单击“飞机检测”按钮后,开始对选中的图片进行目标检测,同时检测结果的示意图也会展示在上方,如图36所示。在实际的检测中,较大图片检测结果可能在图片显示区进行展示时不是很清晰,因此可单击“显示检测结果”按钮可查看后的检测结果原图。
图35选中图片图36完成该图片的目标检测3.5本章小结本章提供了一个基于华为Atlas开发者套件的遥感图像目标(飞机)的检测案例,本案例基于华为Atlas开发者套件提供的pyACL API接口,通过对目标图片进行预处理、特征提取及模型推理,终实现了遥感图像目标检测的功能。
本章提供了从目标检测模型的构建,原始Darknet模型向Caffe模型的转换,以及相关环境配置到终实现遥感图像目标检测全过程讲解,希望为读者提供一个基于华为Atlas开发者套件的遥感图像目标检测应用的参考,以及一些基础技术的支持。
评论
还没有评论。