用Keras、TensorFlow、Core ML,以及TensorFlow Lite訓練、微調并發(fā)布計算機視覺模型。為不同設備開發(fā)AI應用,包括Raspberry Pi、Jetson Nano,以及Google Coral。探索有趣的項目,從硅谷“熱狗識別”應用程序到谷歌規(guī)模的圖像搜索,以及40多個案例研究和行業(yè)實例。在電子游戲環(huán)境中模擬一輛自動駕駛汽車并用強化學習構建一個微型版自動駕駛汽車。使用遷移學習在幾分鐘內訓練模型。發(fā)現(xiàn)50多個實用技巧,用以最Z大化模型準確度和速度、調試程序,以及將應用擴展到數(shù)百萬用戶規(guī)模。
前言
我們正在經(jīng)歷人工智能的復興,每一位及其身邊的人都想成為這個運動中的一分子,這很可能就是你瀏覽本書的原因,F(xiàn)在已經(jīng)有了很多關于深度學習的書,所以你可能會問我們一個非常合理的問題:為什么還編寫這本書?我們馬上就會談論這個問題。
自2013 年以來,在深度學習之旅中(在微軟、英偉達、亞馬遜和Square 等公司開發(fā)產(chǎn)品時),我們目睹了這一領域的巨大變化。不斷發(fā)展的研究成果是既定的事實,缺乏成熟的工具也是存在的現(xiàn)實情況。
在不斷成長并向社區(qū)學習的過程中,我們注意到在如何將研究轉化為面向日常用戶的最終產(chǎn)品的問題上缺乏明確的指導,畢竟,最終用戶是面向網(wǎng)絡瀏覽器、智能手機或邊緣設備的。這通常需要經(jīng)歷無數(shù)個小時的操作和實驗,廣泛搜索博客、GitHub 問題線程和堆棧溢出的解決答案,給提供應用程序包的作者發(fā)送電子郵件以獲取深奧的知識,以及偶爾的“啊哈!”瞬間。就連市面上的書都傾向于更多地關注理論或如何使用特定的工具。我們能從現(xiàn)有的書中學習到的最好的東西就是建立一個虛構的示例。
為了填補理論和實踐之間的空白,我們開始討論如何將人工智能從研究領域帶到最終用戶,并特別關注實際應用。討論的目的是展示激動人心的例子,以及基于不同層次的技能水平(從業(yè)余愛好者到Google 工程師)的復雜性,以及在生產(chǎn)實際中部署深度學習需要付出的努力。我們發(fā)現(xiàn)初學者和專家在這些討論中都發(fā)現(xiàn)了有用的價值。
隨著時間的推移,這個場景對初學者來說變得容易訪問,更多的工具也變得可用。像Fast.ai 和DeepLearning.ai 這樣優(yōu)秀的在線材料使得學習如何訓練人工智能模型比以往任何時候都要容易。利用TensorFlow 和PyTorch 等深度學習框架教授基礎知識的書籍也壟斷了市場。但即便如此,理論與生產(chǎn)實際之間的巨大鴻溝仍然沒有得到很大程度的解決。我們想縮小這個差距。因此,便有了你現(xiàn)在正在讀的這本書。
本書使用可用的語言以及能運行的計算機視覺有趣項目,假設讀者沒有機器學習和AI 的知識,從簡單的分類器開始,逐步拓展,包括如何增加復雜性、提高準確性和速度,如何擴展到數(shù)以百萬計的用戶,如何部署在各種各樣的硬件和軟件上,最終介紹了如何使用強化學習來構建一個微型自動駕駛汽車。
幾乎每一章都從一個激動人心的例子開始,通過建立一個解決方案的過程來建立前面提出的問題,并討論解決問題的多種方法,每個方法都有不同程度的復雜性和對應的努力。如果你正在尋找一個快速的解決方案,你可能最終只是讀了一章中的幾頁就完成了。如果有人想對主題有更深入的了解,就應該通讀整章。當然,每個人都應該仔細閱讀這些章節(jié)中包含的案例研究,原因有兩個,一是它們很有趣,二是它們展示了業(yè)內人士是如何使用本章中討論的概念來構建真正的產(chǎn)品。
我們還討論了深度學習從業(yè)者和行業(yè)專業(yè)人士在使用云、瀏覽器、移動設備和邊緣設備構建真實應用程序時面臨的許多實際問題。我們在這本書中匯編了一些實用的“技巧和訣竅”和生活課程,以鼓勵讀者構建可以使某人生活稍微好一點的應用程序。
致后端/ 前端/ 移動軟件開發(fā)人員
你很可能已經(jīng)是一個熟練的程序員了。即使Python 對你來說是一種陌生的語言,我們也希望你能夠很容易地掌握它,并很快開始使用它。最重要的是,我們不期望你有任何機器學習和人工智能的背景,這就是我們這本書的目的!我們相信,你將從本書關注的以下領域中獲得知識:
?? 如何構建面向用戶的人工智能產(chǎn)品。
?? 如何快速訓練模型。
?? 如何最小化原型設計所需的代碼和工作量。
?? 如何提高模型的性能和能效。
?? 如何操作和擴展,以及估計所涉及的成本。
?? 通過40 多個案例研究和現(xiàn)實世界的例子,發(fā)現(xiàn)人工智能在行業(yè)中是如何應用的。
?? 開發(fā)深度學習的廣譜知識。
?? 開發(fā)可應用于新的框架(如PyTorch)、新領域(例如,醫(yī)療保健、機器人)、新的輸入模式(例如,視頻,音頻、文本)和新的任務(例如,圖像分割、一次性學習)的通用技能集。
致數(shù)據(jù)科學家
你可能已經(jīng)精通機器學習,并且可能知道如何訓練深度學習模型。那么你可以進一步豐富你的技能并加深你在這個領域的知識,以便建立真正的產(chǎn)品。本書將有助于你的日常工作及更多,包括如何:
?? 加快你的訓練,包括在多節(jié)點集群上訓練。
?? 建立開發(fā)和調試模型的直覺,包括超參數(shù)調整,從而顯著提高模型準確度。
?? 了解模型的工作原理,發(fā)現(xiàn)數(shù)據(jù)中的偏差,并使用AutoML 自動確定最佳超參數(shù)和模型結構。
?? 學習其他數(shù)據(jù)科學家使用的技巧和訣竅,包括快速收集數(shù)據(jù)、有組織地跟蹤實驗、與全世界共享模型,為你的任務提供最新的可用模型。
?? 使用工具將最佳模型部署并擴展到實際用戶,甚至自動完成(不涉及一個DevOps 團隊)。
致學生
現(xiàn)在正是考慮從事人工智能事業(yè)的大好時機,事實證明,這將是繼互聯(lián)網(wǎng)和智能手機之后的下一次技術革命。已經(jīng)取得了許多進展,還有許多有待發(fā)現(xiàn)。我們希望本書能成為你培養(yǎng)人工智能事業(yè)興趣的第一步,甚至得到更深入的理論知識。最棒的是你不必花很多錢去買昂貴的硬件,事實上,你可以通過你的網(wǎng)絡瀏覽器(謝謝你,Google Colab 。┰趶姶蟮挠布贤耆赓M訓練。有了這本書,我們希望你能:
?? 通過開發(fā)有趣的項目組合,渴望在人工智能領域工作。
?? 通過行業(yè)實踐的學習幫助準備實習和得到工作機會。
?? 通過構建像自動駕駛汽車一樣有趣的應用,釋放你的創(chuàng)造力。
?? 利用你的創(chuàng)造力解決人類面臨的最緊迫問題,成為一名AI for Good 冠軍。
致老師
我們相信這本書可以很好地為你的課程補充有趣的、可用于現(xiàn)實世界的項目。我們已經(jīng)詳細介紹了深度學習流程的每一步,以及如何有效地執(zhí)行每一步的技術。我們在書中提出的每一個項目都有助于學生在整個學期的課堂上進行良好的合作或個人工作。最后,我們將在http://PracticalDeepLearning.ai 上發(fā)布PowerPoint 演示幻燈片,可以與課程作業(yè)結合。
致機器人愛好者
機器人技術令人興奮。如果你是一個機器人愛好者,我們確實不需要讓你相信給機器人增加智能是一條必經(jīng)之路。越來越強大的硬件平臺,如Raspberry Pi、NVIDIA Jetson Nano、Google Coral、Intel Movidius、PYNQ-Z2 等,正在幫助推動機器人領域的創(chuàng)新。隨著我們向工業(yè)4.0 發(fā)展,其中一些平臺將變得越來越相關和普遍。有了這本書,你將:
?? 學習如何構建和訓練人工智能,然后將其帶到邊緣設備。
?? 在性能、尺寸、功率、電池和成本方面對邊緣設備進行基準測試和比較。
?? 了解如何為給定的場景選擇最佳人工智能算法和設備。
?? 了解其他創(chuàng)客如何制造具有創(chuàng)造性的機器人和機器。
?? 學習如何在這一領域取得進一步進展,以及如何展示你的工作成果。
如果你遇到技術問題或在使用代碼示例時遇到問題,請發(fā)送電子郵件至PracticalDLBook@gmail.com。
本書可幫你完成工作。一般來說,你可以在你的程序和文檔中使用本書提供的示例代碼。你不需要聯(lián)系我們獲得許可,除非你正在重新編制該代碼的重要部分。例如,使用本書中的幾個代碼塊編寫程序不需要獲得許可,銷售或發(fā)行O’Reilly 圖書中的示例則需要獲得許可,通過引用本書和書中的示例代碼來回答問題不需要許可,將本書中的大量示例代碼用到你的產(chǎn)品文檔中則需要獲得許可。
我們欣賞但不強求加上對本書的引用。引用信息通常包括題目、作者、出版商和ISBN。例如:“Practical Deep Learning for Cloud, Mobile, and Edge by Anirudh Koul, Siddha Ganju, and Meher Kasam (O’Reilly). 版權所有:2020 Anirudh Koul,Siddha Ganju, Meher Kasam, 978-1-492-03486-5!
如果你認為在使用本書的代碼示例過程中超出了合理的使用范圍或上述許可范圍,請通過permissions@oreilly.com 發(fā)郵件與我們聯(lián)系。
O’Reilly 在線學習平臺(O’Reilly Online Learning)
近40 年來,O’Reilly Media 致力于提供技術和商業(yè)培訓、知識和卓越見解,來幫助眾多公司取得成功。
我們有一群獨家專家和創(chuàng)新者,他們通過圖書、文章、會議和在線學習平臺分享知識和技術。O’Reilly 的在線學習平臺提供按需訪問的直播培訓課程、詳細的學習路徑、交互式編程環(huán)境,以及由O’Reilly 和其他200 多家出版社出版的書籍和視頻。詳情請訪問http://oreilly.com。
聯(lián)系我們
任何有關本書的意見或疑問,請按照以下地址聯(lián)系出版社。
美國:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中國:
北京市西城區(qū)西直門南大街2 號成銘大廈C 座807 室(100035)
奧萊利技術咨詢(北京)有限公司
O’Reilly 在本書的網(wǎng)頁中列出了勘誤表、示例和任何附加信息。你可以在https://oreil.ly/practical-deep-learning 網(wǎng)站訪問此頁面。本書作者也提供了有關本書的一個網(wǎng)址:http://PracticalDeepLearning.ai。
發(fā)表評論或咨詢有關本書的技術問題,請發(fā)送電子郵件至bookquestions@oreilly.
com 郵箱。聯(lián)系本書的作者請發(fā)送電子郵件至PracticalDLBook@gmail.com。
關于我們的書籍、課程、會議和新聞的更多信息, 請參閱http://www.oreilly.com 網(wǎng)站。
我們的Facebook:http://facebook.com/oreilly。
我們的Twitter:http://twitter.com/oreillymedia。
我們的YouTube:http://www.youtube.com/oreillymedia。
致謝
群體致謝
我們要感謝以下人員在我們寫這本書的整個過程中給予的巨大幫助。沒有他們,這本書不可能順利出版。
開發(fā)編輯Nicole Taché 的努力使這本書變得更加生動。她在我們編寫的旅程中為我們扎根,并在每一段進程中提供重要的指導。她幫助我們優(yōu)先選擇合適的材料(信不信由你,這本書原本會更冗長。┐_保我們走上正軌。她是我們寫的每一個草稿的第一讀者,所以我們的首要目標是確保她能夠跟蹤內容,盡管她是人工智能方面的新手。我們非常感謝她的支持。
我們還要感謝O’Reilly 團隊的其他成員, 包括我們的制作編輯ChristopherFaucher,他在緊湊的日程安排下孜孜不倦地工作,以確保這本書能按時送去印刷。我們也感謝我們的文字編輯Bob Russell,他以閃電般的速度編輯和對細節(jié)的關注給我們留下了深刻的印象。他讓我們認識到在學校學習時就應注意英語語法的重要性(盡管恐怕晚了幾年)。我們還想感謝Rachel Roumeliotis(內容方面的副總裁)和Olivia MacDonald(開發(fā)總編輯)對該項目的信任以及他們持續(xù)的支持。
非常感謝我們的客座作者帶來了他們的技術專長,與我們的讀者分享他們對這個領域的熱情。Aditya Sharma 和Mitchell Spryn(來自微軟)向我們展示了如何將我們對視頻賽車游戲的熱愛用于訓練自動駕駛汽車,這可通過在模擬環(huán)境(有AirSim)中實現(xiàn)。Sunil Mallya(來自亞馬遜)通過演示一個小時就可以組裝一輛微型自動汽車(AWS DeepRacer),并使用強化學習在賽道上導航,從而將這一知識帶到了現(xiàn)實世界中。Sam Sterckval(來自Edgise)總結了市場上各種各樣的嵌入式人工智能硬件,因此我們可以在下一個機器人項目上取得進展。最后,Zaid Alyafeai(來自King Fahd University)展示了瀏覽器同樣能夠運行嚴肅的交互式人工智能模型(借助TensorFlow.js 和ml5.js)。
這本書之所以成為現(xiàn)在的狀態(tài),是因為我們優(yōu)秀的技術評論員及時提供了反饋,他們不辭辛勞地檢查我們的草稿,指出了他們遇到的所有技術錯誤,并就如何更好地傳達我們的想法給了建議。由于他們的反饋(以及不斷變化的TensorFlow 的API),我們在最初的預發(fā)布版本上重寫了本書的大部分內容。我們感謝MargaretMaynard Reid(谷歌機器學習開發(fā)專家,你可能在閱讀TensorFlow 文檔時閱讀了她的工作)、Paco Nathan(Derwin Inc.35 歲以上的行業(yè)資深人士,他將Anirudh 介紹給了公眾演講界),Andy Petrella(Kensu 的首席執(zhí)行官和創(chuàng)始人,SparkNotebook的創(chuàng)建者,他的技術見解與他的聲譽相符)和Nikhita Koul(Adobe 的高級數(shù)據(jù)科學家,在每次更新后都會閱讀并提出改進建議,有效地閱讀了幾千頁,從而使內容更易懂),感謝他們詳細評閱了每章內容。此外,我們還得到了很多專家的幫助,他們在特定的主題上有專長,如瀏覽器中的人工智能、移動端開發(fā)或自動駕駛汽車。
按章節(jié)順序排列的評閱人員名單如下:
?? 第1 章:Dharini Chandrasekaran,Sherin Thomas。
?? 第2 章:Anuj Sharma,Charles Kozierok,Manoj Parihar,Pankesh Bamotra,Pranav Kant。
?? 第3 章:Anuj Sharma,Charles Kozierok,Manoj Parihar,Pankesh Bamotra,Pranav Kant。
?? 第4 章:Anuj Sharma,Manoj Parihar,Pankesh Bamotra,Pranav Kant。
?? 第6 章:Gabriel Ibagon,Jiri Simsa,Max Katz,Pankesh Bamotra。
?? 第7 章:Pankesh Bamotra。
?? 第8 章:Deepesh Aggarwal。
?? 第9 章:Pankesh Bamotra。
?? 第10 章:Brett Burley,Laurent Denoue,Manraj Singh。
?? 第11 章:David Apgar,James Webb。
?? 第12 章:David Apgar。
?? 第13 章:Jesse Wilson,Salman Gadit。
?? 第14 章:Akshit Arora,Pranav Kant,Rohit Taneja,Ronay Ak。
?? 第15 章:Geertrui Van Lommel,Joke Decubber,Jolien De Cock,Marianne VanLommel,Sam Hendrickx。
?? 第16 章:Dario Salischiker,Kurt Niebuhr,Matthew Chan,Praveen Palanisamy。
?? 第17 章:Kirtesh Garg,Larry Pizette,Pierre Dumas,Ricardo Sueiras,
Segolene Dessertine-panhard,Sri Elaprolu,Tatsuya Arai。
我們在整本書中都有一些簡短的節(jié)選,這些節(jié)選來自創(chuàng)作者,他們讓我們窺視了一下他們的世界,以及他們是如何以及為什么構建他們最為知名項目的。我們感謝Francois Chollet, Jeremy Howard, Pete Warden, Anima Anandkumar, Chris Anderson,Shanqing Cai, Daniel Smilkov, Cristobal Valenzuela,Daniel Shiffman, Hart Woolery,Dan Abdinoor, Chitoku Yato, John Welsh 以及Danny Atsmon。
個人致謝
“我要感謝我的家人Arbind,Saroj 和Nikhita,他們給了我支持、資源、時間和自由讓我去追求我的激情。在把想法轉化為產(chǎn)品原型的過程中,對于與我站在一起的微軟、Aira 和Yahoo 的所有技術人員和研究人員來說,在我們一起的旅程中,讓我們收獲最多的不是成功,而是一些小問題。我們經(jīng)歷的考驗和磨難為這本書提供了值得稱贊的素材,足足超過我們最初估計的250 頁!對于我在卡內基梅隆大學、達爾豪西大學和塔帕大學的學術家庭來說,你們教給我的不僅僅是學術(不像我的GPA 可能建議的那樣)。對于盲人和弱視力群體,你們每天都激勵我在人工智能領域工作,并證明只要有正確的工具,人類能力確實是無限的!
—— Anirudh
“我的祖父,是一位作家,他曾經(jīng)告訴我,‘寫一本書比我想象的要難,比我想象的要有回報! 我永遠感謝我的祖父和家人,媽媽,爸爸,還有Shriya,他們支持我求知,幫助我成為今天的我。感謝來自卡內基梅隆大學、歐洲核子研究中心、美國宇航局FDL、Deep Vision、NITH 和NVIDIA 的優(yōu)秀合作者和導師,他們在我的整個寫作旅程中一直陪伴著我,感謝他們的教導和幫助培養(yǎng)了我的科學氣質。對于我的朋友們,我希望他們還記得我,因為我最近一直很隱形,我非常感謝他們的耐心。我希望到處都能見到你們。對于無私翻閱了本書章節(jié)并充當了決策咨詢人的我的朋友們,非常感謝!如果沒有你們,這本書將不會成形!
—— Siddha
“我感謝我的父母Rajagopal 和Lakshmi,感謝他們從一開始就給予我無盡的愛和支持,感謝他們?yōu)槲姨峁┟篮蒙詈徒逃膱詮娨庵。我很感謝UF和VNIT 的教授,他們教授給我很多,讓我很高興主修了計算機科學。我很感謝我的合作伙伴Julia Tanner,令我難以置信地支持我!她在近兩年的時間里,不得不忍受晚上和周末我與合著者沒完沒了的Skype 通話,以及我的幾個可怕的笑話(其中一些不幸地登上了這本書)。我還要感謝我出色的經(jīng)理Joel Kustka 在本書寫作過程中對我的支持。我公開表示感謝我的朋友們,當我不能像他們希望的那樣經(jīng)常和他們在一起時,他們非常理解我。”
—— Meher
最后但同樣重要的是,感謝Grammarly 的創(chuàng)造者們,他們讓英語成績平平的人成為出版作者!
Anirudh Koul是Al for Good的先驅,同時也是UN和TEDx的發(fā)言人,還是微軟人工智能與研究中心的資深科學家,他在那里創(chuàng)立了Seeing Al,這是繼iPhone之后盲人社區(qū)最常用的技術。
Siddha Ganju是NVIDIA的自動駕駛設計師。她曾入選福布斯2019年“30位30歲以下商業(yè)領袖”的排行榜。此前,她在Deep Vision為資源受限的邊緣設備開發(fā)了深度學習模型。
Meher Kasam是一位經(jīng)驗豐富的軟件開發(fā)人員,所開發(fā)的應用程序每天都有上千萬用戶使用。他為Square和微軟的一系列應用提供了功能,從Square的銷售點(POS)APP到微軟必應(Bing)APP。
目錄
前言 1
第1 章 探索人工智能前景 15
致歉 16
真正的介紹 17
什么是人工智能? 17
人工智能簡史 20
激動人心的開始 21
寒冷黑暗的日子 22
一線希望 23
深度學習是如何興盛的 26
完美深度學習解決方案的組成要素 29
數(shù)據(jù)集 30
模型結構 32
框架 35
硬件 38
負責任的人工智能 41
偏差 43
責任和可解釋性 45
再現(xiàn)性 46
穩(wěn)健性 46
隱私 47
總結 47
常見問題 48
第2 章 圖片中有什么:用Keras 實現(xiàn)圖像分類 51
Keras 簡介 52
預測圖像類別 53
調查模型 58
ImageNet 數(shù)據(jù)集 58
模型園 61
類激活圖 62
總結 65
第3 章 貓與狗:用Keras 在30 行代碼中實現(xiàn)
遷移學習 66
使預先訓練的模型適應新任務 67
卷積神經(jīng)網(wǎng)絡初探 68
遷移學習 70
微調 71
微調多少 72
利用遷移學習和Keras 構建一個定制的分類器 73
組織數(shù)據(jù) 74
建立數(shù)據(jù)管道 76
類別數(shù) 77
批量大小 78
數(shù)據(jù)擴充 78
定義模型 82
訓練模型 82
設置訓練參數(shù) 82
開始訓練 84
測試模型 85
分析結果 86
進一步閱讀 93
總結 93
第4 章 構建反向圖像搜索引擎:理解嵌入 95
圖像相似性 96
特征提取 99
相似性搜索 102
用t-SNE 可視化圖像簇 106
提高相似性搜索的速度 110
特征向量長度 110
基于PCA 減少特征長度 112
基于近似最近鄰方法擴展相似搜索 116
近似最近鄰基準 117
應該用哪個庫? 117
創(chuàng)建合成數(shù)據(jù)集 119
蠻力搜索 119
Annoy 119
NGT 120
Faiss 121
通過微調提高精度 121
用于一次人臉驗證的孿生網(wǎng)絡 126
案例研究 127
Flickr 127
Pinterest 128
與名人面貌相似者 129
Spotify 130
圖像描述 131
總結 133
第5 章 從初學者到掌握預測:最大化卷積神經(jīng)網(wǎng)絡的
精度 134
工具介紹 135
TensorFlow Datasets 136
TensorBoard 137
What-If 工具 140