本書基于國產(chǎn)開源深度學(xué)習(xí)框架PaddlePaddle進(jìn)行編寫,全面、系統(tǒng)地介紹了PaddlePaddle在數(shù)字圖像處理中的各種技術(shù)及應(yīng)用,書中項目實例全部采用動態(tài)圖版本實現(xiàn)。全書共8章,分別介紹了基于深度學(xué)習(xí)的圖像分類、目標(biāo)檢測、語義分割、實例分割、關(guān)鍵點檢測、風(fēng)格遷移等內(nèi)容,所有知識點均通過實際項目進(jìn)行串聯(lián),旨在幫助讀者在掌握基本深度學(xué)習(xí)算法原理的基礎(chǔ)上,擴(kuò)展項目實操能力,達(dá)到學(xué)以致用的效果。
本書可作為全國高等學(xué)校計算機(jī)、人工智能等專業(yè)的深度學(xué)習(xí)課程教材,主要面向相關(guān)領(lǐng)域的教師、在讀學(xué)生和科研人員,以及從事深度學(xué)習(xí)與圖像處理的工程技術(shù)人員和愛好者。
(1) 理實結(jié)合,強(qiáng)調(diào)實用。本書以基礎(chǔ)知識點精講與實戰(zhàn)開發(fā)案例相結(jié)合的方式,由淺入深地帶領(lǐng)讀者掌握深度學(xué)習(xí)與圖像處理開發(fā)的原理和技術(shù)。
(2) 實戰(zhàn)開發(fā),案例豐富。手把手帶領(lǐng)讀者完成8個完整工程項目案例開發(fā),并對其采用的算法原理進(jìn)行詳解,同時提供源代碼和數(shù)據(jù)集,便于讀者復(fù)現(xiàn)。
(3) 內(nèi)容翔實,講解全面。部署方案齊全且詳細(xì),涵蓋Jetson Nano邊緣計算、樹莓派嵌入式、Qt客戶端、C#工控程序、安卓App、HTTP微服務(wù)等。
近年來,隨著深度學(xué)習(xí)技術(shù)的革新、GPU計算性能的突破、互聯(lián)網(wǎng)數(shù)據(jù)的激增,圖像處理領(lǐng)域的研究蓬勃發(fā)展,尤其在自動駕駛、智能安防、智慧城市、醫(yī)療保健、商業(yè)零售、航空能源、虛擬現(xiàn)實等諸多人工智能熱門領(lǐng)域,圖像處理技術(shù)落地開花,熠熠生輝。圖像處理研究工作在學(xué)術(shù)界和工業(yè)界取得的巨大成功,每年吸引著數(shù)以萬計的研究人員蜂擁而至,甚至生物醫(yī)學(xué)、機(jī)械制造、自動化、土木建筑等諸多跨專業(yè)的從業(yè)人員也開始涉獵研究。對于非計算機(jī)相關(guān)專業(yè)的讀者而言,學(xué)習(xí)過程中往往因缺少交流機(jī)會,不容易把握深度學(xué)習(xí)與圖像處理知識的全貌,并且該領(lǐng)域知識更新迭代快,新的理論層出不窮,如何在日新月異的知識體系中抽絲剝繭,掌握核心的算法精髓顯得尤為重要,這也是撰寫本書的根本原因。
本書內(nèi)容
本書以圖像處理技術(shù)作為切入點,圍繞近些年流行的深度學(xué)習(xí)算法進(jìn)行講解,研究方向包括圖像分類、目標(biāo)檢測、語義分割、實例分割、關(guān)鍵點檢測和風(fēng)格遷移等,重點剖析了各個圖像處理領(lǐng)域常見的算法原理,并在此基礎(chǔ)上結(jié)合新穎實用的項目案例貫穿所學(xué),讓讀者在掌握算法原理基礎(chǔ)上能夠達(dá)到產(chǎn)業(yè)界要求的深度學(xué)習(xí)實戰(zhàn)能力。
本書項目案例采用國產(chǎn)開源深度學(xué)習(xí)框架PaddlePaddle來實現(xiàn),考慮到易用性以及未來發(fā)展趨勢,全部采用最新的動態(tài)圖版本進(jìn)行編寫。
全書分為兩部分,共8章,在內(nèi)容安排上循序漸進(jìn)。第1部分基礎(chǔ)知識(第1、2章),第1章圖像處理基礎(chǔ),第2章深度學(xué)習(xí)基礎(chǔ); 第2部分案例應(yīng)用(第3~8章),第3章圖像分類(智能垃圾分揀器),第4章目標(biāo)檢測(二維碼掃碼槍),第5章語義分割(證件照制作工具),第6章實例分割(腎小球影像分析儀),第7章關(guān)鍵點檢測(身份證識讀App),第8章風(fēng)格遷移(照片動漫化在線轉(zhuǎn)換網(wǎng)站)。
本書特色
(1) 理實結(jié)合,強(qiáng)調(diào)實用。本書以基礎(chǔ)知識點精講與實戰(zhàn)開發(fā)案例相結(jié)合的方式,由淺入深地帶領(lǐng)讀者掌握深度學(xué)習(xí)與圖像處理開發(fā)的原理和技術(shù)。
(2) 實戰(zhàn)開發(fā),案例豐富。手把手帶領(lǐng)讀者完成8個完整工程項目案例開發(fā),并對其采用的算法原理進(jìn)行詳解,同時提供源代碼和數(shù)據(jù)集,便于讀者復(fù)現(xiàn)。
(3) 內(nèi)容翔實,講解全面。部署方案齊全且詳細(xì),涵蓋Jetson Nano邊緣計算、樹莓派嵌入式、Qt客戶端、C#工控程序、安卓App、HTTP微服務(wù)等。
配套資源
為便于教與學(xué),本書配有豐富的配套資源,包括微課視頻、源代碼、教學(xué)課件、教學(xué)大綱、教學(xué)進(jìn)度表、教案、期末試卷及答案。
(1) 獲取微課視頻方式: 先刮開并用手機(jī)版微信App掃描本書封底的文泉云盤防盜碼,授權(quán)后再掃描書中相應(yīng)的視頻二維碼,觀看教學(xué)視頻。
(2) 獲取源代碼、彩色圖片和全書網(wǎng)址方式: 先刮開并用手機(jī)版微信App掃描本書封底的文泉云盤防盜碼,授權(quán)后再掃描下方二維碼,即可獲取。
源代碼
彩色圖片
全書網(wǎng)址
(3) 其他配套資源可以掃描本書封底的書圈二維碼,關(guān)注后回復(fù)本書書號,即可下載。
讀者對象
本書可作為全國高等學(xué)校計算機(jī)、人工智能等專業(yè)的深度學(xué)習(xí)課程教材,主要面向相關(guān)領(lǐng)域的教師、在讀學(xué)生和科研人員,以及從事深度學(xué)習(xí)與圖像處理的工程技術(shù)人員和愛好者。
寫給讀者
閱讀本書前需要讀者具備Python基礎(chǔ)語法知識及基本的數(shù)學(xué)背景知識(如向量、矩陣、求導(dǎo)等)。
通過閱讀本書,希望讀者能夠掌握常見的深度學(xué)習(xí)與圖像處理概念,并構(gòu)建出一套自己的知識脈絡(luò); 能夠深入了解圖像分類、目標(biāo)檢測、語義分割、實例分割、關(guān)鍵點檢測、風(fēng)格遷移等技術(shù)在各個領(lǐng)域的處理方法; 能夠借鑒本書項目案例運用到實際的研究或工作任務(wù)中,舉一反三,學(xué)以致用。
本書在項目部署部分涉及多門編程語言和編程框架,知識點較多,如果在學(xué)習(xí)本書前沒有完全掌握本書軟硬件涉及的相關(guān)知識,那么也不必立即打退堂鼓,可以先嘗試性地跟著本書 跑起來,熟悉掌握了整個開發(fā)流程后,再逐個對知識點進(jìn)行學(xué)習(xí)。這種靶向型、實踐型的學(xué)習(xí)方式未嘗不是一種有效的學(xué)習(xí)范式。
致謝
在本書的撰寫過程中,感謝南京理工大學(xué)沈肖波教授和北京工業(yè)大學(xué)同磊副教授對本書的建議,感謝俞曉燕、趙婷和朱妤夢為本書提供的人像素材,感謝無錫兒童醫(yī)院成蕓醫(yī)師對本書醫(yī)學(xué)影像數(shù)據(jù)的專業(yè)標(biāo)注。
由于時間倉促,加之作者水平有限,錯誤和疏漏之處在所難免。在此,誠懇地期望得到各領(lǐng)域的專家和廣大讀者的批評指正。
作者2024年7月
第1部分基 礎(chǔ) 知 識
第1章圖像處理基礎(chǔ)
1.1圖像處理的基本概念
1.1.1模擬圖像和數(shù)字圖像
1.1.2數(shù)字圖像常見類型
1.1.3應(yīng)用方向
1.2圖像處理基本操作
1.2.1安裝OpenCV
1.2.2圖像讀取、保存和可視化
1.2.3像素操作
1.2.4圖像轉(zhuǎn)換
1.2.5圖像縮放
1.2.6圖像裁剪
1.2.7翻轉(zhuǎn)和旋轉(zhuǎn)
1.3圖像卷積和濾波
1.3.1線性濾波與卷積
1.3.2常見卷積核
1.4綜合案例應(yīng)用: 基于OpenCV的自動駕駛小車
1.4.1任務(wù)概述
1.4.2安裝仿真平臺
1.4.3車道線檢測
1.4.4動作控制
1.5小結(jié)
第2章深度學(xué)習(xí)基礎(chǔ)
2.1深度學(xué)習(xí)概述
2.1.1人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)
2.1.2深度學(xué)習(xí)起源和發(fā)展
2.1.3深度學(xué)習(xí)框架
2.2環(huán)境安裝
2.2.1安裝說明
2.2.2Windows平臺
2.2.3Ubuntu平臺
2.2.4AI Studio平臺
2.3PaddlePaddle基礎(chǔ)
2.3.1Tensor表示
2.3.2Tensor計算
2.3.3自動求梯度
2.4PaddlePaddle實現(xiàn)機(jī)器學(xué)習(xí): 線性回歸投資預(yù)測
2.4.1問題定義
2.4.2導(dǎo)數(shù)法
2.4.3梯度下降法
2.5PaddlePaddle實現(xiàn)深度學(xué)習(xí): 自動駕駛小車控制
2.5.1卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
2.5.2算法原理
2.5.3數(shù)據(jù)采集
2.5.4數(shù)據(jù)讀取
2.5.5網(wǎng)絡(luò)模型
2.5.6損失函數(shù)
2.5.7優(yōu)化算法
2.5.8模型訓(xùn)練
2.5.9模型驗證
2.5.10模型集成
2.6小結(jié)
第2部分案 例 應(yīng) 用
第3章圖像分類(智能垃圾分揀器)
3.1任務(wù)概述
3.1.1任務(wù)背景
3.1.2安裝PaddleClas套件
3.2算法原理
3.2.1VGG算法
3.2.2ResNet算法
3.2.3MobileNet算法
3.3算法研發(fā)
3.3.1數(shù)據(jù)集準(zhǔn)備
3.3.2算法訓(xùn)練
3.4Jetson Nano智能終端部署(Linux GPU推理)
3.4.1部署工具FastDeploy介紹
3.4.2Jetson Nano上Python推理
3.4.3Jetson Nano上C 推理
3.5小結(jié)
第4章目標(biāo)檢測(二維碼掃碼槍)
4.1任務(wù)概述
4.1.1任務(wù)背景
4.1.2安裝PaddleDetection套件
4.2算法原理
4.2.1目標(biāo)檢測常用概念
4.2.2RCNN算法
4.2.3Fast RCNN算法
4.2.4Faster RCNN算法
4.2.5YOLO v3算法
4.2.6PicoDet算法
4.3算法研發(fā)
4.3.1目標(biāo)檢測數(shù)據(jù)集常用格式介紹
4.3.2使用Labelme制作自己的二維碼檢測數(shù)據(jù)集
4.3.3Labelme格式轉(zhuǎn)換成COCO格式
4.3.4算法訓(xùn)練
4.4樹莓派開發(fā)板部署(Linux CPU推理)
4.4.1樹莓派上Python推理
4.4.2樹莓派上C 推理
4.5小結(jié)
第5章語義分割(證件照制作工具)
5.1任務(wù)概述
5.1.1任務(wù)背景
5.1.2安裝PaddleSeg套件
5.2算法原理
5.2.1FCN算法
5.2.2UNet算法
5.2.3HRNet算法
5.2.4OCRNet算法
5.3算法研發(fā)
5.3.1數(shù)據(jù)集準(zhǔn)備
5.3.2使用Labelme制作自己的語義分割數(shù)據(jù)集
5.3.3算法訓(xùn)練
5.4Qt C 桌面客戶端部署(Windows CPU推理)
5.4.1Qt基礎(chǔ)示例程序介紹
5.4.2配置并導(dǎo)入FastDeploy庫
5.4.3編寫算法推理模塊
5.4.4集成依賴庫和模型
5.5小結(jié)
第6章實例分割(腎小球影像分析儀)
6.1任務(wù)概述
6.1.1任務(wù)背景
6.1.2實例分割概述
6.2算法原理
6.3算法研發(fā)
6.3.1數(shù)據(jù)集準(zhǔn)備
6.3.2算法訓(xùn)練
6.4C#工控程序部署(Windows GPU推理)
6.4.1生成C 示例工程
6.4.2編譯C 動態(tài)鏈接庫
6.4.3編寫C#工程
6.5小結(jié)
第7章關(guān)鍵點檢測(身份證識讀App)
7.1任務(wù)概述
7.1.1任務(wù)背景
7.1.2關(guān)鍵點檢測概述
7.2PPTinyPose算法原理
7.2.1LiteHRNet骨干網(wǎng)絡(luò)算法
7.2.2數(shù)據(jù)增強(qiáng)算法
7.2.3分布感知坐標(biāo)表示方法
7.2.4無偏數(shù)據(jù)處理
7.3算法研發(fā)
7.3.1數(shù)據(jù)集準(zhǔn)備
7.3.2算法訓(xùn)練
7.4移動端部署(安卓Java推理)
7.4.1安卓基礎(chǔ)示例程序
7.4.2配置FastDeploy庫
7.4.3編寫推理模塊
7.5小結(jié)
第8章風(fēng)格遷移(照片動漫化在線轉(zhuǎn)換網(wǎng)站)
8.1任務(wù)概述
8.1.1任務(wù)背景
8.1.2安裝PaddleGAN套件
8.2算法原理
8.2.1GAN算法
8.2.2DCGAN算法
8.2.3AnimeGAN算法
8.3算法研發(fā)
8.3.1數(shù)據(jù)集準(zhǔn)備
8.3.2訓(xùn)練
8.4微服務(wù)部署(FastDeploy Serving推理)
8.4.1準(zhǔn)備Docker環(huán)境
8.4.2部署服務(wù)
8.4.3微服務(wù)開發(fā)
8.5小結(jié)
后記