深度學(xué)習(xí)案例教程 課件 第5章 目標(biāo)檢測(cè)_第1頁(yè)
深度學(xué)習(xí)案例教程 課件 第5章 目標(biāo)檢測(cè)_第2頁(yè)
深度學(xué)習(xí)案例教程 課件 第5章 目標(biāo)檢測(cè)_第3頁(yè)
深度學(xué)習(xí)案例教程 課件 第5章 目標(biāo)檢測(cè)_第4頁(yè)
深度學(xué)習(xí)案例教程 課件 第5章 目標(biāo)檢測(cè)_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目標(biāo)檢測(cè)第五章01理解圖像分類、目標(biāo)檢測(cè)和實(shí)例分割的關(guān)系學(xué)習(xí)目標(biāo)CONTENTS01理解圖像分類、目標(biāo)檢測(cè)和實(shí)例分割的關(guān)系02掌握傳統(tǒng)方法在目標(biāo)檢測(cè)領(lǐng)域的應(yīng)用學(xué)習(xí)目標(biāo)CONTENTS01理解圖像分類、目標(biāo)檢測(cè)和實(shí)例分割的關(guān)系02掌握傳統(tǒng)方法在目標(biāo)檢測(cè)領(lǐng)域的應(yīng)用03

了解深度學(xué)習(xí)中目標(biāo)檢測(cè)和實(shí)例分割的基本原理學(xué)習(xí)目標(biāo)CONTENTS01理解圖像分類、目標(biāo)檢測(cè)和實(shí)例分割的關(guān)系02掌握傳統(tǒng)方法在目標(biāo)檢測(cè)領(lǐng)域的應(yīng)用03

了解深度學(xué)習(xí)中目標(biāo)檢測(cè)和實(shí)例分割的基本原理04熟悉R-CNN、FastR-CNN、FasterR-CNN和MaskR-CNN模型的工作原理學(xué)習(xí)目標(biāo)CONTENTS01提高自主學(xué)習(xí)能力,通過(guò)閱讀相關(guān)文獻(xiàn)和實(shí)踐操作來(lái)提高自己的專業(yè)素養(yǎng)素質(zhì)目標(biāo)CONTENTS01提高自主學(xué)習(xí)能力,通過(guò)閱讀相關(guān)文獻(xiàn)和實(shí)踐操作來(lái)提高自己的專業(yè)素養(yǎng)02增強(qiáng)團(tuán)隊(duì)協(xié)作意識(shí),與他人分享所學(xué)知識(shí),共同進(jìn)步素質(zhì)目標(biāo)CONTENTS01提高自主學(xué)習(xí)能力,通過(guò)閱讀相關(guān)文獻(xiàn)和實(shí)踐操作來(lái)提高自己的專業(yè)素養(yǎng)02增強(qiáng)團(tuán)隊(duì)協(xié)作意識(shí),與他人分享所學(xué)知識(shí),共同進(jìn)步03提高解決問(wèn)題的能力,能夠獨(dú)立分析和解決實(shí)際問(wèn)題素質(zhì)目標(biāo)CONTENTS使用Pytorch實(shí)現(xiàn)行人的目標(biāo)檢測(cè)使用Pytorch實(shí)現(xiàn)行人的實(shí)例分割

實(shí)踐任務(wù)第一節(jié)

梯度下降法基于梯度的優(yōu)化就是優(yōu)化一個(gè)函數(shù)的最終取值。假設(shè)θ是函數(shù)的輸入?yún)?shù),f(θ)是需要優(yōu)化的函數(shù),那么基于梯度的優(yōu)化是指改變?chǔ)纫缘玫阶钚』蜃畲蟮膄(θ)。梯度下降算法是指沿著函數(shù)值下降變化最快的方向,改變?chǔ)榷@得更小的f(θ)的技術(shù)。梯度下降法描述第一節(jié)

梯度下降法梯度下降的過(guò)程類似于下山的過(guò)程,我們找到一個(gè)最陡峭的方向,從此方向下山,下到山腰的某一點(diǎn),又開始新的搜索,尋找另一個(gè)更加陡峭的方向,從那個(gè)更加陡峭的地方下山,不斷重復(fù)這個(gè)過(guò)程,直到成功抵達(dá)山腳下。梯度下降法描述把整個(gè)樣本切分為若干份,然后在每一份樣本上實(shí)施梯度下降算法進(jìn)行參數(shù)更新。批量梯度下降算法梯度下降法指每個(gè)批量只有一個(gè)樣本,并且只在這一個(gè)樣本上實(shí)施梯度下降算法進(jìn)行參數(shù)更新。采取SGD,雖然模型訓(xùn)練起來(lái)更靈活,但壞處是算法很難收斂,由于每次只處理一個(gè)樣本,效率很低。隨機(jī)梯度下降算法一個(gè)理想的情形是縱軸的震蕩減少,即學(xué)習(xí)變慢,而橫軸的學(xué)習(xí)加快。批量梯度下降算法的改進(jìn)有三種,分別是動(dòng)量梯度下降算法、均方根加速算法和自適應(yīng)矩估計(jì)算法。批量梯度下降算法的改進(jìn)第一節(jié)

梯度下降法批量梯度下降算法(BatchGradientDescent,BGD),就是把整個(gè)樣本切分為若干份,然后在每一份樣本上實(shí)施梯度下降算法進(jìn)行參數(shù)更新。假設(shè)有10萬(wàn)個(gè)樣本,隨機(jī)排序后,按照5000大小切分成20份,每一份稱為一個(gè)批量(Batch),在每一個(gè)Batch上計(jì)算梯度并優(yōu)化,這樣網(wǎng)絡(luò)的訓(xùn)練效率會(huì)大大提高。批量梯度下降算法第一節(jié)

梯度下降法隨機(jī)梯度下降算法(StochasticGradientDescent,SGD),是指每個(gè)批量只有一個(gè)樣本,并且只在這一個(gè)樣本上實(shí)施梯度下降算法進(jìn)行參數(shù)更新。采取SGD,雖然模型訓(xùn)練起來(lái)更靈活,但壞處是算法很難收斂,由于每次只處理一個(gè)樣本,效率很低。隨機(jī)梯度下降算法第一節(jié)

梯度下降法梯度下降、批量梯度下降與隨機(jī)梯度下降算法之間的聯(lián)系與區(qū)別:聯(lián)系:都是基于梯度下降算法的策略。區(qū)別:執(zhí)行一次計(jì)算所需的樣本量不同。

聯(lián)系與區(qū)別第一節(jié)

梯度下降法無(wú)論是批量梯度下降,還是隨機(jī)梯度下降,都無(wú)法避免在縱軸上的震蕩問(wèn)題。一個(gè)理想的情形是縱軸的震蕩減少,即學(xué)習(xí)變慢,而橫軸的學(xué)習(xí)加快。批量梯度下降算法的改進(jìn)第一節(jié)

梯度下降法(1)動(dòng)量梯度下降(GradientDescentwithMomentum)算法:考慮了歷史梯度的加權(quán)平均作為速率進(jìn)行優(yōu)化的方法。批量梯度下降算法的改進(jìn)第一節(jié)

梯度下降法(1)動(dòng)量梯度下降(GradientDescentwithMomentum)算法:考慮了歷史梯度的加權(quán)平均作為速率進(jìn)行優(yōu)化的方法。(2)均方根加速(RootMeanSquareProp,RMSProp)算法:指對(duì)歷史梯度加權(quán)時(shí),對(duì)當(dāng)前梯度取了平方,并在參數(shù)更新時(shí),讓當(dāng)前梯度對(duì)歷史梯度開根號(hào)后的值做了除法運(yùn)算。批量梯度下降算法的改進(jìn)第一節(jié)

梯度下降法(1)動(dòng)量梯度下降(GradientDescentwithMomentum)算法:考慮了歷史梯度的加權(quán)平均作為速率進(jìn)行優(yōu)化的方法。(2)均方根加速(RootMeanSquareProp,RMSProp)算法:指對(duì)歷史梯度加權(quán)時(shí),對(duì)當(dāng)前梯度取了平方,并在參數(shù)更新時(shí),讓當(dāng)前梯度對(duì)歷史梯度開根號(hào)后的值做了除法運(yùn)算。(3)自適應(yīng)矩估計(jì)(AdaptiveMomentEstimation,Adam)算法:一種將之前的動(dòng)量梯度下降和均方根加速結(jié)合起來(lái)的優(yōu)化算法。

批量梯度下降算法的改進(jìn)第一節(jié)

梯度下降法第二節(jié)

反向傳播算法反向傳播(BackPropagation,BP)算法是一種高效地在所有參數(shù)上使用梯度下降算法的方法。前向傳播可以概括為輸入經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)的處理,最終產(chǎn)生輸出在訓(xùn)練過(guò)程中,前向傳播會(huì)產(chǎn)生一個(gè)損失函數(shù);反向傳播則允許來(lái)自損失函數(shù)的信息通過(guò)網(wǎng)絡(luò)向后流動(dòng),以便計(jì)算梯度。反向傳播算法定義第二節(jié)

反向傳播算法神經(jīng)網(wǎng)絡(luò)模型之所以不能直接應(yīng)用梯度下降算法進(jìn)行訓(xùn)練,主要有以下兩個(gè)原因。(1)梯度下降可以應(yīng)對(duì)帶有明確求導(dǎo)函數(shù)的情況,或者說(shuō)可以求出誤差的情況。(2)對(duì)于多層神經(jīng)網(wǎng)絡(luò),隱藏層的誤差是不存在的,因此不能直接對(duì)它應(yīng)用梯度下降,要先將誤差反向傳播至隱藏層,然后應(yīng)用梯度下降。反向傳播算法定義反向傳播算法距離第1層是輸入層,包含一個(gè)神經(jīng)元x,權(quán)值和偏置分別是w1和b1。第2層是隱藏層,包含一個(gè)神經(jīng)元h1,權(quán)值和偏置分別是w2和b2。第3層是輸出層a,這里的激活函數(shù)默認(rèn)為Sigmoid函數(shù)。第二節(jié)

反向傳播算法前向傳播輸入層到隱藏層:計(jì)算神經(jīng)元x的輸入加權(quán)和,再采用Sigmoid激活函數(shù),得到h1的輸出值。隱藏層到輸出層:將h1的輸出a1再進(jìn)行加權(quán)求和,然后采取Sigmoid激活,得至輸出值a2。建立損失函數(shù)。我們得到了輸出值a2,但它與真實(shí)值y還相差很遠(yuǎn),所以需要對(duì)二者的誤差建立損失函數(shù)。反向傳播的計(jì)算過(guò)程第二節(jié)

反向傳播算法步驟1:計(jì)算總誤差。這里只有一個(gè)輸出,因此只需要計(jì)算真實(shí)值和輸出值之間的差異即可。反向傳播的計(jì)算過(guò)程第二節(jié)

反向傳播算法步驟2:隱藏層到輸出層的權(quán)值更新。以權(quán)重參數(shù)w2為例,如果想知道對(duì)整體誤差產(chǎn)生了多少影響,可以用整體誤差對(duì)此求偏導(dǎo)得出(應(yīng)用鏈?zhǔn)椒▌t)。反向傳播的計(jì)算過(guò)程第二節(jié)

反向傳播算法反向傳播算法步驟3:輸入層到隱藏層的權(quán)值更新。以對(duì)權(quán)值w1的更新為例,其計(jì)算方法和步驟2差不多,應(yīng)用鏈?zhǔn)椒▌t可得出:反向傳播的計(jì)算過(guò)程BP算法的基本工作原理,簡(jiǎn)單概括就是先向前計(jì)算得到輸出值,然后反向傳播更新參數(shù),最后得到損失函數(shù)最小時(shí)的參數(shù)作為最優(yōu)學(xué)習(xí)參數(shù)。簡(jiǎn)單概括第二節(jié)

反向傳播算法第三節(jié)

R-CNN原理在2014年提出的R-CNN(Region-CNN)模型,被普遍認(rèn)為是目標(biāo)檢測(cè)領(lǐng)域的傳統(tǒng)階段與深度學(xué)習(xí)階段的分界線。在R-CNN模型之后涌現(xiàn)出了許多更加高性能的深度學(xué)習(xí)模型(如SPPNet、FasterR-CNN等),它們都或多或少借鑒了R-CNN成功的經(jīng)驗(yàn),這極大地推動(dòng)了目標(biāo)檢測(cè)領(lǐng)域和相關(guān)研究領(lǐng)域的發(fā)展。R-CNN系列模型原理第三節(jié)

R-CNN原理本節(jié)首先介紹R-CNN、FastR-CNN和FasterR-CNN這三個(gè)目標(biāo)檢測(cè)模型,最后介紹MaskR-CNN模型用于實(shí)例分割。R-CNN系列模型原理第三節(jié)

R-CNN原理R-CNN(Region-CNN)是一種經(jīng)典的目標(biāo)檢測(cè)方法。它的基本思想是通過(guò)候選區(qū)域提取和深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)來(lái)實(shí)現(xiàn)目標(biāo)檢測(cè)。R-CNN原理第三節(jié)

R-CNN原理將相似的像素區(qū)域合并為候選區(qū)域候選區(qū)域提取R-CNN原理捕捉到目標(biāo)的語(yǔ)義和視覺(jué)信息特征提取使用每個(gè)候選區(qū)域的特征向量來(lái)進(jìn)行目標(biāo)分類和邊界框回歸目標(biāo)分類和邊界框回歸合并重疊和冗余的候選區(qū)域,并應(yīng)用非極大值抑制來(lái)選擇最佳的目標(biāo)檢測(cè)結(jié)果。候選區(qū)域的合并和非極大值抑制第三節(jié)

R-CNN原理R-CNN首先通過(guò)選擇性搜索(SelectiveSearch)等算法在輸入圖像中生成一系列候選區(qū)域。它是一種基于圖像分割和合并的方法,通過(guò)將相似的像素區(qū)域合并為候選區(qū)域。這些候選區(qū)域代表了可能包含目標(biāo)的圖像區(qū)域。候選區(qū)域提取第三節(jié)

R-CNN原理對(duì)于每個(gè)候選區(qū)域,R-CNN將其裁剪為固定大小的正方形,并進(jìn)行尺寸歸一化和圖像預(yù)處理。通過(guò)CNN模型(如AlexNet、VGG等)對(duì)每個(gè)候選區(qū)域的圖像進(jìn)行特征提取??梢詫D像轉(zhuǎn)換為高維特征向量,捕捉到目標(biāo)的語(yǔ)義和視覺(jué)信息。特征提取第三節(jié)

R-CNN原理R-CNN使用每個(gè)候選區(qū)域的特征向量來(lái)進(jìn)行目標(biāo)分類和邊界框回歸。首先,針對(duì)每個(gè)候選區(qū)域,使用一個(gè)支持向量機(jī)(SVM)來(lái)對(duì)其進(jìn)行目標(biāo)分類,將其歸為預(yù)定義的目標(biāo)類別或背景類別。同時(shí),使用回歸器來(lái)精確定位目標(biāo)的邊界框,調(diào)整候選區(qū)域的位置和尺寸,更準(zhǔn)確地包圍目標(biāo)。目標(biāo)分類和邊界框回歸第三節(jié)

R-CNN原理R-CNN的最后一步是對(duì)候選區(qū)域進(jìn)行合并和篩選。由于選擇性搜索生成的候選區(qū)域可能存在重疊和冗余,因此需要進(jìn)行合并。此外,為了去除重復(fù)的檢測(cè)結(jié)果,還需要應(yīng)用非極大值抑制(NMS)來(lái)選擇最佳的目標(biāo)檢測(cè)結(jié)果。NMS會(huì)根據(jù)檢測(cè)框之間的重疊程度和類別置信度進(jìn)行評(píng)估和篩選,保留最具代表性的檢測(cè)結(jié)果。候選區(qū)域的合并和非極大值抑制第三節(jié)

R-CNN原理R-CNN通過(guò)候選區(qū)域提取和深度卷積神經(jīng)網(wǎng)絡(luò)的結(jié)合,實(shí)現(xiàn)了準(zhǔn)確的目標(biāo)檢測(cè)。通過(guò)利用CNN的強(qiáng)大特征提取能力和分類能力,捕捉到目標(biāo)的高層語(yǔ)義信息,通過(guò)候選區(qū)域的選擇和調(diào)整實(shí)現(xiàn)目標(biāo)的精確定位。R-CNN的優(yōu)點(diǎn)第三節(jié)

R-CNN原理R-CNN存在訓(xùn)練和推斷速度慢的問(wèn)題,因?yàn)槊總€(gè)候選區(qū)域都需要獨(dú)立地進(jìn)行特征提取和分類。R-CNN的缺點(diǎn)第四節(jié)

FastR-CNN原理、MaskR-CNN原理FastR-CNN是R-CNN的改進(jìn)版本,旨在解決R-CNN中的訓(xùn)練和推斷速度慢的問(wèn)題。FastR-CNN通過(guò)引入?yún)^(qū)域池化(RoIpooling)和共享特征提取來(lái)實(shí)現(xiàn)更高的檢測(cè)速度。FastR-CNN原理區(qū)域池化引入了區(qū)域池化層,用于將每個(gè)候選區(qū)域映射到固定大小的特征圖上。目標(biāo)分類和邊界框回歸將每個(gè)候選區(qū)域的特征表示輸入全連接層,進(jìn)行目標(biāo)分類和邊界框回歸。FastR-CNN原理?yè)p失計(jì)算和訓(xùn)練使用多任務(wù)損失函數(shù)來(lái)同時(shí)優(yōu)化目標(biāo)分類和邊界框回歸。候選區(qū)域生成使用選擇性搜索等算法生成一系列候選區(qū)域。特征提取在整個(gè)圖像上僅使用一次卷積操作來(lái)提取特征與R-CNN類似,F(xiàn)astR-CNN使用選擇性搜索等算法生成一系列候選區(qū)域。這些候選區(qū)域代表了可能包含目標(biāo)的圖像區(qū)域。候選區(qū)域生成FastR-CNN原理FastR-CNN在整個(gè)圖像上僅使用一次卷積操作來(lái)提取特征,而不是對(duì)每個(gè)候選區(qū)域單獨(dú)進(jìn)行特征提取。它將整個(gè)圖像輸入卷積神經(jīng)網(wǎng)絡(luò)(如VGG、ResNet等)中,得到圖像的共享特征圖。特征提取FastR-CNN原理在FastR-CNN中引入了區(qū)域池化層(RoIpoolinglayer),用于將每個(gè)候選區(qū)域映射到固定大小的特征圖上。區(qū)域池化層將候選區(qū)域分割為固定大小的子區(qū)域,并在每個(gè)子區(qū)域上進(jìn)行最大池化操作,得到固定大小的特征表示。這樣,所有候選區(qū)域都可以使用相同大小的特征表示,方便后續(xù)的分類和邊界框回歸。區(qū)域池化FastR-CNN原理在區(qū)域池化后,F(xiàn)astR-CNN將每個(gè)候選區(qū)域的特征表示輸入全連接層,進(jìn)行目標(biāo)分類和邊界框回歸。目標(biāo)分類采用多類別softmax分類器,根據(jù)特征表示預(yù)測(cè)目標(biāo)的類別概率。邊界框回歸則使用回歸器對(duì)候選區(qū)域的位置和尺寸進(jìn)行調(diào)整,以更準(zhǔn)確地框住目標(biāo)。目標(biāo)分類和邊界框回歸FastR-CNN原理FastR-CNN使用多任務(wù)損失函數(shù)來(lái)同時(shí)優(yōu)化目標(biāo)分類和邊界框回歸。損失函數(shù)由分類損失(如交叉熵?fù)p失)和回歸損失(如平滑L1損失)組成。通過(guò)反向傳播和梯度下降優(yōu)化算法,可以訓(xùn)練FastR-CNN模型。損失計(jì)算和訓(xùn)練FastR-CNN原理FastR-CNN相比于R-CNN具有更快的訓(xùn)練和推斷速度,因?yàn)樘卣魈崛」蚕砹苏麄€(gè)圖像的卷積操作,避免了重復(fù)計(jì)算。此外,區(qū)域池化的引入使得候選區(qū)域的特征表示更加統(tǒng)一,方便了后續(xù)的分類和回歸操作。FastR-CNN的改進(jìn)為后續(xù)更高效的目標(biāo)檢測(cè)方法奠定了基礎(chǔ),例如FasterR-CNN和MaskR-CNN。FastR-CNN的優(yōu)勢(shì)FastR-CNN原理FasterR-CNN是在FastR-CNN的基礎(chǔ)上進(jìn)一步改進(jìn)的目標(biāo)檢測(cè)方法,它引入了區(qū)域提議網(wǎng)絡(luò)(RegionProposalNetwork,RPN),實(shí)現(xiàn)了端到端的目標(biāo)檢測(cè)。FasterR-CNN相比于FastR-CNN具有更快的速度和更準(zhǔn)確的檢測(cè)結(jié)果。FasterR-CNN的原理FasterR-CNN原理區(qū)域池化和目標(biāo)分類使用區(qū)域池化層將每個(gè)候選區(qū)域映射到固定大小的特征圖上邊界框回歸使用回歸器對(duì)候選區(qū)域的邊界框進(jìn)行精確定位FasterR-CNN原理訓(xùn)練過(guò)程同時(shí)訓(xùn)練區(qū)域提議網(wǎng)絡(luò)(RPN)和目標(biāo)分類網(wǎng)絡(luò)候選區(qū)域生成通過(guò)區(qū)域提議網(wǎng)絡(luò)(RPN)來(lái)生成候選區(qū)域共享特征提取與FastR-CNN一樣,通過(guò)共享的卷積神經(jīng)網(wǎng)絡(luò)來(lái)提取整個(gè)圖像的特征FasterR-CNN通過(guò)引入?yún)^(qū)域提議網(wǎng)絡(luò)(RPN)實(shí)現(xiàn)了更快速和準(zhǔn)確的目標(biāo)檢測(cè)。RPN通過(guò)端到端的訓(xùn)練方式生成候選區(qū)域,并與FastR-CNN共享特征提取層,從而提高了檢測(cè)的效率和準(zhǔn)確性。這使得FasterR-CNN成為目標(biāo)檢測(cè)領(lǐng)域的重要里程碑,為后續(xù)的目標(biāo)檢測(cè)方法提供了基礎(chǔ)。FasterR-CNN的優(yōu)勢(shì)FasterR-CNN原理MaskR-CNN原理MaskR-CNN是在FasterR-CNN的基礎(chǔ)上進(jìn)一步擴(kuò)展,實(shí)現(xiàn)了實(shí)例分割的能力。除了目標(biāo)檢測(cè)的功能,MaskR-CNN還能夠?qū)γ總€(gè)檢測(cè)到的目標(biāo)生成精確的分割掩碼。MaskR-CNN原理候選區(qū)域生成和共享特征提取使用區(qū)域提議網(wǎng)絡(luò)(RPN)生成候選區(qū)域,并共享特征提取層區(qū)域分類和邊界框回歸使用區(qū)域池化層將候選區(qū)域映射到固定大小的特征圖上,并通過(guò)全連接層進(jìn)行目標(biāo)分類和邊界框回歸掩碼預(yù)測(cè)引入了一個(gè)新的分支,用于預(yù)測(cè)每個(gè)檢測(cè)到的目標(biāo)的分割掩碼MaskR-CNN原理?yè)p失計(jì)算和訓(xùn)練損失函數(shù)由四部分組成,主要用于訓(xùn)練模型的分類、定位和分割能力。MaskR-CNN原理MaskR-CNN使用與FasterR-CNN相同的區(qū)域提議網(wǎng)絡(luò)(RPN)生成候選區(qū)域,并共享特征提取層。RPN負(fù)責(zé)生成候選區(qū)域的邊界框和類別概率,而特征提取層從整個(gè)圖像中提取共享的特征表示。候選區(qū)域生成和共享特征提取MaskR-CNN原理類似于FasterR-CNN,MaskR-CNN使用區(qū)域池化層將候選區(qū)域映射到固定大小的特征圖上,并通過(guò)全連接層進(jìn)行目標(biāo)分類和邊界框回歸。這一步驟用于確定每個(gè)候選區(qū)域的類別和精確位置。區(qū)域分類和邊界框回歸MaskR-CNN原理MaskR-CNN引入了一個(gè)新的分支,用于預(yù)測(cè)每個(gè)檢測(cè)到的目標(biāo)的分割掩碼。這個(gè)分支在每個(gè)候選區(qū)域上使用卷積神經(jīng)網(wǎng)絡(luò),生成與目標(biāo)實(shí)例尺寸相匹配的二進(jìn)制掩碼。每個(gè)像素點(diǎn)都被標(biāo)記為屬于目標(biāo)或背景,從而實(shí)現(xiàn)精確的實(shí)例分割。掩碼預(yù)測(cè)MaskR-CNN原理MaskR-CNN的損失函數(shù)由四部分組成:目標(biāo)分類損失邊界框回歸損失掩碼二進(jìn)制交叉熵?fù)p失掩碼邊界框回歸損失這些損失函數(shù)用于訓(xùn)練模型的分類、定位和分割能力。損失計(jì)算和訓(xùn)練MaskR-CNN原理通過(guò)引入掩碼預(yù)測(cè)分支,MaskR-CNN能夠在目標(biāo)檢測(cè)的同時(shí)實(shí)現(xiàn)像素級(jí)的實(shí)例分割。這使得MaskR-CNN成為處理需要更精細(xì)定位和分割的應(yīng)用場(chǎng)景的有力工具。它在許多領(lǐng)域如醫(yī)學(xué)圖像分析、自動(dòng)駕駛和人臉識(shí)別等都取得了顯著的成果。MaskR-CNN的優(yōu)勢(shì)第五節(jié)

實(shí)踐任務(wù)-行人目標(biāo)檢測(cè)與實(shí)例分割行人目標(biāo)檢測(cè)與實(shí)例分割在生活中可以滿足行人安全監(jiān)控、人流統(tǒng)計(jì)、智能交通、行為識(shí)別等多個(gè)方面的需求,為我們的生活和社會(huì)提供更加安全、智能和便利的環(huán)境。主要使用場(chǎng)景有:1.行人安全與監(jiān)控2.行人計(jì)數(shù)與流量統(tǒng)計(jì)3.自動(dòng)駕駛與智能交通4.行人姿態(tài)分析與行為識(shí)別5.人機(jī)交互與增強(qiáng)現(xiàn)實(shí)學(xué)習(xí)情景第五節(jié)

實(shí)踐任務(wù)-行人目標(biāo)檢測(cè)與實(shí)例分割Penn-Fudan是由賓夕法尼亞大學(xué)發(fā)布的一個(gè)行人檢測(cè)數(shù)據(jù)集,圖片拍攝自校園內(nèi)和城區(qū)街道。數(shù)據(jù)集對(duì)每一張圖片都標(biāo)記出了行人的輪廓坐標(biāo),每張圖片至少會(huì)有一個(gè)行人,總共有170張圖片和345個(gè)實(shí)例。實(shí)踐任務(wù)1:使用數(shù)據(jù)集圖2圖1實(shí)踐任務(wù)importosimportnumpyasnpimporttorchfromPILimportImageclassPennFudanDataset(object):def__init__(self,root,transforms):self.root=rootself.transforms=transforms#loadallimagefiles,sortingthemto#ensurethattheyarealignedself.imgs=list(sorted(os.listdir(os.path.join(root,"PNGImages"))))self.masks=list(sorted(os.listdir(os.path.join(root,"PedMasks"))))代碼實(shí)現(xiàn)實(shí)踐任務(wù)importosimportnumpyasnpimporttorchfromPILimportImageclassPennFudanDataset(object):def__init__(self,root,transforms):self.root=rootself.transforms=transforms#loadallimagefiles,sortingthemto#ensurethattheyarealignedself.imgs=list(sorted(os.listdir(os.path.join(root,"PNGImages"))))self.masks=list(sorted(os.listdir(os.path.join(root,"PedMasks"))))代碼實(shí)現(xiàn)實(shí)踐任務(wù)def__getitem__(self,idx):#loadimagesandmasksimg_path=os.path.join(self.root,"PNGImages",self.imgs[idx])mask_path=os.path.join(self.root,"PedMasks",self.masks[idx])img=Image.open(img_path).convert("RGB")

mask=Image.open(mask_path)mask=np.array(mask)#instancesareencodedasdifferentcolorsobj_ids=np.unique(mask)#firstidisthebackground,soremoveitobj_ids=obj_ids[1:]#splitthecolor-encodedmaskintoasetmasks=mask==obj_ids[:,None,None]代碼實(shí)現(xiàn)實(shí)踐任務(wù)def__getitem__(self,idx):#loadimagesandmasksimg_path=os.path.join(self.root,"PNGImages",self.imgs[idx])mask_path=os.path.join(self.root,"PedMasks",self.masks[idx])img=Image.open(img_path).convert("RGB")

mask=Image.open(mask_path)mask=np.array(mask)#instancesareencodedasdifferentcolorsobj_ids=np.unique(mask)#firstidisthebackground,soremoveitobj_ids=obj_ids[1:]#splitthecolor-encodedmaskintoasetmasks=mask==obj_ids[:,None,None]代碼實(shí)現(xiàn)實(shí)踐任務(wù)def__getitem__(self,idx):#loadimagesandmasksimg_path=os.path.join(self.root,"PNGImages",self.imgs[idx])mask_path=os.path.join(self.root,"PedMasks",self.masks[idx])img=Image.open(img_path).convert("RGB")

mask=Image.open(mask_path)mask=np.array(mask)#instancesareencodedasdifferentcolorsobj_ids=np.unique(mask)#firstidisthebackground,soremoveitobj_ids=obj_ids[1:]#splitthecolor-encodedmaskintoasetmasks=mask==obj_ids[:,None,None]代碼實(shí)現(xiàn)實(shí)踐任務(wù)#getboundingboxcoordinatesforeachmasknum_objs=len(obj_ids)boxes=[]foriinrange(num_objs):pos=np.where(masks[i])xmin=np.min(pos[1])xmax=np.max(pos[1])ymin=np.min(pos[0])ymax=np.max(pos[0])boxes.append([xmin,ymin,xmax,ymax])boxes=torch.as_tensor(boxes,dtype=torch.float32)#thereisonlyoneclasslabels=torch.ones((num_objs,),dtype=64)masks=torch.as_tensor(masks,dtype=torch.uint8)image_id=torch.tensor([idx])area=(boxes[:,3]-boxes[:,1])*(boxes[:,2]-boxes[:,0])iscrowd=torch.zeros((num_objs,),dtype=64)代碼實(shí)現(xiàn)實(shí)踐任務(wù)#getboundingboxcoordinatesforeachmasknum_objs=len(obj_ids)boxes=[]foriinrange(num_objs):pos=np.where(masks[i])xmin=np.min(pos[1])xmax=np.max(pos[1])ymin=np.min(pos[0])ymax=np.max(pos[0])boxes.append([xmin,ymin,xmax,ymax])boxes=torch.as_tensor(boxes,dtype=torch.float32)#thereisonlyoneclasslabels=torch.ones((num_objs,),dtype=64)masks=torch.as_tensor(masks,dtype=torch.uint8)image_id=torch.tensor([idx])area=(boxes[:,3]-boxes[:,1])*(boxes[:,2]-boxes[:,0])iscrowd=torch.zeros((num_objs,),dtype=64)代碼實(shí)現(xiàn)實(shí)踐任務(wù)target={}target["boxes"]=boxestarget["labels"]=labelstarget["masks"]=maskstarget["image_id"]=image_idtarget["area"]=areatarget["iscrowd"]=iscrowdifself.transformsisnotNone:img,target=self.transforms(img,target)returnimg,targetdef__len__(self):returnlen(self.imgs)##實(shí)例化數(shù)據(jù)集,查看數(shù)據(jù)#dataset=PennFudanDataset('./dataset/PennFudanPed',None)代碼實(shí)現(xiàn)實(shí)踐任務(wù)使用視覺(jué)工具包torchvision可以快速搭建FasterR-CNN模型,并加載預(yù)訓(xùn)練的模型。importtorchvisionfromtorchvision.models.detection.faster_rcnnimportFastRCNNPredictorfrom

torchvision.models.detection.mask_rcnnimportMaskRCNNPredictor,

MaskRCNN_ResNet50_FPN_Weightsmodel=torchvision.models.detection.maskrcnn_resnet50_fpn(weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT)num_classes=2#分類人和背景in_features=model.roi_heads.box_predictor.cls_score.in_featuresmodel.roi_heads.box_predictor=FastRCNNPredictor(in_features,num_classes)實(shí)踐任務(wù)2:搭建目標(biāo)檢測(cè)模型實(shí)踐任務(wù)importtorchvisionfromtorchvision.models.detection.faster_rcnnimportFastRCNNPredictorfromtorchvision.models.detection.mask_rcnnimportMaskRCNNPredictor,

MaskRCNN_ResNet50_FPN_Weightsmodel=torchvision.models.detection.maskrcnn_resnet50_fpn(weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT)num_classes=2#分類人和背景in_features=model.roi_heads.box_predictor.cls_score.in_featuresmodel.roi_heads.box_predictor=FastRCNNPredictor(in_features,num_classes)代碼實(shí)現(xiàn)實(shí)踐任務(wù)importtorchvisionfromtorchvision.models.detection.faster_rcnnimportFastRCNNPredictorfromtorchvision.models.detection.mask_rcnnimportMaskRCNNPredictor,

MaskRCNN_ResNet50_FPN_Weightsmodel=torchvision.models.detection.maskrcnn_resnet50_fpn(weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT)num_classes=2#分類人和背景in_features=model.roi_heads.box_predictor.cls_score.in_featuresmodel.roi_heads.box_predictor=FastRCNNPredictor(in_features,num_classes)代碼實(shí)現(xiàn)實(shí)踐任務(wù)在本節(jié)中,我們使用微調(diào)預(yù)訓(xùn)練的方式使用MaskR-CNN

模型。實(shí)踐任務(wù)3:改造模型以適應(yīng)新的數(shù)據(jù)集實(shí)踐任務(wù)defget_model_instance_segmentation(num_classes):model=torchvision.models.detection.maskrcnn_resnet50_fpn(weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT)in_features=model.roi_heads.box_predictor.cls_score.in_featuresmodel.roi_heads.box_predictor=FastRCNNPredictor(in_features,num_classes)in_features_mask=model.roi_heads.mask_predictor.conv5_mask.in_channelshidden_layer=256model.roi_heads.mask_predictor=MaskRCNNPredictor(in_features_mask,hidden_layer,num_classes)returnmodel代碼實(shí)現(xiàn)實(shí)踐任務(wù)由于數(shù)據(jù)集比較小,所有我們需要做一些數(shù)據(jù)增強(qiáng)的工作。定義了圖像變換操作,其實(shí)就是隨機(jī)翻轉(zhuǎn)訓(xùn)練圖像。fromengineimporttrain_one_epoch,evaluateimportutilsimporttransformsasTdefget_transform(train):transforms=[]transforms.append(T.PILToTensor())iftrain:transforms.append(T.RandomHorizontalFlip(0.5))returnT.Compose(transforms)實(shí)踐任務(wù)4:調(diào)用工具訓(xùn)練模型實(shí)踐任務(wù)由于數(shù)據(jù)集比較小,所有我們需要做一些數(shù)據(jù)增強(qiáng)的工作。定義了圖像變換操作,其實(shí)就是隨機(jī)翻轉(zhuǎn)訓(xùn)練圖像。fromengineimporttrain_one_epoch,evaluateimportutilsimporttransformsasTdefget_transform(train):transforms=[]transforms.append(T.PILToTensor())iftrain:transforms.append(T.RandomHorizontalFlip(0.5))returnT.Compose(transforms)實(shí)踐任務(wù)4:調(diào)用工具訓(xùn)練模型實(shí)踐任務(wù)dataset=PennFudanDataset('./dataset/PennFudanPed',get_transform(train=True))dataset_test=PennFudanDataset('./dataset/PennFudanPed',get_transform(train=False))indices=torch.randperm(len(dataset)).tolist()dataset=torch.utils.data.Subset(dataset,indices[:-50])dataset_test=torch.utils.data.Subset(dataset_test,indices[-50:])代碼實(shí)現(xiàn)實(shí)踐任務(wù)dataset=PennFudanDataset('./dataset/PennFudanPed',get_transform(train=True))dataset_test=PennFudanDataset('./dataset/PennFudanPed',get_transform(train=False))indices=torch.randperm(len(dataset)).tolist()dataset=torch.utils.data.Subset(dataset,indices[:-50])dataset_test=torch.utils.data.Subset(dataset_test,indices[-50:])代碼實(shí)現(xiàn)實(shí)踐任務(wù)#definetrainingandvalidationdataloadersdata_loader=torch.utils.data.DataLoader(dataset,batch_size=1,shuffle=True,num_workers=1,collate_fn=utils.collate_fn)data_loader_test=torch.utils.data.DataLoader(dataset_test,batch_size=1,shuffle=False,num_workers=1,collate_fn=utils.collate_fn)#getthemodelusingourhelperfunctionmodel=get_model_instance_segmentation(num_classes)model.to(device)代碼實(shí)現(xiàn)實(shí)踐任務(wù)#definetrainingandvalidationdataloadersdata_loader=torch.utils.data.DataLoader(dataset,batch_size=1,shuffle=True,num_workers=1,collate_fn=utils.collate_fn)data_loader_test=torch.utils.data.DataLoader(dataset_test,batch_size=1,shuffle=False,num_workers=1,collate_fn=utils.collate_fn)#getthemodelusingourhelperfunctionmodel=get_model_instance_segmentation(num_classes)model.to(device)代碼實(shí)現(xiàn)實(shí)踐任務(wù)#constructanoptimizerparams=[pforpinmodel.parameters()ifp.requires_grad]optimizer=torch.optim.SGD(params,lr=0.002,momentum=0.9,weight_decay=0.0005)#andalearningrateschedulerlr_scheduler=torch.optim.lr_scheduler.StepLR(optimizer,step_size=3,gamma=0.1)#let'strainitfor10epochsnum_epochs=10代碼實(shí)現(xiàn)實(shí)踐任務(wù)forepochinrange(num_epochs):#trainforoneepoch,printingevery10iterationstrain_one_epoch(model,optimizer,data_loader,device,epoch,print_freq=10)#updatethelearningratelr_scheduler.step()#evaluateonthetestdatasetevaluate(model,data_loader_test,device=device)代碼實(shí)現(xiàn)實(shí)踐任務(wù)經(jīng)過(guò)一段時(shí)間的運(yùn)行,最終得到了訓(xùn)練的第1個(gè)epoch后的mAP結(jié)果。主要的輸出包含兩部分,即目標(biāo)檢測(cè)和實(shí)例分割。IoUmetric:bboxAveragePrecision(AP)@[IoU=0.50:0.95|area=all|maxDets=100]=

0.747AveragePrecision(AP)@[IoU=0.50|area=all|maxDets=100]=

0.988AverageRecall

(AP)@[IoU=0.75|area=all|maxDets=100]=

0.902AverageRecall

(AP)@[IoU=0.50:0.95|area=small|maxDets=100]=

0.365......實(shí)踐任務(wù)5:評(píng)估和測(cè)試模型第六節(jié)

不同優(yōu)化器對(duì)比神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)目的是找到使損失函數(shù)的值盡可能小的參數(shù),這是尋找最優(yōu)參數(shù)的問(wèn)題,解決這個(gè)問(wèn)題的過(guò)程稱為最優(yōu)化。優(yōu)化器是用來(lái)更新和計(jì)算模型參數(shù)以最小化損失函數(shù)的工具。有許多不同的優(yōu)化器,包括最基本的梯度下降(SGD)、帶動(dòng)量的梯度下降、RMSProp、Adam等。參數(shù)的更新第六節(jié)

不同優(yōu)化器對(duì)比有一個(gè)性情古怪的探險(xiǎn)家。他在廣袤的干旱地帶旅行,堅(jiān)持尋找幽深的山谷。他的目標(biāo)是要到達(dá)最深的谷底(他稱之為“至深之地”)。并且,他給自己制定了兩個(gè)嚴(yán)格的“規(guī)定”:一個(gè)是不看地圖;另一個(gè)是把眼睛蒙上。因此,他并不知道最深的谷底在這個(gè)廣袤的大地的何處,而且什么也看不見(jiàn)。在這么嚴(yán)苛的條件下,這位探險(xiǎn)家如何前往“至深之地”呢?他要如何邁步,才能迅速找到“至深之地”呢?探險(xiǎn)家的故事第六節(jié)

不同優(yōu)化器對(duì)比探險(xiǎn)家雖然看不到周圍的情況,但是能夠知道當(dāng)前所在位置的坡度(通過(guò)腳底感受地面的傾斜情況)。于是,朝著當(dāng)前所在位置的坡度最大的方向前進(jìn),就是SGD的策略。勇敢的探險(xiǎn)家心里可能想著只要重復(fù)這一策略,總有一天可以到達(dá)“至深之地”。探險(xiǎn)家的故事第六節(jié)

不同優(yōu)化器對(duì)比SGD(StochasticGradientDescent):最基本的梯度下降方法,每次更新都使用一部分樣本(一個(gè)或多個(gè))來(lái)計(jì)算梯度。SGD第六節(jié)

不同優(yōu)化器對(duì)比每一輪迭代使用的訓(xùn)練數(shù)據(jù)一般是小批量的,沒(méi)有使用全部的訓(xùn)練數(shù)據(jù),因此更新方向會(huì)發(fā)生鋸齒狀甚至隨機(jī)震蕩狀;某些梯度分量的值比另外一些分量的值要大的多,導(dǎo)致個(gè)別分量主導(dǎo)了梯度的更新方向,而期望的梯度更新方向卻行進(jìn)的非常緩慢。SGD的缺點(diǎn)第六節(jié)

不同優(yōu)化器對(duì)比Momentum:一種帶動(dòng)量的梯度下降方法,它在更新參數(shù)時(shí)不僅考慮當(dāng)前的梯度,還考慮上一次的梯度方向,這樣可以加速收斂,并有可能跳過(guò)局部最小值。將一段時(shí)間內(nèi)的梯度向量進(jìn)行了加權(quán)平均,一定程度上消除了更新過(guò)程中的不確定性因素(如擺動(dòng)現(xiàn)象),使得梯度更新朝著一個(gè)越來(lái)越明確的方向前進(jìn)。Momentum第六節(jié)

不同優(yōu)化器對(duì)比RMSProp:一種自適應(yīng)學(xué)習(xí)率的方法,它通過(guò)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率來(lái)加速訓(xùn)練。RMSProp第六節(jié)

不同優(yōu)化器對(duì)比Adam(AdaptiveMomentEstimation):結(jié)合了Momentum和RMSProp的思想,既考慮了過(guò)去的梯度的指數(shù)衰減平均值,也考慮了過(guò)去的平方梯度的指數(shù)衰減平均值。Adam以下是一個(gè)簡(jiǎn)單的使用SGD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論