隨著技術的迅速發(fā)展,深度學習已經(jīng)從一個邊緣領域轉(zhuǎn)變?yōu)楝F(xiàn)代技術革命的核心。在這個浪潮中,圖像識別顯得尤為重要,它已經(jīng)滲透到我們?nèi)粘I畹姆椒矫婷鎻暮唵蔚拿娌拷怄i手機到高級的醫(yī)療圖像分析,再到自動駕駛汽車的視覺系統(tǒng)。
決定寫這本書時,筆者首先考慮到了這個領域的巨大潛力和廣闊的應用前景,但更重要的是,筆者意識到當前市場上的大部分教材太過專業(yè)化,難以被初學者所接受; 或者內(nèi)容過于淺顯,無法滿足專業(yè)人員的需求,因此,筆者希望本書能夠填補這個空白,為所有對圖像識別感興趣的讀者提供一個全面而深入的指南。
本書既包含了基礎知識,為初學者鋪設堅實的基礎,也涵蓋了高級主題,供有經(jīng)驗的研究者或從業(yè)者探索。本書將從圖像識別的歷史和發(fā)展趨勢開始,然后逐步深入每個主題,確保讀者可以從中得到真正有價值的知識。
隨著深度學習技術的進步,圖像識別的門檻正在逐漸降低,但這也意味著,為了在這個領域脫穎而出,需要更深入的知識和更強大的技能。筆者希望本書能夠成為讀者學習和進步的伴侶,幫助讀者走在這條充滿機遇和挑戰(zhàn)的道路上。
本書主要內(nèi)容
第1章: 概述人工智能在視覺領域的現(xiàn)狀、挑戰(zhàn)和展望。
第2章: 指導讀者進行深度學習的環(huán)境配置。
第3章: 介紹編程語言Python和深度學習框架PyTorch的基礎知識。
第4章: 深入探討卷積神經(jīng)網(wǎng)絡及其在圖像識別中的應用。
第5章: 呈現(xiàn)了一系列卷積算法的里程碑模型,并探討它們?yōu)楹纬蔀橐曈X任務的基準模型。
第6章: 關注輕量級的卷積神經(jīng)網(wǎng)絡模型,以及這些模型在工業(yè)部署中所具有的重要價值。
第7章: 深入探索起源于NLP領域的Transformer模型在圖像識別中的應用,以及其如何挑戰(zhàn)了卷積在計算機視覺領域的主導地位。
第8章: Transformer與卷積算法的碰撞引起了CV領域?qū)<覍λ惴ǖ闹匦滤伎。他們發(fā)現(xiàn)基于原始神經(jīng)網(wǎng)絡模型(MLP)同樣可以達到不錯的圖像識別效果。本章就介紹了這些基于原始神經(jīng)網(wǎng)絡算法的圖像識別模型,并對之前的算法進行對比和評價。
閱讀建議
初學者可以從第1章開始,逐步建立對圖像識別和深度學習的基礎理解,然后按章節(jié)的推進順序逐漸深入。特別是第2章和第3章,為讀者提供了實際操作的起點,介紹了如何配置深度學習環(huán)境及編程基礎。
對于已經(jīng)對深度學習編程有一定了解的讀者可跳過前3章,第4章和第5章將講解更深入的知識,讓讀者對卷積神經(jīng)網(wǎng)絡有更全面的了解,而第6~8章則探討了圖像識別領域的最新進展和趨勢,對于那些希望進一步研究或在實際工作中應用這些技術的專業(yè)人士來講,這些章節(jié)尤為重要。
總之,無論是新手還是有經(jīng)驗的研究者都可按照自己的節(jié)奏和興趣選擇章節(jié)進行閱讀。全書各章都有詳盡的參考資料和實踐建議,以確保讀者能夠充分利用這本書的內(nèi)容。
資源下載提示
素材(源碼)等資源: 掃描封底的文泉云盤防盜碼,再掃描目錄上方的二維碼下載。
致謝
感謝所有支持我、鼓勵我和為這本書提供寶貴建議的人。沒有你們,這本書將不會成為現(xiàn)實。
感謝佟天旭、徐梓源、劉慕晴、李永昊對本書內(nèi)容的整理、校對和修改。
感謝吳駿文、孫衍哲、馬程遠、劉子瑞對本書格式的編輯和整理。
感謝我的家人,尤其是我的妻子,在我寫作過程中承擔了生活中的瑣事,使我可以全身心地投入寫作。
由于時間倉促,書中難免存在不妥之處,請讀者見諒,并提寶貴意見。
于浩文
2023年8月
本書源碼
附贈資源
第1章人工智能介紹
1.1什么是人工智能
1.2人工智能的3次浪潮
1.2.1人工智能的第1次浪潮
1.2.2人工智能的第2次浪潮
1.2.3人工智能的第3次浪潮
1.3人工智能發(fā)展的三要素
1.3.1人工智能發(fā)展的基石: 數(shù)據(jù)
1.3.2人工智能發(fā)展的動力: 算法
1.3.3人工智能發(fā)展的手段: 算力
1.4人工智能的美好愿景
1.4.1烏鴉與鸚鵡的啟示
1.4.2人工智能到底有多智能
第2章深度學習環(huán)境配置
2.1專業(yè)名稱和配置方案介紹
2.1.1專業(yè)名稱介紹
2.1.2Windows配置PyTorch深度學習環(huán)境初級方案
2.1.3Windows配置PyTorch深度學習環(huán)境進階方案
2.2Anaconda配置Python和PyTorch
2.2.1Anaconda簡介
2.2.2Windows系統(tǒng)安裝Anaconda
2.2.3Linux系統(tǒng)安裝Anaconda
2.2.4Anaconda的快速入門
2.2.5Anaconda配置PyTorch深度學習環(huán)境
2.3配置VS Code和Jupyter的Python環(huán)境
2.3.1VS Code下載與安裝
2.3.2VS Code配置Python環(huán)境
2.3.3Jupyter Notebook中配置Python環(huán)境
2.4配置Windows 11和Linux雙系統(tǒng)
2.4.1Windows 11配置WSL 2的詳細步驟
2.4.2Windows 11配置WSL 2的常見錯誤
2.4.3VS Code遠程連接WSL 2
2.5配置Docker深度學習開發(fā)環(huán)境
2.5.1Docker安裝的先決條件
2.5.2安裝Docker Desktop
2.5.3拉取Docker鏡像
2.5.4快速入門Docker終端的使用
2.5.5VS Code使用Docker的快速入門
第3章編程語言快速入門
3.1Python的起源、歷史和應用場景
3.1.1Python的起源
3.1.2Python的歷史
3.1.3Python的應用場景
3.2Python的基礎知識
3.2.1注釋
3.2.2六大數(shù)據(jù)類型
3.3Python的判斷與循環(huán)語句
3.3.1比較運算符和關系運算符
3.3.2判斷語句
3.3.3循環(huán)語句
3.4Python中的函數(shù)
3.4.1函數(shù)的定義
3.4.2函數(shù)中的變量
3.4.3高級函數(shù)用法
3.4.4Python中的文件操作函數(shù)
3.5Python中的面向?qū)ο缶幊?/p>
3.5.1面向?qū)ο缶幊?VS 面向過程編程
3.5.2類與對象
3.5.3魔法方法
3.5.4類屬性和類方法
3.5.5繼承
3.5.6多態(tài)
3.5.7模塊的介紹和制作
3.5.8Python中的包和庫
3.5.9Python的pip命令
3.6PyTorch的基礎知識
3.6.1PyTorch的基本數(shù)據(jù)類型
3.6.2張量的索引、切片與維度變換
3.6.3張量的拼接、拆分與統(tǒng)計
第4章卷積神經(jīng)網(wǎng)絡理論基礎
4.1全連接神經(jīng)網(wǎng)絡
4.1.1線性模型
4.1.2回歸與分類
4.1.3感知機模型
4.1.4激活函數(shù)
4.1.5維度詛咒
4.1.6過擬合與欠擬合
4.1.7正則
4.1.8數(shù)據(jù)增強
4.1.9數(shù)值不穩(wěn)定性
4.2基于梯度下降的優(yōu)化算法
4.2.1優(yōu)化算法的數(shù)學基礎
4.2.2優(yōu)化器
4.3卷積神經(jīng)網(wǎng)絡
4.3.1卷積神經(jīng)網(wǎng)絡的計算
4.3.2卷積的設計思想
4.3.3卷積對圖像的特征提取過程
4.3.4卷積模型實現(xiàn)圖像識別
4.3.5卷積神經(jīng)網(wǎng)絡的層級結構和感受野
4.3.6第1個卷積神經(jīng)網(wǎng)絡模型: LeNet
第5章那些年我們追過的ImageNet圖像識別大賽
5.1ImageNet
5.1.1什么是ImageNet
5.1.2ImageNet數(shù)據(jù)集
5.1.3ImageNet圖像分類大賽
5.2AlexNet: 拉開深度學習序幕
5.2.1AlexNet理論
5.2.2AlexNet代碼
5.2.3AlexNet模型小結
5.3ZFNet: 開創(chuàng)卷積模型的可解釋性
5.3.1ZFNet簡介
5.3.2對卷積計算結果的可視化
5.3.3網(wǎng)絡中對不同特征的學習速度
5.3.4圖片平移、縮放、旋轉(zhuǎn)對CNN的影響
5.3.5ZFNet的改進點
5.3.6遮擋對卷積模型的影響
5.3.7ZFNet的調(diào)參實驗
5.3.8ZFNet的模型代碼實現(xiàn)
5.3.9ZFNet模型小結
5.4VGGNet: 探索深度的力量
5.4.1VGGNet模型總覽
5.4.2網(wǎng)絡貢獻總結
5.4.3VGGNet的模型代碼實現(xiàn)
5.4.4VGGNet模型小結
5.5GoogLeNet: 探索寬度的力量
5.5.1GoogLeNet V1
5.5.2GoogLeNet V2
5.5.3GoogLeNet V3
5.5.4GoogLeNet V4
5.5.5GoogLeNet V5
5.6ResNet: 神來之路
5.6.1深度學習網(wǎng)絡退化問題
5.6.2殘差連接
5.6.3ResNet模型的網(wǎng)絡結構
5.6.4殘差的調(diào)參
5.6.5殘差連接的淵源
5.6.6殘差連接有效性的解釋
5.6.7ResNet的變體
5.6.8ResNeXt
5.7DenseNet: 特征復用
5.7.1模型設計動機
5.7.2DenseNet模型結構
5.7.3DenseNet模型比較
5.8SENet: 通道維度的注意力機制
5.8.1SENet模型總覽
5.8.2SE模塊
5.8.3SENet效果
5.8.4SENet模型小結
第6章易于應用部署的輕量卷積模型
6.1MobileNet V1: 為移動端量身打造的輕量級模型
6.1.1模型設計動機
6.1.2深度可分離卷積
6.1.3MBConv模塊
6.1.4MobileNet V1模型結構
6.1.5MobileNet V1模型小結
6.2MobileNet V2: 翻轉(zhuǎn)殘差與線性瓶頸的效率變革
6.2.1逆殘差結構
6.2.2線性瓶頸結構
6.2.3MobileNet V2模型結構
6.2.4MobileNet V2模型小結
6.3MobileNet V3: 結合自動搜索的移動端網(wǎng)絡標桿
6.3.1優(yōu)化網(wǎng)絡深層結構
6.3.2hswish激活函數(shù)
6.3.3SENet
6.3.4MobileNet V3模型結構
6.3.5MobileNet V3模型小結
6.4ShuffleNet V1: 重新洗牌的高效卷積網(wǎng)絡
6.4.1組卷積
6.4.2通道打散操作
6.4.3ShuffleNet模塊
6.4.4ShuffleNet V1模型結構
6.4.5ShuffleNet V1模型小結
6.5ShuffleNet V2: 輕量級設計的網(wǎng)絡優(yōu)化版
6.5.1ShuffleNet V2模型設計動機
6.5.2輕量級網(wǎng)絡設計的5個經(jīng)驗總結
6.5.3ShuffleNet V2模型結構
6.5.4ShuffleNet V2模型小結
6.6EfficientNet V1: 縮放模型的全新視角
6.6.1EfficientNet V1模型設計動機
6.6.2深度學習模型的3種縮放方法
6.6.3EfficientNet V1模型的縮放比率
6.6.4EfficientNet V1模型結構
6.6.5EfficientNet V1模型小結
6.7EfficientNet V2: 融合速度與精度的高效網(wǎng)絡
6.7.1EfficientNet V2模型設計動機
6.7.2EfficientNet模型的問題
6.7.3EfficientNet V2模型的改進
6.7.4EfficientNet V2模型小結
6.8RepVGG: 以簡化網(wǎng)絡結構為核心的下一代模型
6.8.1RepVGG模型設計動機
6.8.2RepVGG模型結構
6.8.3RepVGG重參數(shù)化
6.8.4RepVGG模型小結
第7章Transformer的強勢入侵
7.1Transformer模型
7.1.1Transformer算法解讀
7.1.2自注意力層
7.1.3多頭自注意力層
7.1.4編碼器結構
7.1.5解碼器結構
7.1.6線性頂層和Softmax層
7.1.7輸入數(shù)據(jù)的向量化
7.1.8Transformer模型小結
7.2Vision Transformer模型: 從NLP到CU的Transformer算法變革
7.2.1ViT框架
7.2.2圖片數(shù)據(jù)的向量化
7.2.3ViT的Transformer編碼器
7.2.4MLP Head模塊
7.2.5ViT模型縮放
7.2.6混合ViT模型
7.2.7ViT模型小結
7.3Swin Transformer模型: 窗口化的Transformer
7.3.1Swin Transformer網(wǎng)絡整體框架
7.3.2Patch Merging詳解
7.3.3WMSA詳解
7.3.4SWMSA詳解
7.3.5相對位置偏置詳解
7.3.6Swin Transformer模型詳細配置參數(shù)
7.3.7Swin Transformer模型討論與總結
7.4VAN視覺注意力網(wǎng)絡: 基于卷積實現(xiàn)的注意力機制
7.4.1相關工作
7.4.2大核注意力機制
7.4.3視覺注意力網(wǎng)絡
7.4.4VAN模型小結
7.5ConvNeXt模型: 披著Transformer的CNN
7.5.1模型和訓練策略選擇
7.5.2Macro Design
7.5.3模仿ResNeXt模型
7.5.4Inverted Bottleneck反向瓶頸結構
7.5.5Large Kernel Sizes
7.5.6Micro Design
7.5.7ConvNeXt模型縮放
7.5.8ConvNeXt模型小結
第8章多層感知機的重新思考
8.1MLPMixer模型: 多層感知機的神奇魔法
8.1.1Perpatch全連接層
8.1.2MixerLayer代替自注意力機制
8.1.3MLPMixer模型結構
8.1.4MLPMixer代碼實現(xiàn)
8.1.5MLPMixer模型小結
8.2ASMLP模型: 注意力驅(qū)動下的多層感知機升級
8.2.1ASMLP模型
8.2.2ASMLP模型結構
8.2.3ASMLP代碼實現(xiàn)
8.2.4ASMLP模型小結
8.3ConvMixer模型: 卷積與多層感知機的相互借鑒
8.3.1圖像編碼成向量
8.3.2ConvMixer模型
8.3.3ConvMixer網(wǎng)絡結構
8.3.4ConvMixer代碼實現(xiàn)
8.3.5ConvMixer模型小結
8.4MetaFormer模型: 萬法歸一,構建Transformer模板
8.4.1MetaFormer模型
8.4.2MetaFormer模型結構
8.4.3MetaFormer代碼實現(xiàn)
8.4.4MetaFormer模型小結