關(guān)于我們
書單推薦
新書推薦
|
昇騰AI處理器CANN應(yīng)用與實(shí)戰(zhàn)——基于Atlas硬件的人工智能案例開發(fā)指南 本書是《?N騰 AI處理器架構(gòu)與編程》的續(xù)篇,專注于?N騰 AI處理器的革命性邊緣計算SoC芯片, 基于 Atlas開發(fā)者套件或 Atlas推理卡建設(shè)應(yīng)用生態(tài)。全書共20章,重點(diǎn)剖析若干重要領(lǐng)域的典型案 例,內(nèi)容涵蓋圖像分割、圖像生成、圖像處理、模式分類、目標(biāo)檢測、智能機(jī)器人和序列模式分析等。每 章自成體系,較為完整地給出了案例系統(tǒng)的應(yīng)用動機(jī)、系統(tǒng)架構(gòu)和執(zhí)行流程的設(shè)計方案,并結(jié)合代碼剖 析案例系統(tǒng)的實(shí)現(xiàn)過程和實(shí)際測試結(jié)果,能夠幫助讀者快速把?N騰 AI處理器用于解決實(shí)際問題。 本書是市場上本介紹?N騰 AI處理器的案例教材。本書體例完整,案例具有典型性,配套案例代 碼完全開源,實(shí)戰(zhàn)資源豐富,可以作為高校人工智能、智能科學(xué)與技術(shù)、計算機(jī)科學(xué)與技術(shù)、軟件工程、電子 信息工程、自動化等專業(yè)的教材,也適合從事人工智能系統(tǒng)開發(fā)的科研和工程技術(shù)人員作為參考用書。 華為公司官方出品 2018年度的ACM(美國計算機(jī)協(xié)會)圖靈獎授予深度學(xué)習(xí)領(lǐng)域三巨頭(Yoshua Bengio、Yann LeCun、Geoffrey Hinton),這是學(xué)術(shù)界與工業(yè)界對深度學(xué)習(xí)的認(rèn)可。深度學(xué)習(xí)具有強(qiáng)大的學(xué)習(xí)能力,為人工智能技術(shù)插上了翅膀。各國相繼把發(fā)展人工智能確立為國家戰(zhàn)略。我國國務(wù)院于2017年7月8日重磅發(fā)布《新一代人工智能發(fā)展規(guī)劃》,人工智能課程已經(jīng)相繼走入中小學(xué)課堂。人工智能將是未來全面支撐科技、經(jīng)濟(jì)、社會發(fā)展和信息安全的重要支柱!深度學(xué)習(xí)已經(jīng)在許多領(lǐng)域影響深遠(yuǎn),但它對算力的要求極高。華為公司應(yīng)時而動,打造出基于達(dá)芬奇架構(gòu)的昇騰AI系列處理器,并進(jìn)一步為全場景應(yīng)用提供統(tǒng)一、協(xié)同的硬件和軟件架構(gòu)。其中有面向云端提供強(qiáng)大訓(xùn)練算力的硬件產(chǎn)品(如昇騰910處理器),也有面向邊緣端和移動端提供推理加速算力的硬件產(chǎn)品(如昇騰310處理器)。與硬件同樣重要的是昇騰AI處理器的軟件生態(tài)建設(shè)。友好、豐富的軟件生態(tài)會真正釋放昇騰AI處理器的能量,走入千家萬戶,助力我國的新一代人工智能發(fā)展。 全書共分七篇計20章,重點(diǎn)剖析若干重要領(lǐng)域的典型案例,內(nèi)容涵蓋目標(biāo)檢測、圖像分割、圖像生成、圖像增強(qiáng)、模式分類、智能機(jī)器人以及序列模式分析等領(lǐng)域,涉及各種典型的深度學(xué)習(xí)網(wǎng)絡(luò)模型。 篇目標(biāo)檢測,包含三個案例,分別涉及手寫漢字拍照檢測與識別、人類蛋白質(zhì)圖譜分類和遙感圖像目標(biāo)檢測,提供了基于聯(lián)通成分分析搭配ResNet、選擇性搜索算法搭配 ResNet和YOLOv3等方法的應(yīng)用。 第二篇圖像分割,分別涉及人像的語義分割、人像分割與背景替換(摳圖)、眼底視網(wǎng)膜血管圖像的分割和邊緣檢測四個不同領(lǐng)域的任務(wù),展示了如何利用DeepLab V3 、U形語義分割網(wǎng)絡(luò)、全卷積網(wǎng)絡(luò)以及更豐富卷積特征(RCF)網(wǎng)絡(luò)模型進(jìn)行特定分割任務(wù)。 第三篇圖像生成,包含兩個案例,分別涉及AR(增強(qiáng)現(xiàn)實(shí))陰影以及卡通圖像生成,集中展示了如何使用對抗生成網(wǎng)絡(luò)(GAN)生成逼真圖像。 第四篇圖像增強(qiáng),包含四個案例,涵蓋圖像去霧、去雨、HDR(高動態(tài)范圍渲染)和圖像的超分辨率四個基本問題,分別從對抗生成網(wǎng)絡(luò)、漸進(jìn)式引導(dǎo)圖像去雨網(wǎng)絡(luò)(PGDN)、多尺度網(wǎng)絡(luò)、超分辨率網(wǎng)絡(luò)(SRCNN、FSRCNN和ESPC)設(shè)計算法,擴(kuò)寬了原有處理思路。 第五篇模式分類,包含三個案例,介紹來自人體動作識別、人臉識別和手勢識別的實(shí)踐。這些與人類本身具有的能力相關(guān),常常是我們特別期望賦予計算機(jī)的。本篇提供了基于圖卷積網(wǎng)絡(luò)(GCN)、樸素卷積網(wǎng)絡(luò)和三維卷積網(wǎng)絡(luò)等經(jīng)典模型的分類應(yīng)用。 第六篇機(jī)器人,給出機(jī)器人領(lǐng)域的一個案例,讓智能小車自動感知環(huán)境并自動規(guī)劃路線,基于ROS框架,綜合利用了雷達(dá)傳感信號感知、基于DenseNet的深度圖預(yù)測、SLAM和PID控制等技術(shù)。 第七篇序列分析,集中介紹了序列分析領(lǐng)域的三個典型案例,包含中文語音識別、手寫文本行識別以及意見挖掘與情感分析,給出了如何綜合利用VGGNet網(wǎng)絡(luò)、LSTM網(wǎng)絡(luò)、注意力網(wǎng)絡(luò)、BERT網(wǎng)絡(luò)、CTC算法來解決序列分析問題。 本書的案例素材征集自國內(nèi)20位知名教授,包括清華大學(xué)胡事民、劉永進(jìn)、張松海,南開大學(xué)程明明、李濤,浙江大學(xué)許威威、朱秋國,上海交通大學(xué)楊旸、陳立,武漢大學(xué)肖春霞,華中科技大學(xué)顏露新,吉林大學(xué)徐昊,華東師范大學(xué)張新宇,西安電子科技大學(xué)苗啟廣、侯彪,哈爾濱工業(yè)大學(xué)張盛平、蘇統(tǒng)華,深圳大學(xué)邱國平,蘇州大學(xué)張民、付國宏。 蘇統(tǒng)華和杜鵬對全書進(jìn)行統(tǒng)稿。 在本書的編寫過程中得到清華大學(xué)出版社盛東亮主任及鐘志芳編輯的專業(yè)指導(dǎo),他們的編輯和審校工作明顯提高了本書的質(zhì)量,特別向他們致以敬意。 在本書統(tǒng)稿過程中,劉姝辰、張明月和文薈儼等人做了大量輔助工作,特此感謝!在本書的編寫過程中同時受到多個基金(新一代人工智能重大項目2020AAA0108003、重點(diǎn)研發(fā)計劃課題2017YFB1400604、國家自然科學(xué)基金項目61673140和81671771)的資助。 蘇統(tǒng)華杜鵬2021年6月第3章遙感圖像目標(biāo)檢測3.1案例簡介隨著遙感衛(wèi)星成像技術(shù)的發(fā)展,遙感衛(wèi)星的成像分辨率得到了大幅度的提高,大量遙感衛(wèi)星的成功發(fā)射,產(chǎn)生了海量的遙感數(shù)據(jù),這些數(shù)據(jù)很難依靠人工去判讀。遙感圖像目標(biāo)檢測,是為了在難以判讀的海量遙感圖像中找到目標(biāo)的位置。 遙感圖像目標(biāo)檢測的主要過程包括: 對輸入的目標(biāo)(這里是飛機(jī))圖像進(jìn)行數(shù)據(jù)預(yù)處理以及特征提取,然后通過目標(biāo)檢測模型對目標(biāo)對象的特征進(jìn)行推理,后對推理結(jié)果進(jìn)行解析并標(biāo)記輸出,其流程如圖31所示。 圖31遙感圖像目標(biāo)檢測過程本章主要介紹基于華為Atlas開發(fā)者套件構(gòu)建的遙感圖像系統(tǒng)。借助Atlas開發(fā)者套件提供的AscendCL API接口完成案例的設(shè)計與實(shí)現(xiàn)。本案例涉及Darknet模型向Caffe模型的轉(zhuǎn)換,開發(fā)板OpenCV、ffmpeg等科學(xué)計算依賴庫的安裝,根據(jù)YOLOv3構(gòu)建目標(biāo)檢測模型等過程。本案例主要為讀者提供一個遙感圖像目標(biāo)檢測相關(guān)應(yīng)用在華為Atlas開發(fā)者套件上部署的參考。 3.2系統(tǒng)總體設(shè)計系統(tǒng)首先構(gòu)建Caffe框架的目標(biāo)檢測模型并訓(xùn)練,之后利用模型轉(zhuǎn)換工具將Caffe模型轉(zhuǎn)換為om模型,接下來通過om模型對輸入張量進(jìn)行推理,對推理結(jié)果進(jìn)行處理,終輸出目標(biāo)檢測結(jié)果以及目標(biāo)檢測的終圖像。 3.2.1功能結(jié)構(gòu)遙感圖像目標(biāo)檢測系統(tǒng)可分為遙感圖片預(yù)處理、模型推理和目標(biāo)檢測結(jié)果輸出這幾部分。系統(tǒng)的整體結(jié)構(gòu)如圖32所示。 圖32系統(tǒng)整體結(jié)構(gòu)3.2.2系統(tǒng)設(shè)計流程該系統(tǒng)設(shè)計流程可分為模型訓(xùn)練階段和模型推理階段,如圖33所示。前者主要在服務(wù)器端完成構(gòu)建,后者主要在華為Atlas開發(fā)者套件上完成構(gòu)建。 模型訓(xùn)練階段首先構(gòu)建目標(biāo)檢測模型,本案例中的目標(biāo)檢測模型采用深度學(xué)習(xí)框架Darknet中的神經(jīng)網(wǎng)絡(luò)Darknet53進(jìn)行模型訓(xùn)練,然后將Darknet53訓(xùn)練所得的模型轉(zhuǎn)換為Caffe模型,以此來滿足MindStudio平臺模型轉(zhuǎn)換要求,后對轉(zhuǎn)換后的Caffe格式模型進(jìn)行驗證和評估。 模型推理階段首先對輸入圖片進(jìn)行圖片預(yù)處理以及特征提取,并將結(jié)果作為目標(biāo)檢測模型的輸入張量,利用華為MindStudio平臺將Caffe格式的目標(biāo)檢測模型轉(zhuǎn)換為華為Atlas開發(fā)者套件支持的om格式模型,接下來通過目標(biāo)檢測模型對輸入張量進(jìn)行推理,對推理結(jié)果進(jìn)行處理,終輸出目標(biāo)檢測結(jié)果以及目標(biāo)檢測的終圖像。 圖33系統(tǒng)流程3.3系統(tǒng)設(shè)計與實(shí)現(xiàn)本節(jié)將詳細(xì)介紹系統(tǒng)各部分功能的設(shè)計與實(shí)現(xiàn)過程,該系統(tǒng)利用華為Atlas開發(fā)者套件提供的AscendCL API接口[2]實(shí)現(xiàn)系統(tǒng)搭建。 3.3.1目標(biāo)檢測模型定義該系統(tǒng)的檢測模型基于Caffe框架構(gòu)建YOLOv3神經(jīng)網(wǎng)絡(luò)模型。在基本的圖像特征提取方面,YOLOv3采用Darknet53網(wǎng)絡(luò)(含有53個卷積層)作為骨干網(wǎng)絡(luò)。Darknet本身是專門為YOLOv3開發(fā)的網(wǎng)絡(luò)結(jié)構(gòu),借鑒了殘差網(wǎng)絡(luò)(Residual Network)的做法,在一些層之間設(shè)置了捷徑連接(Shortcut Connections),且不采用池化(maxpool),而是通過步長(Stride)為2的卷積層實(shí)現(xiàn)特征圖的尺寸變換。YOLOv3神經(jīng)網(wǎng)絡(luò)模型會在Darknet53骨干網(wǎng)絡(luò)的基礎(chǔ)上添加檢測相關(guān)的網(wǎng)絡(luò)模塊。 3.3.2目標(biāo)檢測模型訓(xùn)練此目標(biāo)檢測訓(xùn)練模型參考YOLOv3的模型訓(xùn)練方法進(jìn)行訓(xùn)練,后獲得YOLOv3的模型文件。本次采用的模型訓(xùn)練數(shù)據(jù)從RSODDataset、NWPU VHR10數(shù)據(jù)集中分別選取446張大小為1044915的遙感圖像和80張大小約為958808的遙感圖像; 通過旋轉(zhuǎn),mixup(一種線性插值的數(shù)據(jù)增強(qiáng)方法)等方式對數(shù)據(jù)集擴(kuò)增,提升模型泛化能力。 將所有數(shù)據(jù)的80%作為訓(xùn)練樣本,剩余的20%作為測試樣本。 模型訓(xùn)練代碼請參見程序清單31的具體參數(shù)定義。 程序清單31yolov3.cfg文件的部分參數(shù)定義batch=64#僅表示網(wǎng)絡(luò)積累多少個樣本后進(jìn)行一次反向傳播(BP)subdivisions=16#表示將一批(batch)圖片分16次完成網(wǎng)絡(luò)的前向傳播width=416#網(wǎng)絡(luò)輸入的寬height=416#網(wǎng)絡(luò)輸入的高channels=3#網(wǎng)絡(luò)輸入的通道數(shù)momentum=0.9#動量DeepLearning1中化方法中的動量參數(shù),這個值影響梯度#下降到值的速度decay=0.0005#權(quán)重衰減正則項,防止過擬合angle=5#數(shù)據(jù)增強(qiáng)參數(shù),通過旋轉(zhuǎn)角度來生成更多訓(xùn)練樣本saturation = 1.5 #數(shù)據(jù)增強(qiáng)參數(shù),通過調(diào)整飽和度來生成更多訓(xùn)練樣本exposure = 1.5 #數(shù)據(jù)增強(qiáng)參數(shù),通過調(diào)整曝光量來生成更多訓(xùn)練樣本hue=.1 #數(shù)據(jù)增強(qiáng)參數(shù),通過調(diào)整色調(diào)來生成更多訓(xùn)練樣本learning_rate=0.001 #學(xué)習(xí)率 burn_in=1000 #迭代次數(shù)大于1000時,才采用policy變量定義的更新方式max_batches = 2000 #訓(xùn)練次數(shù)達(dá)到批(max_batches)后停止學(xué)習(xí),一次為跑完一個批policy=steps #學(xué)習(xí)率調(diào)整的策略steps=1600,1800scales=.1,.1#變量steps和scale是設(shè)置學(xué)習(xí)率的變化,比如迭代到1600次時,#學(xué)習(xí)率衰減為1/10,迭代到1800次時,學(xué)習(xí)率又會在前一個學(xué)習(xí)#率的基礎(chǔ)上衰減1/10利用YOLO官網(wǎng)的原始YOLOv3網(wǎng)絡(luò)模型,配合自己的數(shù)據(jù)集,根據(jù)實(shí)際情況通過修改部分參數(shù)進(jìn)行訓(xùn)練,經(jīng)過多次迭代實(shí)現(xiàn)模型的訓(xùn)練。 3.3.3模型轉(zhuǎn)換該系統(tǒng)中原始的目標(biāo)檢測模型為使用Darknet53網(wǎng)絡(luò)訓(xùn)練的模型,其網(wǎng)絡(luò)模型文件為cfg文件及權(quán)重(weights)文件,這需要進(jìn)行模型轉(zhuǎn)換。華為MindStudio平臺模型轉(zhuǎn)換工具目前只支持Caffe和TensorFlow的pb格式模型的轉(zhuǎn)換,所以首先需要將Darknet格式的模型轉(zhuǎn)換為Caffe格式的模型。此處使用了由ChenYingpeng (https://github.com/ChenYingpeng/caffeyolov3)提供的darknet2caffe轉(zhuǎn)換工具,具體的轉(zhuǎn)化操作可參考網(wǎng)址: https://blog.csdn.net/avideointerfaces/article/details/89111955。 模型轉(zhuǎn)換成功后獲得Caffe格式的模型文件。om格式文件的轉(zhuǎn)換方式有兩種: 一是通過MindStudio平臺進(jìn)行轉(zhuǎn)換,二是通過命令行命令進(jìn)行轉(zhuǎn)換。此處采用的方法是使用命令行命令進(jìn)行轉(zhuǎn)換。具體的轉(zhuǎn)換操作如下所述。 首先將yolov3.caffemodel、yolov3.prototxt、aipp_nv12.cfg三個文件放入同一文件夾下,例如yolov3文件夾,此處aipp_nv12.cfg已在代碼文檔中提供,C7x對.prototxt文件有修改要求,可根據(jù)個人需要按照https://support.huaweicloud.com/tiatcA200dk_3000/altasatc_16_024.html網(wǎng)址中的文檔介紹對其進(jìn)行修改。接著進(jìn)入yolov3文件夾,進(jìn)行環(huán)境變量設(shè)置,具體代碼如下: 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執(zhí)行以下命令轉(zhuǎn)換模型:atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310 --insert_op_conf=aipp_nv12.cfg完成此項操作后即可得到對應(yīng)的om模型。 3.3.4模型推理系統(tǒng)模型推理階段在華為Atlas開發(fā)者套件上實(shí)現(xiàn)。需要安裝ffmpeg和OpenCV的原因是適配多樣性的數(shù)據(jù)預(yù)處理和后處理。本案例也是基于ffmpeg和OpenCV做的處理,此處依賴庫的安裝十分重要,將會影響后面絕大部分代碼的運(yùn)行。 系統(tǒng)推理部分利用華為Atlas開發(fā)者套件提供的pyACL API和數(shù)字視覺預(yù)處理(Digital Vision PreProcessing,DVPP)模塊中的相關(guān)功能。模型推理部分主要包括以下子模塊。 (1) 圖像讀取函數(shù)(acl_image類中相關(guān)函數(shù)): 負(fù)責(zé)讀取文件夾下的所有遙感圖片,并對圖片信息進(jìn)行獲取。 (2) 預(yù)處理函數(shù)(ObjectDetect類中的Preprocess函數(shù)): 該函數(shù)完成的功能是對讀取的遙感圖片進(jìn)行預(yù)處理,首先將圖片從JPEG格式轉(zhuǎn)換為YUV格式,然后對該轉(zhuǎn)換后的YUV格式的圖片進(jìn)行縮放。 (3) 推理處理函數(shù)(ObjectDetect類中的Inference相關(guān)函數(shù)): 該函數(shù)完成的功能是將圖片信息送入模型進(jìn)行模型推理,其中主要使用pyACL API中的模型推理API。 (4) 后處理函數(shù)(ObjectDetect類中的Postprocess函數(shù)): 處理推理結(jié)果,對輸入圖片的推理結(jié)果進(jìn)行獲取,解析推理結(jié)果,對其進(jìn)行處理,然后輸出檢測結(jié)果,并將目標(biāo)檢測結(jié)果在原始圖片中進(jìn)行標(biāo)記,作為檢測結(jié)果進(jìn)行輸出,同時將檢測結(jié)果信息存儲為json文件。 特別地,針對寬和高均大于1000像素的圖像,先裁剪(crop)后再對分塊圖像單獨(dú)推理,后將推理結(jié)果拼接起來。 3.3.5系統(tǒng)運(yùn)行界面設(shè)計系統(tǒng)運(yùn)行界面在用戶主機(jī)上運(yùn)行。該系統(tǒng)運(yùn)行界面依托圖PyQt5進(jìn)行簡易的窗口設(shè)計,在主機(jī)上運(yùn)行后,即可通過相關(guān)接口,完成對遙感圖片中目標(biāo)檢測(飛機(jī))以及檢測結(jié)果的查看。通過該界面,用戶無須其他操作,即可上傳待檢測圖片至開發(fā)板端,并對該圖像的檢測結(jié)果進(jìn)行查看。 3.4系統(tǒng)部署與運(yùn)行結(jié)果該案例系統(tǒng)運(yùn)行在華為Atlas開發(fā)者套件上。系統(tǒng)基于pyACL API接口實(shí)現(xiàn)遙感圖像飛機(jī)目標(biāo)檢測功能,Python程序負(fù)責(zé)完成圖片的預(yù)處理和模型推理、圖片裁剪與拼接、圖片檢測結(jié)果輸出。 在運(yùn)行前,將工程文件上傳至開發(fā)者套件,將待檢測圖片放入data文件夾。之后在主機(jī)端的AtlasUI文件夾下運(yùn)行uiHuawei.py,打開系統(tǒng)運(yùn)行界面,如圖34所示。 圖34遙感圖像飛機(jī)檢測系統(tǒng)運(yùn)行界面該界面上有4個按鈕,實(shí)現(xiàn)不同功能。單擊選擇圖片按鈕,即可加載用戶所要檢測的遙感圖像,此處為選擇圖片的示意圖,如圖35所示。單擊顯示原圖即可查看該圖片原圖。單擊飛機(jī)檢測按鈕后,開始對選中的圖片進(jìn)行目標(biāo)檢測,同時檢測結(jié)果的示意圖也會展示在上方,如圖36所示。在實(shí)際的檢測中,較大圖片檢測結(jié)果可能在圖片顯示區(qū)進(jìn)行展示時不是很清晰,因此可單擊顯示檢測結(jié)果按鈕可查看后的檢測結(jié)果原圖。 圖35選中圖片圖36完成該圖片的目標(biāo)檢測3.5本章小結(jié)本章提供了一個基于華為Atlas開發(fā)者套件的遙感圖像目標(biāo)(飛機(jī))的檢測案例,本案例基于華為Atlas開發(fā)者套件提供的pyACL API接口,通過對目標(biāo)圖片進(jìn)行預(yù)處理、特征提取及模型推理,終實(shí)現(xiàn)了遙感圖像目標(biāo)檢測的功能。 本章提供了從目標(biāo)檢測模型的構(gòu)建,原始Darknet模型向Caffe模型的轉(zhuǎn)換,以及相關(guān)環(huán)境配置到終實(shí)現(xiàn)遙感圖像目標(biāo)檢測全過程講解,希望為讀者提供一個基于華為Atlas開發(fā)者套件的遙感圖像目標(biāo)檢測應(yīng)用的參考,以及一些基礎(chǔ)技術(shù)的支持。 蘇統(tǒng)華博士、哈爾濱工業(yè)大學(xué)企業(yè)與服務(wù)智能計算研究中心副教授、軟件學(xué)院副院長。主要研究方向為模式識別、深度學(xué)習(xí)、異構(gòu)計算等。致力于自然手寫體中文文本識別的研究與開拓,注重人工智能基礎(chǔ)技術(shù)和工業(yè)應(yīng)用落地。曾建立首款手寫中文庫(HIT-MW庫),先后被國內(nèi)外100余家科研院所采用。自主研發(fā)大規(guī)模深度學(xué)習(xí)訓(xùn)練和預(yù)測平臺,該平臺已經(jīng)成功應(yīng)用到傳統(tǒng)煤氣表改造工程(數(shù)千例)、中小學(xué)試卷全自動批改(千余所學(xué)校)、手寫輸入法(二十余萬用戶)等商用領(lǐng)域。出版專著3本、譯著9本,曾2次獲得國際手寫漢字識別競賽名。 引言00
你還可能感興趣
我要評論
|