PyTorch神經(jīng)網(wǎng)絡(luò)實(shí)戰(zhàn):移動端圖像處理主要介紹人工智能研究領(lǐng)域中神經(jīng)網(wǎng)絡(luò)的PyTorch架構(gòu),對其在多個領(lǐng)域的應(yīng)用進(jìn)行系統(tǒng)性的歸納和梳理。書中的案例有風(fēng)景圖分類、人像前景背景分割、低光照圖像增法、動漫頭像生成、畫風(fēng)遷移、風(fēng)格轉(zhuǎn)換等,對每項(xiàng)視覺任務(wù)的研究背景、應(yīng)用價值、算法原理、代碼實(shí)現(xiàn)和移動端部署流程進(jìn)行了詳細(xì)描述,并提供相應(yīng)的源碼,適合讀者從0到1構(gòu)建移動端智能應(yīng)用。
PyTorch神經(jīng)網(wǎng)絡(luò)實(shí)戰(zhàn):移動端圖像處理適合對人工智能實(shí)際應(yīng)用感興趣的本科生、研究生、深度學(xué)習(xí)算法工程師、計算機(jī)視覺從業(yè)人員和人工智能愛好者閱讀,書中介紹的各項(xiàng)視覺任務(wù)均含有相應(yīng)的安卓平臺部署案例,不僅對學(xué)生參加比賽、課程設(shè)計具有參考意義,對相關(guān)從業(yè)人員的軟件架構(gòu)和研發(fā)也具有啟發(fā)價值。
◆ 前言:◆
蒸汽機(jī)、電動機(jī)和計算機(jī)的發(fā)明與應(yīng)用極大地推動了人類文明的發(fā)展。現(xiàn)在,一項(xiàng)新的技術(shù)浪潮正在掀起——人工智能(Artificial Intelligence)。
在人工智能領(lǐng)域包含的諸多技術(shù)中,深度學(xué)習(xí)是當(dāng)前最受矚目的技術(shù)之一。自2012年AlexNet模型在ImageNet分類任務(wù)上獲得驚人的準(zhǔn)確率開始,深度學(xué)習(xí)技術(shù)就被廣泛應(yīng)用于多項(xiàng)計算機(jī)科學(xué)研究任務(wù)之中,包括計算機(jī)視覺、自然語言處理及強(qiáng)化學(xué)習(xí)等。
學(xué)術(shù)界和工業(yè)界的前沿深度學(xué)習(xí)模型通常依賴海量的數(shù)據(jù)和強(qiáng)大的計算設(shè)備來設(shè)計出高質(zhì)量的應(yīng)用模型。然而對于普通開發(fā)者的入門學(xué)習(xí),通常只需要一臺計算機(jī)就能動手編寫眾多的深度學(xué)習(xí)算法,并訓(xùn)練出可用的模型。
深度學(xué)習(xí)技術(shù)具有如此強(qiáng)大的魅力,開發(fā)者要如何開展具體的學(xué)習(xí)、研究與應(yīng)用呢?這時就需要一款高質(zhì)量的輔助工具來完成算法的設(shè)計、實(shí)現(xiàn)、訓(xùn)練與部署了,這款工具就是本書將要介紹的深度學(xué)習(xí)框架——PyTorch。
本書將帶領(lǐng)讀者實(shí)現(xiàn)多種有趣的AI算法,比如風(fēng)景圖分類、人像前景背景分割、低光照圖像增強(qiáng)、動漫頭像生成、畫風(fēng)遷移、風(fēng)格轉(zhuǎn)換等。不僅如此,書中還提供了移動端的應(yīng)用案例,手把手地教讀者如何將模型部署到Android手機(jī)上。
本書適合的讀者
本書面向的讀者群體主要包括:
1)人工智能相關(guān)專業(yè)的高校師生。
2)從事軟件開發(fā)、數(shù)據(jù)庫設(shè)計、編譯器設(shè)計、自然語言處理、計算機(jī)視覺等領(lǐng)域工作的技術(shù)人員。
當(dāng)然,即使讀者并非上述群體,只要具有強(qiáng)烈的興趣和學(xué)習(xí)意愿,仍然能夠充分地學(xué)習(xí)并利用本書所講的知識內(nèi)容,成為人工智能研究領(lǐng)域中的一員。
如何使用本書
在編寫此書前,筆者對網(wǎng)絡(luò)上大量的深度學(xué)習(xí)入門資料進(jìn)行了梳理總結(jié),發(fā)現(xiàn)它們大都存在以下三個問題。
1)所介紹的任務(wù)同質(zhì)化嚴(yán)重,都集中于手寫字識別等簡單場景,難以引起初學(xué)者的興趣。因此本書精選了眾多具有實(shí)際價值的場景任務(wù),由淺入深地進(jìn)行編排,方便讀者學(xué)習(xí)。
2)由于深度學(xué)習(xí)框架在前幾年發(fā)展太過迅速,眾多早期資料已經(jīng)因?yàn)锳PI不兼容而無法運(yùn)行,這非?简(yàn)初學(xué)者的代碼調(diào)試能力。而現(xiàn)階段深度學(xué)習(xí)框架已經(jīng)基本穩(wěn)定,API的兼容性也能得到很好的保證。本書準(zhǔn)備了大量代碼,它們都適合最新版本的框架,很大程度地規(guī)避了不兼容問題。
3)目前雖然有較多優(yōu)質(zhì)的開源代碼,甚至已經(jīng)成功地應(yīng)用于實(shí)際商業(yè)場景。但這些開源代碼并不適合初學(xué)者學(xué)習(xí),它們往往出于工程角度設(shè)計,封裝得過于復(fù)雜,初學(xué)者難以在短時間內(nèi)厘清關(guān)系,容易把精力浪費(fèi)在非核心的邏輯上。而本書針對每個任務(wù)給出了最為核心的代碼,降低了學(xué)習(xí)成本,使讀者能夠?qū)W⒃谥匾膬?nèi)容上。
學(xué)習(xí)本書最好的方式是理論結(jié)合實(shí)踐,不僅要掌握書中的各類知識點(diǎn),還要能夠獨(dú)立編寫出對應(yīng)的代碼。本書涉及大量的PyTorch基礎(chǔ)知識和常用代碼,建議讀者按照書中的例子動手敲出這些代碼。
本書的代碼托管在GitHub倉庫中,讀者可以下載本書所有源碼。此外,本書的代碼倉庫將會不斷更新,希望讀者能夠在GitHub平臺上提出意見或者建議,倉庫地址為https://github.com/cwpeng-cn/PyTorch-neural-network-practice。
本書主要內(nèi)容
本書共9章,鑒于本書前后各章具有一定的關(guān)聯(lián),希望讀者能夠按照章節(jié)順序進(jìn)行閱讀,以達(dá)到最佳的學(xué)習(xí)效果。各章主要內(nèi)容如下。
第1章介紹了人工智能的研究起源與發(fā)展歷程,并指出了人工智能與深度學(xué)習(xí)之間的關(guān)系。同時講解了深度學(xué)習(xí)的入門知識,以及神經(jīng)網(wǎng)絡(luò)的基本原理與概念。
第2章對PyTorch的基礎(chǔ)知識和使用方法進(jìn)行了歸納和梳理。如果讀者在閱讀本書之前不具備深度學(xué)習(xí)框架的使用經(jīng)驗(yàn),或者所用的不是PyTorch框架,建議仔細(xì)閱讀并實(shí)現(xiàn)本章的示例。
第3章包含了Android Studio開發(fā)基礎(chǔ)和PyTorch移動端部署兩方面內(nèi)容,第4~9章的部署案例都能夠通過本章的代碼邏輯完成。
第4章講解了圖像分類網(wǎng)絡(luò),以及適合在移動端部署的輕量級分類模型,并向讀者展示了如何構(gòu)建一個風(fēng)景圖歸檔器。
第5章以人像的前景和背景分割為例,介紹了圖像分割任務(wù)的研究目標(biāo)和經(jīng)典算法,閱讀本章后讀者可以學(xué)會制作一款簡易的智能摳圖工具。
第6章針對黃昏和傍晚時拍照所獲圖像亮度較低的問題,介紹了低光照圖像增強(qiáng)算法,并設(shè)計了一款低光照圖像增強(qiáng)應(yīng)用。
第7章的案例是動漫人臉生成,使用了基于生成對抗網(wǎng)絡(luò)的圖像生成技術(shù)。如果讀者能夠搜集真實(shí)人臉的數(shù)據(jù),或者其他類型的具有明顯類別特征的數(shù)據(jù),也可以擴(kuò)展為其他圖像的生成應(yīng)用。
第8章講述了圖像風(fēng)格遷移任務(wù),即用戶可以將某種風(fēng)格的圖像改為其他風(fēng)格。
第9章可以看作是第8章知識的擴(kuò)展,從圖像風(fēng)格轉(zhuǎn)換的角度設(shè)計并實(shí)現(xiàn)了蘋果風(fēng)格和橘子風(fēng)格互相轉(zhuǎn)換的應(yīng)用,背后的技術(shù)是學(xué)術(shù)界公認(rèn)為經(jīng)典的循環(huán)一致性對抗網(wǎng)絡(luò)。
致謝
本書介紹了人工智能、深度學(xué)習(xí)、PyTorch框架、Android開發(fā)等理論與實(shí)踐知識,這些知識是各領(lǐng)域科研人員和軟件工程師共同創(chuàng)造的,感謝你們的辛苦付出。
在本書的寫作過程中,機(jī)械工業(yè)出版社的編輯團(tuán)隊(duì)提出了眾多有價值的建議和意見,他們的豐富經(jīng)驗(yàn)與耐心指導(dǎo)是本書能夠順利完成的重要基礎(chǔ)。