http://product.dangdang.com/25207334.html
内容 簡 介
本書總的指導思想是在掌握深度學習的基本知識和特性的基礎上,培養使用TensorFlow進行實際程式設計以解決圖像處理相關問題的能力。全書力求深入淺出,通過通俗易懂的語言和詳細的程式分析,介紹TensorFlow的基本用法、進階模型設計和對應的程式編寫。
本書共22章,内容包括Python類庫的安裝和使用、TensorFlow基本資料結構和使用、TensorFlow資料集的建立與讀取、人工神經網絡、回報神經網絡、全卷積神經網絡的理論基礎、深度學習模型的建立、模型的特性、算法、ResNet、Slim、GAN等。本書強調理論聯系實際,重點介紹TensorFlow程式設計解決圖像識别的應用,提供了大量資料集,并以代碼的形式實作了深度學習模型,以供讀者參考。
本書既可作為學習人工神經網絡、深度學習、TensorFlow程式設計以及圖像處理等相關内容的程式設計人員教育訓練和自學用書,也可作為高等院校和教育訓練機構相關專業的教材。
前 言
我們處于一個變革的時代!
給定一個物體,讓一個3歲的小孩描述這個物體是什麼,似乎是一件非常簡單的事情。然而将同樣的東西放在計算機面前,讓它描述自己看到了什麼,這在不久以前還是一件不可能的事。
讓計算機學會“看”東西,這是一個專門的學科——計算機視覺所正在做的工作。借助于人工神經網絡和深度學習的發展,近年來計算機視覺在研究上取得了重大突破。通過模拟生物視覺所建構的卷積神經網絡模型在圖像識别和分類上取得了非常好的效果。
而今,借助于深度學習的發展,使用人工智能去處理正常勞動、了解語音語義、幫助醫學診斷和支援基礎科研工作,這些曾經是夢想的東西似乎都在眼前。
TensorFlow作為最新的、應用範圍最為廣泛的深度學習開源架構自然引起了廣泛的關注,它吸引了大量程式設計和開發人員進行相關内容的開發與學習。掌握TensorFlow程式設計基本技能的程式設計人員成為目前各組織和機關熱切尋求的熱門人才。他們的主要工作就是利用獲得的資料集設計不同的人工神經模型,利用人工神經網絡強大的學習能力提取和挖掘資料集中包含的潛在資訊,編寫相應的TensorFlow程式對資料進行處理,對其價值進行進一步開發,為商業機會的擷取、管理模式的創新、決策的制定提供相應的支援。随着越來越多的組織、機關和行業對深度學習應用的重視,高層次的TensorFlow程式設計人員必将成為就業市場上緊俏的人才。
目前來說,TensorFlow雖然被谷歌開源公布隻有不到兩年時間,但是其在工業、商業以及科學研究上的應用量很大,使之成為時下最熱門的深度學習架構。由于國内翻譯和知識傳播的滞後性等多方面的原因,國内對這方面的介紹較為欠缺,缺少最新 TensorFlow架構使用和設計的相關内容,進而造成了知識傳播的延遲。學習是為了掌握新知識、獲得新能力,不應是學習已經被摒棄的内容。
其次,與其他應用架構不同,TensorFlow并不是一個簡單的程式設計架構,深度學習也不是一個簡簡單單的名詞,而是需要相關研究人員對隐藏在其代碼背後的理論進行學習、掌握一定的數學知識和理論基礎的。筆者具有長期一線理科理論教學基礎,可以将其中的理論知識以非常淺顯易懂的語言進行介紹和描述,這點是市面上的某些相關書籍所無法比拟的。
本書是為了滿足廣大TensorFlow程式設計和開發人員學習最新的TensorFlow程式代碼要求而出版的。本書對涉及的深度學習的結構與程式設計代碼做了循序漸進的介紹與說明,以解決實際圖像處理為依托,從理論開始介紹TensorFlow程式設計模式,多角度、多方面地對其中的原理和實作提供翔實的分析,并結合實際案例編寫的應用程式設計,使讀者能夠在開發者的層面掌握TensorFlow程式設計方法和技巧,為開發出更強大的圖像處理應用打下紮實的基礎。
l 本書在方向上偏重于使用卷積神經網絡以及其相關變化的模型,在TensorFlow架構上進行圖像特征提取、圖像識别以及具體應用,這在市面上鮮有涉及。
l 本書并非枯燥的理論講解,而是大量最新文獻的歸納總結。在這點上,本書與其他程式設計書籍有本質差別。本書的例子都是來自于現實世界中對圖像分辨和特征競賽的優勝模型,通過介紹這些例子可以使讀者更深一步地了解和掌握其内在的算法和本質。
l 本書作者有長期研究所學生和大學教學經驗,通過通俗易懂的語言對全部内容進行講解,深入淺出地介紹回報神經網絡和卷積神經網絡理論體系的全部知識點,并在程式編寫時使用官方推薦的TensorFlow最新架構進行程式設計,幫助讀者更好地使用最新的模型架構,了解和掌握TensorFlow程式設計的精妙之處。
l 作者認為,掌握和使用深度學習的人才應在掌握基本知識和理論的基礎上,重視實際應用程式開發能力和解決問題能力的培養。是以,本書結合作者在實際工作中遇到的大量實際案例進行分析,抽象化核心模型并給出具體解決方案,全部程式例題均提供了相應代碼,以供讀者學習。
本書共分為22章,所有代碼均采用Python語言編寫,這也是TensorFlow架構推薦使用語言。
第1章介紹深度學習的基本内容,初步介紹深度學習應用于計算機視覺和發展方向,介紹使用深度學習解決計算機視覺問題的應用前景,旨在說明使用深度學習和人工智能實作計算機視覺是未來的發展方向,也是必然趨勢。
第2章介紹Python的安裝和最常用的類庫。Python語言是易用性非常強的語言,可以很友善地将公式和願景以代碼的形式表達出來,而無須學習過多的程式設計知識。Python專用類庫threading并不常見,隻是要為後文的資料讀取和TensorFlow專用格式的生成打下基礎。
第3章全面介紹機器學習的基本分類、算法和理論基礎,這裡介紹了不同的算法,例如回歸算法和決策樹算法的具體實作和應用。這些是深度學習的基礎理論部分,通過這些向讀者透徹而準确地展示深度學習的結構與應用,為更進一步掌握深度學習在計算機視覺中的應用打下紮實的基礎。
第4章主要介紹Python語言的使用。通過介紹和實作不同的Python類庫,幫助讀者強化Python的程式設計能力、學習相應類庫。這些都是在後文中反複使用的内容。同時借用掌握的知識學習資料的可視化展示技能。這項技能在資料分析中雖是基本技能,但具有非常重要的作用。
第5~6章是對OpenCV類庫使用方法的介紹。本書以圖像處理為重點,對圖像資料的讀取、編輯以及加工是本書的重中之重。OpenCV是Python中專門用以對圖像處理的類庫,通過基礎講解和進階介紹使讀者掌握這個重要類庫的使用。學會對圖像的裁剪、變換和平移的代碼編寫。第5章以例子的形式對卷積核的基礎内容做了一個介紹,并用Python語言實作了卷積核的功能。卷積核是本書中非常重要的基礎部分,也是圖像進行中非常重要的組成部分,通過編寫相應的程式去實作卷積核對圖像的處理、掌握和了解卷積神經網絡有很大幫助。
第7~8章是TensorFlow的入門基礎,通過一個娛樂性質的網站向讀者展示TensorFlow的基本應用,用圖形圖像的方式示範神經網絡進行類别分類的拟合過程,在娛樂的同時了解其背後的内容。
第9章是本書的一個重點,也是神經網絡的基礎内容。本章的回報算法是解決神經網絡計算量過大的裡程碑算法。筆者通過詳細認真的講解,使用通俗易懂的語言對這個算法進行介紹,并通過獨立編寫代碼的形式為讀者實作這個神經網絡中最重要的算法内容。本章的内容看起來不多,但是非常重要。
第10章對TensorFlow的資料輸入輸出做了詳細的介紹。從讀取CSV檔案開始,到教會讀者制作專用的TensorFlow資料格式TFRecord,這在目前市面上的書籍中鮮有涉及。使用TensorFlow架構進行程式編寫、資料的準備和規範化是重中之重,是以本章也是較為重要的一個章節。
第11~12章是應用卷積神經網絡在TensorFlow架構上進行學習的一個基礎教程,經過前面章節的準備和介紹,采用基本理論——卷積神經網絡進行手寫體的辨識是深度學習最基本的技能,也是非常重要的一個學習基礎。并且在程式編寫的過程中,作者向讀者展示了參數調整對模型測試結果的重要作用。這是目前市面上相關書籍沒有涉及到的内容,非常重要。
第13~14章是卷積神經網絡算法的介紹和應用。在這兩章内容中,筆者詳細介紹卷積神經網絡的應用,特别是在圖像識别中的應用,由單純的手寫體數值的識别發展到對顯示物體的識别。借助于圖像識别比賽的資料集,使用在比賽中得獎的卷積神經網絡模型,使讀者掌握卷積神經網絡的變種。卷積神經網絡的理論基礎就是卷積的正向和反向過程,一般正向過程較好了解和學習,但是對于反向運算,基本上沒有涉及,有的話也僅僅是對公式的複制和摘抄。本書在14章中詳細地介紹卷積神經網絡反向過程的運算和計算方法,通過大量例子的表述,第一次非常詳細地描述了卷積神經網絡的反向運算。這是相關書籍中欠缺的内容。
第15章通過一個完整的例子示範使用卷積神經網絡進行圖像識别的流程。例子來自于ImageNet圖像識别競賽,所采用的模型也是比賽中獲得準确率最高的模型。通過對項目每一步的詳細分析,手把手地教會讀者如何使用卷積神經網絡進行圖像識别。
第16章介紹VGGNet的組成結構,着重介紹VGGNet的網絡調參以及在其後執行Finetuning的能力。本章将第15章的例子複用VGG16實作,給讀者提供一個以不同的視角和不同的模型方法解決問題的思路。
第17章針對目前深度學習就業者給出的一些面試題的答案,這些問題可以幫助招聘者分析誰是高水準的面試者,也能幫助就業者完善自己的技術概念和知識,找準自己的定位,為将來升職加薪鋪平道路。
第18章介紹深度學習網絡ResNet模型,它是在網絡中使用大量殘差子產品作為網絡的基本組成部分,主要作用是使得網絡随着深度的變化增加,而不會産生權重衰減和梯度衰減或者消失等這些問題。除了ResNet模型,本章還介紹了新興的卷積神經模型,包括SqueezeNet和Xception。
第19~20章開始進入TensorFlow學習的進階階段,重點介紹的是一個API——Slim,它是一個用于定義、訓練和評估較為複雜模型的輕量級開發類庫。這兩章不光介紹了它的使用方法,還通過它制作了一個多層感覺機MLP、一個卷積神經網絡CNN,最後還使用Slim預訓練模型進行Finetuning。
第21章介紹全卷積神經網絡圖像分割,先講解分割的理論基礎和實作方法,然後給出了全卷積神經網絡進行圖像分割的分步流程與程式設計基礎,最後給出了使用VGG16全卷積網絡進行圖像分割的實戰。
第22章講解的是GAN——對抗生成網絡,本章理論雖然看似枯燥,但筆者用一個“生成器”和一個“辨識器”共同在一個網絡中不停地進行“對抗”來比喻,降低了閱讀的難度。最終還通過使用GAN生成手寫體數字的案例讓讀者真正學會GAN的應用。
除此之外,全書對于目前圖像識别最流行和取得最好成績的深度學習模型做了介紹,這些都是目前的深度學習的熱點和研究重點。
l 本書不是純粹的理論知識介紹,也不是高深技術研讨,完全是從實踐應用出發,用最簡單、典型的示例引申出核心知識,最後還指出了通往“高精尖”進一步深入學習的道路。
l 本書沒有深入介紹某一個知識塊,而是全面介紹TensorFlow涉及的圖像處理的基本結構和上層程式設計,系統綜合地講解深度學習的全貌,使讀者在學習的過程中把握好方向。
l 本書在寫作上淺顯易懂,沒有深奧的數學知識,而是采用較為形象的形式,使用大量圖像示例描述應用的理論知識,讓讀者在輕松愉悅的閱讀下掌握相關内容。
l 本書旨在引導讀者進行更多技術上的創新,每章都會用示例描述的形式幫助讀者更好地了解本章的學習内容。
l 本書代碼遵循重構原理,避免代碼污染,真心希望讀者能寫出優秀、簡潔、可維護的代碼。
本書配套示例源代碼下載下傳位址(注意數字與字母大小寫)如下:
https://pan.baidu.com/s/1jHFg2uq
如果下載下傳有問題或者對本書有任何疑問,請聯系[email protected],郵件主題為“TensorFlow”。
本書既适合學習人工神經網絡、深度學習以及TensorFlow程式設計等相關内容的程式設計人員閱讀,也可以作為高等院校相關專業的教材。建議在學習本書内容的過程中,理論聯系實際,獨立進行一些代碼的編寫,采取開放式的實驗方法,即讀者自行準備實驗資料和實驗環境,解決實際問題,最終達到理論聯系實際的目的。
本書作者現任計算機專業教師,擔負資料挖掘、Java程式設計、資料結構等多項大學及研究所學生課程,研究方向為資料倉庫與資料挖掘、人工智能、機器學習,在研和參研多項科研項目。在寫作過程中得到了家人和朋友的大力支援,在此對他們一并表示感謝。
王曉華
2017年11月