会员   密码 您忘记密码了吗?
1,576,540 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 機器視覺之TensorFlow2入門原理與應用實戰
機器視覺之TensorFlow2入門原理與應用實戰
上一张
下一张
prev next

機器視覺之TensorFlow2入門原理與應用實戰

作者: 李金洪
出版社: 人民郵電出版社
出版日期: 2020-08-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT708.00
市场价格: RM127.28
本店售价: RM113.28
促销价: RM112.01
剩余时间: 请稍等, 正在载入中...
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書主要介紹了TensorFlow 2在機器視覺中的應用。本書共8章,主要內容包括神經網路的原理,如何搭建開發環境,如何在網路側搭建圖片分類器,如何識別圖片中不同膚色的人數,如何用遷移學習診斷醫療影像,如何使用Anchor-Free模型檢測文字,如何實現OCR模型,如何優化OCR模型。本書適合機器視覺、深度學習方面的專業人士閱讀。


作者介紹

李金洪

代碼醫生工作室高級工程師,大蛇智慧網站創始人,精通C、C++、彙編、Python、Java、Go等語言,擅長神經網路、演算法、協定分析、移動互聯網安全架構等技術,先後擔任過CAD演算法工程師、手機架構師、專案經理、首席技術官、部門經理、資深產品總監等職位。在深度學習領域中參與過某移動互聯網後臺的光學字元辨識項目、某娛樂節目機器人的語音辨識和聲紋識別專案及金融領域的若干分類專案。發佈過兩套關於CNTK深度學習框架的視頻教程。


目錄

第一篇 基礎知識
第1章 神經網路的原理/3
1.1 神經網路/4
1.1.1 神經元的結構/4
1.1.2 生物神經元與電腦中神經元模型結構的相似性/6
1.1.3 生物神經元與電腦神經元模型工作流程的相似性/6
1.1.4 神經網路的形成/6
1.2 神經網路與深度學習的關係/7
1.3 全連接神經網路/7
1.3.1 全連接神經網路的結構/7
1.3.2 實例分析:全連接神經網路中每個神經元的作用/8
1.3.3 全連接神經網路的擬合原理/10
1.3.4 全連接神經網路的設計思想/10
1.4 生物界的視覺處理系統/11
1.4.1 大腦對視覺信號的處理流程 /11
1.4.2 大腦對神經信號的分級處理 /12
1.5 離散微積分/12
1.5.1 離散微分與離散積分/12
1.5.2 電腦視覺中的離散積分/13
1.6 卷積神經網路/13
1.6.1 卷積的過程/14
1.6.2 1D卷積、2D卷積和3D卷積/14
1.6.3 實例分析:Sobel運算元的原理/15
1.6.4 深度神經網路中的卷積核/17
1.6.5 反卷積/18
1.7 卷積分/18
1.8 卷積神經網路與全連接神經網路的關係/19

第2章 搭建開發環境/21
2.1 準備硬體環境/22
2.2 下載及安裝Anaconda/22
2.2.1 下載Anaconda開發工具/22
2.2.2 安裝Anaconda開發工具/23
2.2.3 安裝Anaconda開發工具時的注意事項/23
2.3 使用Anaconda安裝TensorFlow/24
2.3.1 查看TensorFlow的版本/24
2.3.2 使用Anaconda 安裝TensorFlow/24
2.3.3 TensorFlow的安裝指南/25
2.4 測試顯卡及開發環境的一些常用命令/25
2.4.1 使用nvidia-smi命令查看顯卡 資訊/25
2.4.2 nvidia-smi命令失效的解決 辦法/26
2.4.3 查看CUDA 的版本/27
2.4.4 查看cuDNN 的版本/27
2.4.5 用代碼測試安裝環境/28
2.5 使用Python虛環境實現多個 TensorFlow版本共存/28
2.5.1 查看當前的Python虛環境及Python版本/28
2.5.2 創建Python虛環境/29
2.5.3 在Python虛環境中安裝TensorFlow 1.x版本/31
2.5.4 進行介面配置/31
2.5.5 使用PyCharm編輯器切換虛環境/33
2.6 安裝Docker/35
2.6.1 Docker簡介/35
2.6.2 在Dabian系列的Linux系統中安裝Docker/35
2.6.3 在Red Had系列的Linux系統中安裝Docker/36
2.6.4 安裝NVIDIA Docker/38
2.7 安裝TF_Serving模組/38
2.7.1 在Linux系統中使用apt-get命令安裝TF_Serving模組/38
2.7.2 在Linux系統中使用Docker安裝TF_Serving模組/39

第3章 在網路側搭建圖片分類器/41
3.1基礎概念/42
3.1.1 ResNet50模型與殘差網路/42
3.1.2 tf.keras介面/43
3.2 代碼環境及模型準備/44
3.2.1 獲取預訓練模型/44
3.2.2 在本地進行模型部署/45
3.3 代碼實現:用ResNet50模型識別圖片所屬類別/45
3.4 使用模型時如何預處理輸入圖片/48
3.4.1  近鄰法/48
3.4.2 調整圖片尺寸的其他方法/48
3.4.3 資料預處理在模型應用中的重要性/49
3.4.4 ImgNet中預訓練模型的資料預處理方法/49
3.5 代碼實現:將模型匯出為支援部署的凍結圖/50
3.5.1 saved_model的用法/50
3.5.2 調用saved_model模組為模型添加簽名並保存/50
3.5.3 運行代碼並生成凍結圖/51
3.6 在伺服器上部署分類器模型/52
3.6.1  模型的版本號/52
3.6.2 啟動服務容器/52
3.6.3 關閉網路側服務的方法/53
3.7 代碼實現:構建URL請求用戶端/54
3.8 網路側的分類應用/55
3.9 擴展:使用 多預訓練模型進行部署/56
3.9.1 VGG模型/56
3.9.2 Inception模型/56
3.9.3 DenseNet模型/57
3.9.4 PNASNet模型/57
3.9.5 EfficientNet模型/58
3.9.6主流卷積模型的通用結構/60

第二篇 中級應用

第4章 識別圖片中不同膚色的人數/63
4.1 安裝實例所依賴的模組/64
4.1.1 安裝opencv-python模組/64
4.1.2 安裝face_recognition模組/64
4.1.3 安裝imageio模組/65
4.1.4 安裝tqdm模組/65
4.2 編寫爬蟲程式並收集樣本/65
4.2.1 設計爬蟲程式/65
4.2.2 代碼實現:定義爬蟲類/66
4.2.3 代碼實現:用爬蟲爬取圖片/69
4.3 加工樣本/70
4.3.1 提取人臉資訊的具體步驟/70
4.3.2 代碼實現:將裁剪圖片加工成訓練樣本/70
4.4 將樣本載入資料集/72
4.4.1 tf.data.Dataset介面/72
4.4.2 tf.data.Dataset介面支援的資料集變換操作/72
4.4.3 代碼實現:構建資料集/77
4.5 tf.keras介面的使用/79
4.5.1 調用函數式API的模式/79
4.5.2 構建子類的模式/83
4.5.3 其他模式及總結/86
4.6 深度卷積神經網路/86
4.6.1 深度卷積神經網路的組成/87
4.6.2 卷積運算/87
4.6.3 池化運算/88
4.6.4 啟動函數ReLU及相關的變體函數/89
4.7 構建網路模型/91
4.7.1 設計深度卷積神經網路模型的結構/92
4.7.2 Dropout層的實現與原理/92
4.7.3 Softmax演算法及其原理/93
4.7.4 常用的損失演算法/94
4.7.5 代碼實現:用tf.keras介面搭建卷積神經網路/95
4.7.6 代碼實現:定義網路模型的訓練介面/97
4.7.7 代碼實現:視覺化模型結構/98
4.8 使用模型/101
4.8.1 代碼實現:使用模型對圖片進行識別/101
4.8.2 代碼實現:使用模型對即時視頻流進行識別/102
4.8.3 在Linux系統中調用攝像頭並使用模型/104
4.9 卷積神經網路的優化方法/106
4.9.1 批量歸一化/106
4.9.2  好的啟動函數/106
4.9.3  好的Dropout方法/108
4.9.4  好的網路結構/110
4.9.5  好的卷積核/111
4.9.6 卷積核的分解技巧/114
4.9.7 可分離深度卷積/115
4.9.8 空洞卷積/115
4.10 練習題/116

第5章 用遷移學習診斷醫療影像/117
5.1 處理樣本/118
5.1.1 醫療影像的檔案格式/118
5.1.2 ChestX-ray14資料集/119
5.1.3 在實例中部署資料集/121
5.1.4 資料增強/121
5.1.5 用tf.keras介面進行資料增強的方法/123
5.1.6 代碼實現:創建用於資料增強的圖像生成器/125
5.1.7 應用圖像生成器的方法/126
5.1.8 代碼實現:在資料集上應用圖像生成器/129
5.2 分類任務與樣本均衡/134
5.2.1 二分類任務/134
5.2.2 互斥多分類任務與互斥分類任務/134
5.2.3 非互斥分類任務/134
5.2.4 訓練過程中的樣本均衡問題/134
5.2.5 代碼實現:為ChestX-ray14 資料集進行樣本均衡/135
5.3 遷移訓練CheXNet模型/137
5.3.1 遷移訓練/137
5.3.2 CheXNet模型/137
5.3.3 下載DenseNet121預訓練模型/139
5.3.4 代碼實現:用tf.keras介面搭建預訓練模型/139
5.3.5 代碼實現:構建模型/141
5.4 編譯模型/141
5.4.1 優化器的種類與選取/141
5.4.2 tf.keras介面中的損失函數/143
5.4.3 學習率與退化學習率的設置/143
5.4.4 評估函數的設置/144
5.4.5 代碼實現:為模型添加自訂評估介面/145
5.4.6 代碼實現:編譯模型/147
5.5 tf.keras介面中訓練模型的方法/148
5.5.1 fit方法的使用/148
5.5.2 fit_generator方法的使用/149
5.6 tf.keras訓練模型中的Callbacks方法/150
5.6.1 輸出訓練過程中的 資料/151
5.6.2 將訓練過程中的 資料輸出到TensorBoard上/151
5.6.3 保存訓練過程中的檢查點檔/151
5.6.4 設置訓練模型的早停功能/152
5.6.5 設置退化學習率/152
5.6.6 自訂Callbacks方法/152
5.7 添加回呼函數並訓練模型/153
5.7.1 代碼實現:添加檢查點回呼函數/153
5.7.2 代碼實現:添加退化學習率回呼函數/153
5.7.3 代碼實現:訓練模型並視覺化訓練過程/154
5.8 使用基於梯度定位的深度網路視覺化方法顯示病灶區域/156
5.8.1 Grad-CAM方法/156
5.8.2 代碼實現:計算病灶區域/158
5.9 擴展實例:多模型融合/161
5.9.1 多模型融合/161
5.9.2 使用八度卷積來替換模型中的普通卷積/162
5.9.3 使用亂數據增強方法訓練模型/164
5.9.4 使用AdvProp方法訓練模型/164
5.9.5 使用自訓練框架Noisy Student訓練模型/166
5.9.6 關於 多訓練方法的展望/167
5.10 在衣服資料集上處理多標籤非互斥分類任務/167

第三篇 應用

第6章 用Anchor-Free模型檢測
 文字/173
6.1 基於圖片內容的處理任務/174
6.1.1 目標識別任務/174
6.1.2 圖片分割任務/174
6.1.3 Anchor-Free模型/175
6.1.4 非極大值抑制演算法/176
6.1.5 FCOS模型/176
6.1.6 focal loss演算法/177
6.1.7 CornerNet與CornerNet-Lite模型/178
6.1.8 CenterNet模型/179
6.1.9 高斯核函數/179
6.1.10 Matrix Net模型/182
6.1.11 目標檢測中的上採樣與下採樣/183
6.1.12 卷積運算與補零間的關係/183
6.2 處理樣本/184
6.2.1 樣本/184
6.2.2 代碼實現:用tf.data.Dataset介面開發版本相容的資料集/185
6.2.3 代碼實現:為尺寸調整後的樣本圖片同步標注座標/192
6.2.4 代碼實現:將標籤改為“中心點、高、寬”的形式/195
6.3 構建堆疊式沙漏網路模型/198
6.3.1 沙漏網路模型/198
6.3.2 代碼實現: 構建沙漏網路模型的基礎結構/200
6.3.3 代碼實現: 構建沙漏網路模型的前置結構/201
6.3.4 代碼實現: 構建沙漏網路模型的主體203
6.3.5 代碼實現: 搭建堆疊式沙漏網路模型/206
6.3.6 代碼實現: 對沙漏網路模型進行單元測試/207
6.4 構建CenterNet模型類/208
6.4.1 代碼實現: 定義CenterNet模型類並實現初始化方法/208
6.4.2 代碼實現: 定義模型的輸入節點/209
6.4.3 代碼實現: 構建模型的網路結構/211
6.4.4 代碼實現: 計算模型的損失值/215
6.4.5 高斯核半徑的計算/220
6.4.6 代碼實現: 實現CenterNet模型類的訓練/222
6.5 訓練模型/224
6.5.1 代碼實現: 構建資料集/224
6.5.2 代碼實現: 產生實體MyCenterNet類並載入權重參數/225
6.5.3 代碼實現: 訓練模型並保存 優結果/226
6.6 使用模型/228
6.6.1 代碼實現: 產生實體MyCenterNet類/228
6.6.2 代碼實現: 讀取圖片並預測/229
6.7 模型開發過程中的經驗與技巧/230
6.7.1 如何用tf.data.Dataset介面返回變長的批次樣本資料/230
6.7.2 在模型訓練過程中處理損失值為None的思路/231
6.7.3 實例分析:由於計算方法的問題,引起損失值為None/232
6.7.4 使用tf.data.Dataset介面對齊填充時的注意事項/233
6.7.5 實例分析:由於模型輸出的問題,引起損失值為None/233
6.7.6 實例分析:由於學習率過大,引起損失值為None/234
6.7.7 歸一化權重設置不當會使模型停止收斂/235
6.7.8 實例分析:歸一化權重設置不當會使模型停止收斂/235
6.7.9 退化學習率使用不當會使模型停止收斂/236
6.7.10 如何避免模型在預測和訓練時處理的樣本相同卻得到不同的結果/237
6.7.11 實例分析:用模型檢測相同的資料卻得出不同的結果/237
6.7.12 常用的帶補零的卷積運算/238
6.7.13 使用 好的骨幹網模型Res2Net/239
6.8 擴展:對漢字進行區域檢測/240
6.9 練習題/240

第7章 實現OCR模型——可以從圖片中識別出文字的模型/241
7.1實例:用CNN模型識別驗證碼/242
7.1.1 樣本/242
7.1.2 代碼實現:生成自訂字體的驗證碼/242
7.1.3 代碼實現:構建輸入資料集/243
7.1.4 模型的設計思路/244
7.1.5 代碼實現:搭建卷積網路模型/244
7.1.6 代碼實現:搭建多分類輸出層/246
7.1.7 訓練模型並輸出結果/247
7.1.8 原理分析:輸出層的每個分類是否可以與字元序列對應/247
7.1.9 練習題:視覺化分類器的關注區域/248
7.2 通用OCR的實現原理/250
7.3 文字檢測的相關技術/251
7.4 文字識別的相關技術/252
7.5 實例:用CRNN模型識別圖片中的 變長文字/252
7.5.1 製作樣本/253
7.5.2 代碼實現:用tf.data.Dataset介面開發版本相容的資料集/253
7.5.3 CRNN中的RNN/259
7.5.4 代碼實現:構建CRNN模型/259
7.5.5 CTC演算法與損失計算/264
7.5.6 代碼實現:實現損失計算函數/265
7.5.7 代碼實現:實現自訂Callbacks類並重新計算損失值/266
7.5.8 代碼實現:訓練CRNN模型/267
7.5.9 代碼實現:使用CRNN模型進行預測/270
7.6 開發模型過程中的經驗與技巧/272
7.6.1 在下採樣操作中盡可能用步長為2的操作代替池化/272
7.6.2 實例驗證:全尺寸卷積與全連接 一樣/273
7.6.3 批量歸一化與啟動函數的位置關係/274
7.6.4 在神經網路模型中是否有必要操作Dropout層/277
7.6.5 實例分析:應該將圖片歸 一 化到[0,1]區間還是[-1,1]區間/278
7.6.6 用tf.keras介面編寫組合模型時容易犯的錯誤/279
7.6.7 開發含CTC演算法的代碼的注意事項/282
7.6.8 在使用相同資料集的情況下訓練過程的損失值和驗證過程的損失值不同/282
7.6.9 實例驗證:訓練時優化器的選取/283

第8章 優化OCR模型——基於卷積網路和迴圈網路的優化/285
8.1 優化OCR模型中的圖像特徵處理部分/286
8.1.1 提升深度卷積神經網路魯棒性的思路/286
8.1.2 STN模型/286
8.1.3 STN模型的原理分析/287
8.2 實例:用STN實現MNIST資料集的仿射變換/288
8.2.1 樣本/288
8.2.2 代碼實現:構建STN層/288
8.2.3 代碼實現:測試STNtransformer類/294
8.2.4 代碼實現:製作DataSet/297
8.2.5 獨立組件層的原理/298
8.2.6 代碼實現:搭建應用ReNorm演算法的IC層/299
8.2.7 ReNorm演算法的原理/299
8.2.8 代碼實現:搭建有STN層的卷積模型/300
8.2.9 代碼實現:訓練STN模型/302
8.2.10 代碼實現:使用模型進行預測並顯示STN層的結果/303
8.3 實例:用STN層優化OCR模型/305
8.3.1 帶STN層的CRNN模型的結構/305
8.3.2 代碼實現:搭建有STN層的CRNN模型/306
8.3.3 代碼實現:訓練模型並輸出結果/307
8.3.4 優化步驟1:使損失不變的模型發生收斂/308
8.3.5 優化步驟2:消除模型在訓練和預測相同資料時的效果差異/310
8.3.6 擴展:廣義的STN/313
8.4 對OCR網路中的序列生成部分進行優化/315
8.4.1 多頭注意力與自注意力機制/315
8.4.2 用多頭自注意力機制模型替換RNN模型/316
8.4.3 用注意力機制改善RNN模型/318
8.4.4 用seq2seq框架改善輸出序列/321
8.4.5 Addons模組/322
8.4.6 使用反向序列/322
8.5 擴展實例:用控制點校正的方法優化OCR網路/323
8.5.1 代碼實現: 搭建有控制點校正的STN模型/324
8.5.2 控制點在模型預測中的效果/325
8.5.3 ASTER模型/326
8.6 開發模型的經驗與技巧/327
8.6.1 相關函數/327
8.6.2 防範手動初始化權重的陷阱/329
8.6.3 測試模型泛化能力過程中的注意事項/331
8.6.4 使用Mish啟動函數與Ranger優化器進一步提升性能/331