关于我们
书单推荐
新书推荐
|
昇腾AI处理器CANN应用与实战——基于Atlas硬件的人工智能案例开发指南 本书是《?N腾 AI处理器架构与编程》的续篇,专注于?N腾 AI处理器的革命性边缘计算SoC芯片, 基于 Atlas开发者套件或 Atlas推理卡建设应用生态。全书共20章,重点剖析若干重要领域的典型案 例,内容涵盖图像分割、图像生成、图像处理、模式分类、目标检测、智能机器人和序列模式分析等。每 章自成体系,较为完整地给出了案例系统的应用动机、系统架构和执行流程的设计方案,并结合代码剖 析案例系统的实现过程和实际测试结果,能够帮助读者快速把?N腾 AI处理器用于解决实际问题。 本书是市场上本介绍?N腾 AI处理器的案例教材。本书体例完整,案例具有典型性,配套案例代 码完全开源,实战资源丰富,可以作为高校人工智能、智能科学与技术、计算机科学与技术、软件工程、电子 信息工程、自动化等专业的教材,也适合从事人工智能系统开发的科研和工程技术人员作为参考用书。 华为公司官方出品 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张大小为1044915的遥感图像和80张大小约为958808的遥感图像; 通过旋转,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开发者套件的遥感图像目标检测应用的参考,以及一些基础技术的支持。 苏统华博士、哈尔滨工业大学企业与服务智能计算研究中心副教授、软件学院副院长。主要研究方向为模式识别、深度学习、异构计算等。致力于自然手写体中文文本识别的研究与开拓,注重人工智能基础技术和工业应用落地。曾建立首款手写中文库(HIT-MW库),先后被国内外100余家科研院所采用。自主研发大规模深度学习训练和预测平台,该平台已经成功应用到传统煤气表改造工程(数千例)、中小学试卷全自动批改(千余所学校)、手写输入法(二十余万用户)等商用领域。出版专著3本、译著9本,曾2次获得国际手写汉字识别竞赛名。 引言00
你还可能感兴趣
我要评论
|