PyTorch自動(dòng)駕駛視覺感知算法實(shí)戰(zhàn) 劉斯坦
定 價(jià):¥119
中 教 價(jià):¥71.40 (6.00折)
庫(kù) 存 數(shù): 17
叢 書 名:計(jì)算機(jī)前沿技術(shù)叢書
《PyTorch自動(dòng)駕駛視覺感知算法實(shí)戰(zhàn)》全面介紹了自動(dòng)駕駛系統(tǒng)中深度學(xué)習(xí)視覺感知的相關(guān)知識(shí),包括深度神經(jīng)網(wǎng)絡(luò)和深度卷積神經(jīng)網(wǎng)絡(luò)的基本理論,深入講解了自動(dòng)駕駛中常用的目標(biāo)檢測(cè)、語(yǔ)義、實(shí)例分割和單目深度估計(jì)四種視覺感知任務(wù)。《PyTorch自動(dòng)駕駛視覺感知算法實(shí)戰(zhàn)》對(duì)自動(dòng)駕駛工程實(shí)踐中很重要但經(jīng)常被忽略的知識(shí)進(jìn)行了全面總結(jié),包括多任務(wù)模型的損失平衡、Ubuntu操作系統(tǒng)、Anaconda和Docker等環(huán)境配置工具、C 開發(fā)環(huán)境搭建、神經(jīng)網(wǎng)絡(luò)壓縮、模型導(dǎo)出和量化、TensorRT推理引擎等和部署相關(guān)的技術(shù)。《PyTorch自動(dòng)駕駛視覺感知算法實(shí)戰(zhàn)》各個(gè)任務(wù)都由PyTorch實(shí)現(xiàn),模型部署的代碼則提供C 實(shí)現(xiàn),并附帶一個(gè)中等規(guī)模的自動(dòng)駕駛數(shù)據(jù)集用于示例。所有代碼都公開在Github公開源碼倉(cāng)庫(kù)上,很多代碼可以直接用于生產(chǎn)環(huán)境,且提供了商業(yè)友好的代碼許可證。《PyTorch自動(dòng)駕駛視覺感知算法實(shí)戰(zhàn)》適用于具備基本機(jī)器學(xué)習(xí)知識(shí),有志于從事自動(dòng)駕駛算法工作的學(xué)生,也適用于剛邁入職場(chǎng),面對(duì)各種陌生技術(shù)無(wú)所適從的初級(jí)工程師。同時(shí),本書也可供中高級(jí)算法工程師作為案頭常備書籍,以便查閱。
《PyTorch自動(dòng)駕駛視覺感知算法實(shí)戰(zhàn)》融合了資深開發(fā)工程師多年一線工作經(jīng)驗(yàn),對(duì)自動(dòng)駕駛涉及的主要視覺任務(wù)進(jìn)行了深入講解;對(duì)自動(dòng)駕駛工程實(shí)踐中很重要,但經(jīng)常被忽略的知識(shí)進(jìn)行了全面總結(jié);附帶一個(gè)中等規(guī)模的自動(dòng)駕駛數(shù)據(jù)集便于讀者上手實(shí)踐。內(nèi)容循序漸進(jìn)、由淺入深,詳盡的代碼、圖文講解。書中操作部分配有二維碼視頻,使讀者身臨其境,迅速、深入地掌握各種經(jīng)驗(yàn)和技巧。
2012年,多倫多大學(xué)Geoffrey Hinton教授指導(dǎo)的學(xué)生Alex Krizhevsky發(fā)表了AlexNet深度卷積神經(jīng)網(wǎng)絡(luò)模型,在ImageNet圖像識(shí)別任務(wù)上大幅超越第二名,開啟了深度學(xué)習(xí)的新紀(jì)元。同年,筆者于慕尼黑工業(yè)大學(xué)畢業(yè),彼時(shí),筆者選修了Daniel Cremers教授開設(shè)的多門課程,醉心于學(xué)習(xí)凸優(yōu)化、微分幾何等經(jīng)典計(jì)算機(jī)視覺的理論知識(shí),對(duì)卷積神經(jīng)網(wǎng)絡(luò)一無(wú)所知,絲毫感覺不到一個(gè)人工智能的偉大時(shí)代就此揭開帷幕。25年前,也是在慕尼黑工業(yè)大學(xué)計(jì)算機(jī)系,Jrgen Schmidhuber教授指導(dǎo)的學(xué)生Sepp Hochreiter發(fā)表了論文LSTM(Long Short-Term Memory),他們也決然無(wú)法預(yù)料,被SVM等機(jī)器學(xué)習(xí)方法打敗的仿生人工智能,居然會(huì)在幾十年后忽然起死回生,迎來(lái)爆發(fā)式發(fā)展。從2012年AlexNet的發(fā)表到今天,不過10年有余,卷積神經(jīng)網(wǎng)絡(luò)和相關(guān)硬件的發(fā)展可謂一日千里。筆者在自動(dòng)駕駛視覺感知領(lǐng)域從業(yè)五年,深感這個(gè)領(lǐng)域教育資源的發(fā)展遠(yuǎn)遠(yuǎn)跟不上學(xué)術(shù)界和工業(yè)界的發(fā)展。該領(lǐng)域涉及的知識(shí)龐雜,既廣又深:知識(shí)廣度方面,從最優(yōu)化理論,常用模型的特點(diǎn),到使用C 編寫高性能、高可靠性的程序和對(duì)各種神經(jīng)網(wǎng)絡(luò)加速芯片的了解,都屬于自動(dòng)駕駛感知算法工程師技術(shù)棧的覆蓋范圍;知識(shí)深度方面,工程師要對(duì)卷積神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)理論有足夠深入的理解,而不應(yīng)止步于調(diào)參的范圍。也就是說(shuō),一個(gè)自動(dòng)駕駛算法工程師,不但要有深厚的數(shù)學(xué)基礎(chǔ),掌握凸優(yōu)化和統(tǒng)計(jì)學(xué),還要熟悉高性能嵌入式軟件的編寫,這是一個(gè)橫跨學(xué)術(shù)界和工業(yè)界的多面手職業(yè)。尤其是自動(dòng)駕駛行業(yè)一日千里,很多工程師只能在工作中邊干邊學(xué),一路走來(lái)可謂磕磕絆絆,如果能有一本書全面覆蓋自動(dòng)駕駛感知算法工程師的能力圈,那職業(yè)之路走起來(lái)就會(huì)順暢很多。筆者就是出于這個(gè)目的,根據(jù)自己的職業(yè)經(jīng)驗(yàn)和理論知識(shí),編寫了本書。本書特點(diǎn)考慮到上文提及的自動(dòng)駕駛感知算法工程師的種種職業(yè)特點(diǎn),本書的內(nèi)容將會(huì)兼顧計(jì)算機(jī)視覺學(xué)術(shù)界的最新研究成果和自動(dòng)駕駛的工程實(shí)踐。兼顧細(xì)節(jié)與理論深度學(xué)習(xí)的很多算法用公式或語(yǔ)言來(lái)描述會(huì)困難重重,用示意圖來(lái)表現(xiàn)則是一目了然。對(duì)算法和模型的細(xì)節(jié),筆者繪制了大量的三維示意圖進(jìn)行講解,爭(zhēng)取讓讀者一看就懂。但光有細(xì)節(jié)是不夠的,深度學(xué)習(xí)算法工程師常被取笑為調(diào)參俠煉丹師。這是因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)被認(rèn)為是一個(gè)巨大的黑盒(Black Box),其運(yùn)作規(guī)律難以為人類所理解。誠(chéng)然,深度學(xué)習(xí)的理論仍在構(gòu)建之中,尚不完善,但學(xué)術(shù)界從未停止過對(duì)深度學(xué)習(xí)的理解。已經(jīng)有大量學(xué)術(shù)成果能加深人們對(duì)卷積神經(jīng)網(wǎng)絡(luò)各種現(xiàn)象的理解,本書將吸收這些成果對(duì)神經(jīng)網(wǎng)絡(luò)的運(yùn)作進(jìn)行解釋。例如,ResNet的有效性,除了原論文中的解釋,還有其他學(xué)者也對(duì)其進(jìn)行了研究,產(chǎn)生了新的理解,這些研究也被納入到本書中來(lái)。總之,筆者爭(zhēng)取讓讀者知其然,也知其所以然,超越調(diào)參俠的職業(yè)定位。注重動(dòng)手實(shí)踐本書除了對(duì)理論進(jìn)行深入淺出的講解,也注重將理論落到實(shí)處。深度學(xué)習(xí)一個(gè)很大的特點(diǎn)是一看就懂,一做就懵。理論很熟悉了,但實(shí)際操作起來(lái)會(huì)遇到各種各樣的小問題。這是因?yàn)樗惴üこ處煈?yīng)能將數(shù)學(xué)符號(hào)和代碼中的數(shù)據(jù)結(jié)構(gòu)連接起來(lái),這是這個(gè)職業(yè)所需要的獨(dú)特能力。本書對(duì)重要的模型細(xì)節(jié)都展示了代碼示例,對(duì)代碼中各個(gè)張量的維度,各維度的含義都有詳細(xì)的注釋和講解。對(duì)于復(fù)雜的模型,筆者直接在公式下方展示代碼,盡量做到讓讀者從公式中的符號(hào)輕松地落實(shí)到代碼中的變量中。提供迷你數(shù)據(jù)集自動(dòng)駕駛視覺感知任務(wù)的另一個(gè)特點(diǎn)是任務(wù)多而雜,每個(gè)任務(wù)往往都有一些通用的數(shù)據(jù)集。例如,深度估計(jì)有KITTI數(shù)據(jù)集,語(yǔ)義分割有Cityscape,目標(biāo)檢測(cè)有nuScenes等。學(xué)習(xí)的時(shí)候往往會(huì)遇到的一個(gè)問題是每一個(gè)任務(wù)都要下載一個(gè)巨大無(wú)比的數(shù)據(jù)集,并專門寫接口。如果要進(jìn)行多任務(wù)訓(xùn)練,往往需要nuScenes等巨型數(shù)據(jù)集,而且標(biāo)注還不全面。如果只用于學(xué)習(xí)的目的,雜亂而龐大的數(shù)據(jù)集無(wú)疑大大增加了學(xué)習(xí)的時(shí)間和經(jīng)濟(jì)成本。為此筆者特意自制了一個(gè)方便學(xué)習(xí)的迷你數(shù)據(jù)集。數(shù)據(jù)集采集于德國(guó)慕尼黑一片安靜的城區(qū),場(chǎng)景類似于KITTI,僅包含7000多幀圖像。筆者使用當(dāng)時(shí)精度最高的目標(biāo)檢測(cè)和語(yǔ)義分割網(wǎng)絡(luò)對(duì)這個(gè)迷你數(shù)據(jù)集進(jìn)行標(biāo)注,并逐幀對(duì)標(biāo)注的偽真值進(jìn)行后期處理,盡量獲得高質(zhì)量的標(biāo)注數(shù)據(jù)。數(shù)據(jù)集是一個(gè)連續(xù)的視頻,筆者還對(duì)相機(jī)進(jìn)行了標(biāo)定,故可以用于無(wú)監(jiān)督深度估計(jì)任務(wù)。強(qiáng)調(diào)模型部署落地正如上文所說(shuō),要成為一個(gè)優(yōu)秀的算法工程師,其工作內(nèi)容不僅是調(diào)參那么簡(jiǎn)單,另一塊重要的工作內(nèi)容就是將模型部署到生產(chǎn)環(huán)境。對(duì)于互聯(lián)網(wǎng)行業(yè)的算法工程師來(lái)說(shuō),模型部署可能相對(duì)簡(jiǎn)單,有成熟的工具鏈支持,但自動(dòng)駕駛的模型部署就復(fù)雜得多了。首先自動(dòng)駕駛系統(tǒng)運(yùn)行的硬件平臺(tái)往往不是常見的x86平臺(tái),自動(dòng)駕駛系統(tǒng)的模型部署,其實(shí)已經(jīng)屬于嵌入式軟件開發(fā)了。其次,自動(dòng)駕駛系統(tǒng)實(shí)時(shí)性高,吞吐率需要達(dá)到10FPS(Frame-Per-Second)或更高,同時(shí)需要運(yùn)行的神經(jīng)網(wǎng)絡(luò)模型很多,而硬件平臺(tái)上的神經(jīng)網(wǎng)絡(luò)加速器往往算力有限。因此,為了將神經(jīng)網(wǎng)絡(luò)模型部署到算力有限的硬件平臺(tái),并達(dá)到實(shí)時(shí)性要求,需要結(jié)合硬件的特點(diǎn)對(duì)模型進(jìn)行設(shè)計(jì)和壓縮。模型的部署涉及模型壓縮、模型導(dǎo)出、Nvidia芯片的模型量化和模型推理、C 的開發(fā)等知識(shí),都是深度學(xué)習(xí)課堂上不會(huì)涉及的工程實(shí)踐內(nèi)容。這些工程實(shí)踐知識(shí)是非常重要的,但超出了很多長(zhǎng)期在Ubuntu和Python開發(fā)環(huán)境下的讀者的舒適區(qū)。本書將全面覆蓋相關(guān)知識(shí),幫助讀者更輕松地?cái)U(kuò)大自己的舒適區(qū),為將來(lái)的工作做好準(zhǔn)備。 本書內(nèi)容第1章講解卷積神經(jīng)網(wǎng)絡(luò)的理論基礎(chǔ),用簡(jiǎn)潔的篇幅介紹了神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)。包括反向傳播的推導(dǎo)、神經(jīng)網(wǎng)絡(luò)的各種網(wǎng)絡(luò)層、常用的損失函數(shù)、正則化、優(yōu)化器和學(xué)習(xí)率調(diào)整方法等。第2章介紹深度學(xué)習(xí)開發(fā)的常用工具,從顯卡和操作系統(tǒng)的概念,到Python開發(fā)中用到的常用工具。例如,pip包管理器、Anaconda虛擬環(huán)境以及NumPy和OpenCV 兩個(gè)常用的庫(kù)。最后配合示例代碼著重講解PyTorch的使用,示例代碼將實(shí)現(xiàn)一個(gè)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)并進(jìn)行訓(xùn)練。第3章講解卷積神經(jīng)網(wǎng)絡(luò)中主干網(wǎng)絡(luò)的概念。本章首先介紹主干網(wǎng)絡(luò)在卷積神經(jīng)網(wǎng)絡(luò)中的位置和作用,以及對(duì)比學(xué)習(xí)等主干網(wǎng)絡(luò)預(yù)訓(xùn)練技術(shù)。之后會(huì)對(duì)最常用的幾種主干網(wǎng)絡(luò)的特點(diǎn)和使用場(chǎng)景進(jìn)行講解。最后通過示例代碼展示如何加載TorchVision中的主干網(wǎng)絡(luò)模型。第4章介紹自動(dòng)駕駛系統(tǒng)中最經(jīng)典的一個(gè)任務(wù)目標(biāo)檢測(cè)。本章首先講解目標(biāo)檢測(cè)算法中的幾個(gè)基本概念,如錨框、極大值抑制、一階段和兩階段算法等。隨后以FasterRCNN為例介紹兩階段網(wǎng)絡(luò),以Yolo為例講解一階段網(wǎng)絡(luò),以CenterNet為例講解無(wú)錨框網(wǎng)絡(luò)。最后講解Yolo的PyTorch示例代碼。第5章聚焦于自動(dòng)駕駛系統(tǒng)中和圖像分割有關(guān)的兩個(gè)任務(wù):語(yǔ)義分割和實(shí)例分割。本章講解語(yǔ)義分割的網(wǎng)絡(luò)結(jié)構(gòu)、損失函數(shù)、常用精度指標(biāo)等基礎(chǔ)知識(shí)。也會(huì)涉及實(shí)際工作中需要解決的問題,尤其會(huì)介紹語(yǔ)義分割模型的幾種信息融合方法和設(shè)計(jì)思路。本章5.3節(jié)介紹三個(gè)實(shí)例分割算法,特別是會(huì)介紹一種半監(jiān)督的實(shí)例分割算法。最后介紹計(jì)算機(jī)視覺領(lǐng)域最常用的框架OpenMMLab的系統(tǒng)結(jié)構(gòu)和使用方法。第6章的內(nèi)容是近幾年來(lái)新出現(xiàn)的自動(dòng)駕駛感知任務(wù)單目深度估計(jì)。本章首先介紹多視圖三維幾何理論,然后講解單目深度估計(jì)的無(wú)監(jiān)督訓(xùn)練方法,最后結(jié)合實(shí)際工作中會(huì)遇到的若干難點(diǎn)提出一些解決方案。第7章分為兩部分,第一部分介紹多任務(wù)網(wǎng)絡(luò)的結(jié)構(gòu)和設(shè)計(jì)思路,著重介紹多任務(wù)網(wǎng)絡(luò)訓(xùn)練時(shí)的損失平衡問題及其基于不確定度的損失平衡方案;第二部分介紹神經(jīng)網(wǎng)絡(luò)的壓縮,以通道剪枝為例介紹L1正則化增加網(wǎng)絡(luò)稀疏度和可微通道剪枝的網(wǎng)絡(luò)壓縮方法。最后通過示例代碼講解如何用PyTorch實(shí)現(xiàn)網(wǎng)絡(luò)壓縮。第8章講解神經(jīng)網(wǎng)絡(luò)模型的部署,包括C 開發(fā)環(huán)境的搭建,LibTorch和TensorRT這兩個(gè)神經(jīng)網(wǎng)絡(luò)推理庫(kù)。最后介紹模型量化的相關(guān)理論知識(shí)和工程實(shí)踐,并對(duì)FP32精度模型和INT8精度模型進(jìn)行精度與推理速度對(duì)比。本書代碼資源本書強(qiáng)調(diào)動(dòng)手實(shí)踐,筆者為本書的出版制作了一個(gè)迷你數(shù)據(jù)集,并為大部分內(nèi)容編寫了代碼。代碼均以MIT許可證開源,既可用于學(xué)習(xí),也可直接應(yīng)用于日常工作中。開源代碼托管于代碼庫(kù)https://github.com/vision-adas/code。開源代碼的具體內(nèi)容詳見代碼庫(kù)的README頁(yè)面,迷你數(shù)據(jù)集的下載鏈接也公布于此。代碼庫(kù)中代碼包括:1)目標(biāo)檢測(cè)和語(yǔ)義分割多任務(wù)網(wǎng)絡(luò)模型的全套訓(xùn)練代碼。2)無(wú)監(jiān)督單目深度估計(jì)的全套訓(xùn)練代碼。3)多任務(wù)模型的網(wǎng)絡(luò)壓縮代碼。4)將模型導(dǎo)出為onnx、pt和TensorRT格式的模型導(dǎo)出代碼。5)在目標(biāo)硬件上使用LibTorch和TensorRT部署模型的C 示例代碼。6)配置代碼環(huán)境所需的Dockerfile。 致謝筆者長(zhǎng)年在知乎論壇的深度學(xué)習(xí)社區(qū)參與討論,很多對(duì)深度學(xué)習(xí)的理解都來(lái)自于社區(qū)討論。網(wǎng)友的批評(píng)指正和提問都是對(duì)筆者的鞭策,而關(guān)注者的認(rèn)可也在激勵(lì)筆者不斷進(jìn)步,特此對(duì)網(wǎng)友們表示感謝。本書成書于疫情期間,父母對(duì)筆者長(zhǎng)年不回國(guó)探親報(bào)以極大的寬容和理解,長(zhǎng)時(shí)間的專注讓本書得以完成。筆者的小伙伴楊丹青對(duì)本書的第1章進(jìn)行了審閱,對(duì)行文提出了很多有價(jià)值的建議,更要感謝她對(duì)筆者疏于陪伴的諒解。
劉斯坦,本科畢業(yè)于上海交通大學(xué),碩士畢業(yè)于德國(guó)慕尼黑工業(yè)大學(xué)。深度學(xué)習(xí)資深工程師,從事無(wú)人駕駛智能感知系統(tǒng)的研發(fā)工作。在德國(guó)相關(guān)領(lǐng)域從業(yè)超過十年,負(fù)責(zé)無(wú)人駕駛系統(tǒng)中多個(gè)神經(jīng)網(wǎng)絡(luò)模型在量產(chǎn)車的落地以及中國(guó)地區(qū)的本地化。劉斯坦對(duì)深度學(xué)習(xí)的各個(gè)領(lǐng)域不但有著全景式的理解,還具備從數(shù)學(xué)理論到部署產(chǎn)品線的知識(shí)縱深。這種即廣又深全面覆蓋的知識(shí)面,相信能為讀者帶來(lái)更開闊的視野。
前言第1章 卷積神經(jīng)網(wǎng)絡(luò)的理論基礎(chǔ)1.1神經(jīng)網(wǎng)絡(luò)回顧1.1.1神經(jīng)網(wǎng)絡(luò)模型1.1.2神經(jīng)網(wǎng)絡(luò)的訓(xùn)練反向傳播算法1.1.3神經(jīng)網(wǎng)絡(luò)的擬合能力和泛化能力1.2什么是卷積神經(jīng)網(wǎng)絡(luò)1.2.1什么是卷積運(yùn)算1.2.2通道(Channel)和三維卷積1.2.3為什么需要深度網(wǎng)絡(luò)1.2.4什么是批次(Batch)1.3卷積神經(jīng)網(wǎng)絡(luò)的組成細(xì)節(jié)1.3.1卷積神經(jīng)網(wǎng)絡(luò)的輸入層1.3.2神經(jīng)網(wǎng)絡(luò)的輸出層1.3.3卷積層和轉(zhuǎn)置卷積層1.3.4激活層1.3.5歸一化層1.3.6上采樣層和下采樣層1.3.7池化層1.3.8跳躍、空間注意力等特殊的連接方式1.3.9構(gòu)建一個(gè)復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò)1.4卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練1.4.1常用損失函數(shù)1.4.2常用的正則化方法1.4.3常用的優(yōu)化器1.4.4常用的訓(xùn)練學(xué)習(xí)率調(diào)整方法第2章 深度學(xué)習(xí)開發(fā)環(huán)境及常用工具庫(kù)2.1硬件和操作系統(tǒng)2.1.1顯卡2.1.2操作系統(tǒng)2.2Python開發(fā)環(huán)境管理2.2.1Anaconda虛擬環(huán)境的管理2.2.2Python的包管理器pip2.3常用的Python包2.3.1NumPyPython科學(xué)計(jì)算庫(kù)2.3.2OpenCVPython圖像處理庫(kù)2.4GPU加速的深度學(xué)習(xí)和科學(xué)計(jì)算庫(kù)PyTorch2.4.1GPU加速的科學(xué)計(jì)算功能2.4.2PyTorch的自動(dòng)求導(dǎo)功能2.4.3PyTorch的優(yōu)化器2.4.4PyTorch的數(shù)據(jù)加載2.4.5用PyTorch搭建神經(jīng)網(wǎng)絡(luò)2.4.6常用的輔助工具2.4.7搭建一個(gè)神經(jīng)網(wǎng)絡(luò)并進(jìn)行訓(xùn)練第3章 神經(jīng)網(wǎng)絡(luò)的特征編碼器主干網(wǎng)絡(luò)3.1什么是神經(jīng)網(wǎng)絡(luò)的主干網(wǎng)絡(luò)3.1.1神經(jīng)網(wǎng)絡(luò)的元結(jié)構(gòu)3.1.2神經(jīng)網(wǎng)絡(luò)的主干網(wǎng)絡(luò)及有監(jiān)督預(yù)訓(xùn)練3.1.3主干網(wǎng)絡(luò)的自監(jiān)督預(yù)訓(xùn)練3.2流行的主干網(wǎng)絡(luò)3.2.1簡(jiǎn)單直白的主干網(wǎng)絡(luò)類VGG網(wǎng)絡(luò)3.2.2最流行的主干網(wǎng)絡(luò)ResNet系列網(wǎng)絡(luò)3.2.3速度更快的輕量級(jí)主干網(wǎng)絡(luò)MobileNet系列3.2.4自由縮放的主干網(wǎng)絡(luò)RegNet系列3.3使用TorchVision模型庫(kù)提供的主干網(wǎng)絡(luò)3.3.1構(gòu)建和加載模型3.3.2修改主干網(wǎng)絡(luò)獲取多尺度特征圖3.3.3不同主干網(wǎng)絡(luò)和預(yù)訓(xùn)練模型的訓(xùn)練對(duì)比第4章 目標(biāo)檢測(cè)網(wǎng)絡(luò)識(shí)別車輛4.1目標(biāo)檢測(cè)基本概念4.1.1Anchor4.1.2NMS4.1.3目標(biāo)檢測(cè)網(wǎng)絡(luò)的類別4.2以Faster RCNN為代表的兩階段檢測(cè)方法4.2.1RPN網(wǎng)絡(luò)4.2.2ROI網(wǎng)絡(luò)4.2.3使用TorchVision模型庫(kù)中的Faster RCNN4.3以Yolo為代表的一階段檢測(cè)方法4.3.1YoloV3的整體結(jié)構(gòu)4.3.2Yolo的訓(xùn)練4.3.3類Yolo的一階段檢測(cè)網(wǎng)絡(luò)4.4以CenterNet為代表的Anchor-Free方法4.4.1CenterNet的整體結(jié)構(gòu)4.4.2用高斯模糊和Focal Loss訓(xùn)練CenterNet4.4.3YoloX網(wǎng)絡(luò)4.5Yolo的PyTorch實(shí)現(xiàn)4.5.1樣本選擇算法的實(shí)現(xiàn)4.5.2Yolo層的實(shí)現(xiàn)4.5.3構(gòu)造損失函數(shù)4.5.4NMS的實(shí)現(xiàn)第5章 語(yǔ)義分割與實(shí)例分割逐像素分類5.1語(yǔ)義分割5.1.1語(yǔ)義分割的網(wǎng)絡(luò)構(gòu)架和損失函數(shù)5.1.2評(píng)價(jià)語(yǔ)義分割質(zhì)量的指標(biāo)5.1.3使用OHEM和類別權(quán)重解決樣本不均衡問題5.1.4語(yǔ)義分割的關(guān)鍵信息融合5.2使用PyTorch訓(xùn)練一個(gè)語(yǔ)義分割模型5.2.1語(yǔ)義分割的數(shù)據(jù)加載5.2.2加載Lite R-ASPP語(yǔ)義分割模型進(jìn)行訓(xùn)練5.2.3計(jì)算混淆矩陣5.2.4計(jì)算mIoU5.3實(shí)例分割分辨行人和車輛5.3.1以Mask-RCNN為代表的兩階段實(shí)例分割方法5.3.2以SOLO為代表的單階段實(shí)例分割方法5.3.3基于CondInst的半監(jiān)督實(shí)例分割方法BoxInst5.4安裝及使用OpenMMLab以MMDetection為例5.4.1安裝和配置MMDetection5.4.2MMDetection介紹5.4.3SOLO代碼解析第6章 單目深度估計(jì)重建三維世界6.1計(jì)算機(jī)三維視覺基礎(chǔ)知識(shí)6.1.1相機(jī)模型6.1.2什么是深度圖6.1.3相機(jī)運(yùn)動(dòng)模型6.2單目深度估計(jì)的網(wǎng)絡(luò)構(gòu)架6.2.1深度圖預(yù)測(cè)網(wǎng)絡(luò)6.2.2基于相對(duì)視差的深度圖輸出編碼6.2.3基于有序回歸的深度圖輸出編碼6.2.4相機(jī)運(yùn)動(dòng)估計(jì)網(wǎng)絡(luò)6.3無(wú)監(jiān)督學(xué)習(xí)的機(jī)制6.3.1無(wú)監(jiān)督學(xué)習(xí)系統(tǒng)構(gòu)架6.3.2將深度圖反投影為點(diǎn)云的PyTorch實(shí)現(xiàn)6.3.3從相鄰幀采集RGB值并重投影的PyTorch實(shí)現(xiàn)6.3.4無(wú)監(jiān)督單目深度推斷的損失函數(shù)6.4可能存在的問題及解決方案6.4.1用圖像梯度圖解決邊緣模糊問題6.4.2用圖像一致性掩膜解決移動(dòng)物體問題6.4.3用速度損失解決尺度問題第7章 通過控制網(wǎng)絡(luò)結(jié)構(gòu)提高速度和精度7.1使用多任務(wù)網(wǎng)絡(luò)構(gòu)架提高速度和精度7.1.1多任務(wù)網(wǎng)絡(luò)的設(shè)計(jì)7.1.2多任務(wù)網(wǎng)絡(luò)的任務(wù)平衡問題7.2用PyTorch搭建一個(gè)語(yǔ)義分割和目標(biāo)檢測(cè)雙任務(wù)網(wǎng)絡(luò)7.2.1多任務(wù)數(shù)據(jù)加載7.2.2多任務(wù)網(wǎng)絡(luò)的搭建7.2.3多任務(wù)損失的平衡7.3壓縮神經(jīng)網(wǎng)絡(luò)提高推理速度7.3.1什么是神經(jīng)網(wǎng)絡(luò)壓縮7.3.2幾種常見的通道剪枝方法7.3.3在訓(xùn)練中使用L1正則化壓縮權(quán)重7.3.4使用可微通道加權(quán)進(jìn)行通道剪枝7.3.5網(wǎng)絡(luò)壓縮的流程7.4用PyTorch實(shí)現(xiàn)可微網(wǎng)絡(luò)壓縮7.4.1用PyTorch構(gòu)造可微通道選擇層7.4.2利用通道選擇層確定壓縮方案7.4.3對(duì)PyTorch模型進(jìn)行壓縮并對(duì)比運(yùn)行速度第8章 導(dǎo)出和部署神經(jīng)網(wǎng)絡(luò)模型8.1配置開發(fā)環(huán)境8.1.1Docker的使用8.1.2配置C 開發(fā)環(huán)境8.2使用LibTorch部署PyTorch模型8.2.1導(dǎo)出TorchScript模型8.2.2將LibTorch加入CMake項(xiàng)目8.2.3將輸入圖像轉(zhuǎn)換為Tensor8.2.4加載TorchScript模型并進(jìn)行推理8.3用TensorRT部署模型