計算機視覺實戰(zhàn):基于TensorFlow 2
定 價:89 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[法]本杰明·普朗什(Benjamin Planche),[法]艾略特·安德烈斯(Eliot Andres)
- 出版時間:2021/8/1
- ISBN:9787111688471
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書探討了谷歌機器學(xué)習(xí)開源框架的全新版本TensorFlow 2,從計算機視覺和深度學(xué)習(xí)基礎(chǔ)知識開始,介紹了如何從頭開始構(gòu)建神經(jīng)網(wǎng)絡(luò),并將其用于計算機視覺任務(wù),如圖像分類、目標(biāo)分割、視頻分析等。展示了如何使用如Inception和ResNet等現(xiàn)代神經(jīng)網(wǎng)絡(luò)分類圖像,使用YOLO、Mask R-CNN和U-Net提取特定內(nèi)容,并輔以具體的代碼示例。還介紹了遷移學(xué)習(xí)、數(shù)據(jù)增強、域適應(yīng)等技術(shù),以及如何在移動設(shè)備和網(wǎng)絡(luò)瀏覽器中進(jìn)行部署。
計算機視覺解決方案日益普及,在醫(yī)療、汽車、社交媒體和機器人等領(lǐng)域取得了不錯的進(jìn)展。本書將幫助你了解全新版本的谷歌機器學(xué)習(xí)開源框架TensorFlow 2,你將掌握如何使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)完成視覺任務(wù)。本書從計算機視覺和深度學(xué)習(xí)基礎(chǔ)知識開始,教你如何從頭開始構(gòu)建神經(jīng)網(wǎng)絡(luò)。你將掌握一些讓TensorFlow成為廣泛使用的AI庫的特性,以及直觀的Keras接口,繼而高效地構(gòu)建、訓(xùn)練和部署CNN。通過具體的代碼示例,本書展示了如何使用Inception和ResNet等現(xiàn)代神經(jīng)網(wǎng)絡(luò)分類圖像,以及如何使用YOLO、Mask R-CNN和U-Net提取特定內(nèi)容。本書還將介紹如何構(gòu)建生成式對抗網(wǎng)絡(luò)(GAN)和變分自編碼器(VAE)來生成和編輯圖像,以及如何使用LSTM分析視頻。在此過程中,你將深入了解遷移學(xué)習(xí)、數(shù)據(jù)增強、域適應(yīng),以及移動設(shè)備和Web部署等高級知識以及其他關(guān)鍵概念。通過閱讀本書,你將獲得使用TensorFlow 2解決高級計算機視覺問題的理論知識和實際技能。
由于利用了卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)等深度學(xué)習(xí)方法,計算機視覺技術(shù)在醫(yī)療、自動駕駛、社交媒體和機器人等領(lǐng)域的應(yīng)用達(dá)到新的高度。無論是自動處理復(fù)雜的任務(wù),指導(dǎo)專家的工作,還是幫助藝術(shù)家創(chuàng)作,越來越多的公司都在應(yīng)用計算機視覺解決方案。
本書將探討TensorFlow 2,這是谷歌機器學(xué)習(xí)開源框架的全新版本。書中介紹Tensor- Flow 2的關(guān)鍵特性和的解決方案,并演示如何有效地構(gòu)建、訓(xùn)練和部署CNN,以完成各種實際任務(wù)。
讀者對象
本書適用于任何具備一定Python編程和圖像處理基礎(chǔ)(例如,知道如何讀取和寫入圖像文件,如何編輯其像素值等)的從業(yè)人員。本書將循序漸進(jìn)地介紹相關(guān)內(nèi)容,不僅適用于深度學(xué)習(xí)初學(xué)者,也適用于對TensorFlow 2的新特性感興趣的專家。
雖然一些理論解釋需要代數(shù)和微積分知識,但是書中的具體例子更側(cè)重于實際應(yīng)用。按照所述步驟,你將能夠處理現(xiàn)實生活中的任務(wù),比如自動駕駛汽車的視覺識別和智能手機應(yīng)用。
本書內(nèi)容
第1章介紹計算機視覺和深度學(xué)習(xí),提供一些理論背景,并教你如何從零開始實現(xiàn)和訓(xùn)練視覺識別神經(jīng)網(wǎng)絡(luò)。
第2章介紹與計算機視覺相關(guān)的TensorFlow 2概念,以及一些更高級的理念。此外,介紹TensorFlow的子模塊Keras,并講述基于該框架實現(xiàn)的簡單識別方法的訓(xùn)練過程。
第3章介紹CNN,并解釋它如何改變計算機視覺。本章還介紹正則化工具和現(xiàn)代優(yōu)化算法,可用于訓(xùn)練更健壯的識別系統(tǒng)。
第4章提供理論細(xì)節(jié)和實踐代碼,以便將的解決方案(如Inception和ResNet)應(yīng)用于圖像分類。本章還解釋什么使得遷移學(xué)習(xí)成為機器學(xué)習(xí)中的一個關(guān)鍵概念,以及如何使用TensorFlow 2來實現(xiàn)它。
第5章討論兩種檢測圖像中特定對象的方法的架構(gòu),其中YOLO(You Only Look Once)模型以其速度聞名,而Faster R-CNN則以其準(zhǔn)確性聞名。
第6章介紹自動編碼器以及像U-Net和FCN這樣的網(wǎng)絡(luò)如何用于圖像去噪、語義分割等。
第7章聚焦于為深度學(xué)習(xí)應(yīng)用高效收集和預(yù)處理數(shù)據(jù)集的解決方案,介紹構(gòu)建優(yōu)化數(shù)據(jù)流水線的TensorFlow工具,以及彌補數(shù)據(jù)不足的各種解決方案(圖像繪制、域適應(yīng)和生成式網(wǎng)絡(luò),如VAE和GAN)。
第8章討論循環(huán)神經(jīng)網(wǎng)絡(luò),并介紹更高級的長短期記憶架構(gòu)。本章提供將LSTM應(yīng)用于視頻動作識別的實用代碼。
第9章詳細(xì)介紹在速度、磁盤空間和計算性能方面的模型優(yōu)化。本章通過一個實際的示例,介紹如何在移動設(shè)備和瀏覽器上部署TensorFlow解決方案。
附錄提供關(guān)于TensorFlow 1的一些信息,重點介紹TensorFlow 2中引入的關(guān)鍵變化。此外,還包括從舊項目遷移到版本的指南。后,列出了每章的參考書目,供想要深入了解相關(guān)領(lǐng)域的讀者參考。
如何閱讀本書
以下部分包含一些信息和建議,方便讀者閱讀本書,并幫助讀者從其他材料中受益。
下載并運行示例代碼文件
本書不僅對TensorFlow 2和先進(jìn)的計算機視覺方法進(jìn)行了深入探討,還提供了大量的示例及其完整實現(xiàn)。
本書的示例代碼可以從http://www.packtpub.com通過個人賬號下載,也可以訪問華章圖書官網(wǎng)http://www.hzbook.com,通過注冊并登錄個人賬號下載。
本書的代碼包也托管在GitHub上,地址是https://github.com/ PacktPublishing/Hands-On-Computer-Vision-with-TensorFlow-2。如果代碼有更新,現(xiàn)有的GitHub存儲庫也會隨之更新。
研究并運行實驗
Jupyter Notebook (https://jupyter.org)是一個用于創(chuàng)建和共享Python腳本、文本信息、可視化結(jié)果、方程式等的開源Web應(yīng)用程序。我們把隨書提供的詳細(xì)代碼、預(yù)期結(jié)果和補充說明文件稱為 Jupyter Notebook。每一個Jupyter Notebook都包含一個具體的計算機視覺任務(wù)。例如,一個Notebook解釋了如何訓(xùn)練CNN在圖像中檢測動物,另一個則詳細(xì)介紹了建立自動駕駛汽車識別系統(tǒng)的所有步驟,等等。
正如我們將在下面看到的,你可以直接研究這些文檔,也可以將它們用作代碼段來運行和重現(xiàn)書中介紹的實驗。
在線學(xué)習(xí)Jupyter Notebook
如果只是想瀏覽一下提供的代碼和結(jié)果,那么可以直接在本書的GitHub存儲庫中訪問它們。事實上,GitHub能夠渲染Jupyter Notebook并將其顯示為靜態(tài)網(wǎng)頁。
但是,GitHub查看器會忽略一些樣式和交互內(nèi)容。為了獲得的在線觀看體驗,建議使用 Jupyter nbviewer (https://nbviewer.jupyter.org),這是一個官方的網(wǎng)絡(luò)平臺,可以用來閱讀上傳至網(wǎng)上的Jupyter Notebook。通過這個網(wǎng)站可以查詢存儲在GitHub存儲庫中的Notebook,因此,所提供的Jupyter Notebook也可以通過https://nbviewer.jupyter.org/github/PacktPublishing/Hands-On-Computer-Vision-with-TensorFlow-2閱讀。
在你自己的計算機上運行Jupyter Notebook
要在你自己的計算機上閱讀或運行這些文檔,首先要安裝Jupyter Notebook。對于那些已經(jīng)使用Anaconda(https://www.anaconda.com)來管理和部署Python環(huán)境(本書推薦這種方式)的用戶,Jupyter Notebook應(yīng)該是可以直接使用的(因為它安裝在Anaconda中)。對于那些使用其他Python發(fā)行版和不熟悉Jupyter Notebook的用戶,建議查看一下說明文檔,其中提供了安裝說明和教程(https://jupyter.org/documentation)。
安裝了Jupyter Notebook之后,導(dǎo)航到包含本書代碼文件的目錄,打開終端,并執(zhí)行以下命令:
$ jupyter notebook
應(yīng)該會在默認(rèn)瀏覽器中打開Web界面,現(xiàn)在,就應(yīng)該能夠瀏覽目錄并打開本書提供的Jupyter Notebook了,可以閱讀、執(zhí)行或編輯它們。
部分文檔包含較高級的實驗,可能需要大量的計算資源(比如在大型數(shù)據(jù)集上訓(xùn)練識別算法)。如果沒有適當(dāng)?shù)募铀儆布ㄒ簿褪钦f,如果沒有兼容的NVIDIA GPU,參見第2章),運行這些腳本可能需要數(shù)小時甚至數(shù)天(即使有兼容的GPU,運行的實例也可能需要相當(dāng)長的時間)。
用谷歌Colab運行Jupyter Notebook
對于那些希望自己運行Jupyter Notebook,或者嘗試新實驗,但又無法使用足夠強大的計算機的用戶,建議使用名為Colaboratory的谷歌Colab(https://colab.research.google.com)。它是一個基于云的Jupyter Notebook,由谷歌提供,以便在強大的計算機上運行計算密集型腳本。你可以在GitHub存儲庫中找到關(guān)于此服務(wù)的更多細(xì)節(jié)。
本書約定
本書中使用了以下約定。
正文中的代碼字體:表示文本中的代碼和用戶輸入。例如,Model對象的.fit()方法啟動訓(xùn)練過程。
代碼塊示例:
代碼塊中需要關(guān)注的某個特定部分會以粗體表示:
命令行輸入或輸出示例:
粗體:表示新術(shù)語、重要詞語以及在屏幕上顯示的內(nèi)容。例如,菜單或?qū)υ捒蛑械膯卧~會這樣顯示在文本中:你可以在TensorBoard的Scalars頁面上觀察解決方案的性能。
表示警告或重要提示。
表示提示或技巧。