【圖像語義分割的實(shí)現(xiàn)案例分析4600字】_第1頁
【圖像語義分割的實(shí)現(xiàn)案例分析4600字】_第2頁
【圖像語義分割的實(shí)現(xiàn)案例分析4600字】_第3頁
【圖像語義分割的實(shí)現(xiàn)案例分析4600字】_第4頁
【圖像語義分割的實(shí)現(xiàn)案例分析4600字】_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第PAGE圖像語義分割的實(shí)現(xiàn)案例分析圖像分割的實(shí)現(xiàn)過程主要是進(jìn)行模塊封裝,總共有四個(gè)模塊。圖像預(yù)處理模塊,圖像分割網(wǎng)絡(luò)實(shí)現(xiàn)模塊,訓(xùn)練結(jié)果收集模塊,模型訓(xùn)練模塊。圖像預(yù)處理模塊的作用是對圖像數(shù)據(jù)集進(jìn)行圖像增強(qiáng)和歸一化處理。圖像分割實(shí)現(xiàn)網(wǎng)絡(luò)模塊是對分割網(wǎng)絡(luò)模型的實(shí)現(xiàn)過程的封裝。模型訓(xùn)練模塊。訓(xùn)練結(jié)果收集模塊中有對tensorflow中IoU函數(shù)的重寫,利用元組對評測指標(biāo)IoU、損失值、正確率的存儲以及利用繪圖函數(shù)進(jìn)行結(jié)果預(yù)測。模型訓(xùn)練模塊中調(diào)用模型進(jìn)行預(yù)測,獲取損失值,根據(jù)損失值和所有可訓(xùn)練參數(shù)計(jì)算梯度,通過優(yōu)化器對梯度優(yōu)化,最后進(jìn)行指標(biāo)記錄。1.1圖像語義分割實(shí)現(xiàn)平臺Tensorflow框架是Goole一款開源框架,是基于“數(shù)據(jù)流圖”進(jìn)行數(shù)據(jù)計(jì)算的編程模型。Tensorflow框架以數(shù)據(jù)進(jìn)行驅(qū)動(dòng),其提升了并行計(jì)算的能力。因?yàn)槠鋽?shù)據(jù)流圖的特點(diǎn)常用于神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)領(lǐng)域。利用tensorflow進(jìn)行軟件開發(fā)的神經(jīng)網(wǎng)絡(luò),以張量表示數(shù)據(jù),以數(shù)據(jù)流圖搭建網(wǎng)絡(luò)結(jié)構(gòu),利用session進(jìn)行數(shù)據(jù)計(jì)算,優(yōu)化權(quán)重參數(shù),通過迭代訓(xùn)練得到模型。具有面向?qū)ο筇攸c(diǎn)的keras是基于Tensorflow框架的python開源神經(jīng)網(wǎng)絡(luò)庫,支持卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神將網(wǎng)絡(luò)或者二者的結(jié)合,利用keras神經(jīng)網(wǎng)絡(luò)API可以簡短快速的將想法轉(zhuǎn)換為模型設(shè)計(jì)。1.2圖像預(yù)處理模塊1.2.1圖像和標(biāo)簽的路徑讀取利用glob函數(shù)獲取測試集和訓(xùn)練集中的圖像路徑和標(biāo)簽路徑。為了防止獲取的圖像路徑和標(biāo)簽路徑亂序?qū)е骂A(yù)測結(jié)果不理想,利用split函數(shù)截取路徑名,獲取路徑編號,然后利用sort函數(shù)按照編號排序,使得圖像路徑和標(biāo)簽路徑一一對應(yīng)。為了防止后面的模型訓(xùn)練和預(yù)測結(jié)果偏向于某一類,利用random隨機(jī)函數(shù)對圖像路徑進(jìn)行亂序。根據(jù)路徑讀取圖像和標(biāo)簽,彩色圖像的讀取需要解碼所以利用read_file函數(shù)和decode_png函數(shù)讀取彩色圖像,利用read_file函數(shù)讀取標(biāo)簽。對圖像和標(biāo)簽過程進(jìn)行函數(shù)封裝,在加載圖像和標(biāo)簽的過程中根據(jù)路徑讀取圖像和標(biāo)簽。1.2.2數(shù)據(jù)增強(qiáng)為了防止過擬合和在訓(xùn)練途中數(shù)據(jù)的梯度消失導(dǎo)致結(jié)果不理想需要利用數(shù)據(jù)增強(qiáng)增加訓(xùn)練集中的圖像和標(biāo)簽的數(shù)量。常見的數(shù)據(jù)增強(qiáng)的方法有隨機(jī)翻轉(zhuǎn)、隨機(jī)裁剪、尺度變換、平移變換、旋轉(zhuǎn)變換、添加髙斯噪聲等。本論文利用隨機(jī)翻轉(zhuǎn)和隨機(jī)裁剪進(jìn)行數(shù)據(jù)增強(qiáng)。因?yàn)闇y試集中的圖像和標(biāo)簽過大,在訓(xùn)練過程中可能會(huì)導(dǎo)致訓(xùn)練過程中顯存溢出,并且如果對過大的圖像和標(biāo)簽進(jìn)行裁剪那么保留的關(guān)鍵信息將會(huì)很少,需要對輸入模型的圖像和標(biāo)簽進(jìn)行縮放,將圖像尺寸壓縮為256*256。不過不能直接將圖像尺寸縮小為256*256,因?yàn)殡S機(jī)裁剪圖像也會(huì)縮放圖像的大小。所以首先將圖像尺寸縮小為280*280,為了防止隨機(jī)裁剪過程中裁剪的位置不一致影響預(yù)測結(jié)果,需要利用concat函數(shù)將圖像和標(biāo)簽在空間上進(jìn)行疊加再根據(jù)隨機(jī)數(shù)判斷是否裁剪,然后再將圖像和標(biāo)簽縮放為256*256,最后利用高維切片獲取隨即裁剪后的圖像和標(biāo)簽。對隨機(jī)裁剪過程進(jìn)行函數(shù)封裝,在加載圖像和標(biāo)簽的過程中對圖像和標(biāo)簽進(jìn)行隨機(jī)裁剪。1.2.3彩色圖像預(yù)處理為了提高精度和使得訓(xùn)練網(wǎng)絡(luò)的收斂性加快,需要對彩色圖像做預(yù)處理,彩色圖像取值范圍[-1,1]。因?yàn)闃?biāo)簽是需要的分類數(shù)和彩色圖像的分類標(biāo)準(zhǔn)所以不需要對標(biāo)簽做歸一化處理。對歸一化過程進(jìn)行函數(shù)封裝,在加載圖像和標(biāo)簽的過程中對圖像做歸一化處理。1.2.4圖像和標(biāo)簽的數(shù)據(jù)加載封裝圖像和標(biāo)簽加載過程,在此模塊中調(diào)用讀取圖像和標(biāo)簽的函數(shù)封裝。對讀取的圖像和標(biāo)簽使用隨機(jī)裁剪。設(shè)置隨機(jī)數(shù),根據(jù)隨機(jī)數(shù)判斷是否調(diào)用flip_left_right函數(shù)進(jìn)行圖像和標(biāo)簽的隨機(jī)翻轉(zhuǎn)。圖1.1隨機(jī)加載一張圖片和標(biāo)簽1.2.5參數(shù)設(shè)置根據(jù)電腦自身顯存設(shè)置BUFFER_SIZE和BCTCH_SIZE。BUFFER_SIZE是在緩存中圖像的訓(xùn)練個(gè)數(shù),控制緩存大小,在緩存中進(jìn)行迭代訓(xùn)練。同時(shí)BUFFER_SIZE也是一個(gè)亂序緩沖區(qū),它可以使得在訓(xùn)練的中獲取足夠的信息量。如果設(shè)置的BUFFER_SIZE超過顯存緩存那么在訓(xùn)練中途會(huì)報(bào)錯(cuò)。BCTCH_SIZE是圖像每一次在緩存中進(jìn)行替換的圖像數(shù)量。設(shè)置auto值,其作用是讓電腦根據(jù)cpu的核個(gè)數(shù)自動(dòng)選擇讀取線程的個(gè)數(shù)。然后進(jìn)行圖像加載和管道輸入。開始開始讀取圖像和標(biāo)簽的路徑路徑讀取讀取圖像和標(biāo)簽對圖像和標(biāo)簽做圖像增強(qiáng)對圖像和標(biāo)簽做歸一化處理返回圖像和標(biāo)簽結(jié)束圖1.2圖像加載過程流程圖1.3圖像分割網(wǎng)絡(luò)實(shí)現(xiàn)模塊1.1.1U-Net網(wǎng)絡(luò)的實(shí)現(xiàn)U-Net[5]網(wǎng)絡(luò)的實(shí)現(xiàn)主要是通過自定義下采樣層和上采樣層,封裝下采樣層DownSample和上采樣層UpSample,然后在U-Net[5]模型的定義中調(diào)用封裝的下采樣層和封裝的上采樣層實(shí)現(xiàn)的。下采樣層用于特征提取獲取圖像信息,是卷積層、卷積層和池化層的堆疊。DownSample初始化,設(shè)置第一層卷積和第二層卷積參數(shù)并且第一層和第二層卷積參數(shù)相同,卷積需要輸入的參數(shù)由卷積和、卷積內(nèi)核大小、填充方式。卷積和參數(shù)需要在調(diào)用函數(shù)的時(shí)候進(jìn)行設(shè)置。卷積內(nèi)核大小默認(rèn)設(shè)置為3。因?yàn)檩斎牒洼敵龅膱D像需要大小一致,設(shè)置填充方式為same。對封裝的下采樣層創(chuàng)建前向傳播過程,輸入?yún)?shù)一個(gè)是圖像,一個(gè)boolean值變量。因?yàn)閁-Net[5]網(wǎng)絡(luò)第一層不需要進(jìn)行下采樣,設(shè)置一個(gè)boolean值變量的作用是通過boolean值判斷是否進(jìn)行下采樣,可以進(jìn)行代碼復(fù)用。函數(shù)主體通過boolean值判斷是否對圖像進(jìn)行下采樣,對圖像做第一層卷積,卷積激活,對圖像做第二層卷積卷積激活。卷積卷積卷積下采樣池化圖1.3下采樣層封裝上采樣層將縮小的圖像進(jìn)行放大,由卷積層、卷積層和反卷積堆疊而成。UpSample初始化,卷積參數(shù)的設(shè)置和下采樣中的卷積參數(shù)一致,反卷積中的參數(shù)有輸出空間維數(shù)、卷積內(nèi)核、填充方式、卷積沿高度和寬度的步長膨脹寬度stride。輸出空間維數(shù)需要同下采樣層的空間維數(shù)一致,因?yàn)樯喜蓸訉雍拖虏蓸訉有枰M(jìn)行concat;卷積內(nèi)核為3;填充方式same;因?yàn)閳D像需要放大,設(shè)置stride值為2。對封裝的上采樣層創(chuàng)建前向傳播過程,輸入?yún)?shù)是圖像。函數(shù)主體是對圖像做第一層卷積卷積激活,對圖像做第二層卷積卷積激活,上采樣。卷積卷積卷積反卷積圖1.4上采樣層封裝Net模型的定義由DownSample和UpSample組合而成。在U-Net模型的初始中通過對DownSample和UpSample調(diào)用,實(shí)現(xiàn)上采樣和下采樣過程的層級設(shè)計(jì),上采樣和下采樣過程通道數(shù)需要意義一一對應(yīng),因?yàn)樯喜蓸舆^程需要利用concat獲取下采樣過程的特征信息。在模型的前向傳播中,調(diào)用初始化好的模塊,即可完成模型的定義。1.1.2FCN網(wǎng)絡(luò)的實(shí)現(xiàn)由于FCN[6]具有跳階結(jié)構(gòu),上采樣層的信息需要同下采樣信息在像素上直接相加從而獲得輸出。利用預(yù)訓(xùn)練網(wǎng)絡(luò)VGG[3]獲取下采樣信息,因?yàn)轭A(yù)訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)同F(xiàn)CN[6]網(wǎng)絡(luò)沒有進(jìn)行上采樣的網(wǎng)絡(luò)結(jié)構(gòu)一致。如何獲取中間層輸出?利用get_layer(層名).output方法獲取中間層,因?yàn)轭A(yù)訓(xùn)練網(wǎng)絡(luò)各個(gè)層之間線性性弱,可以通過通過中間層創(chuàng)建一個(gè)新的繼承預(yù)訓(xùn)練網(wǎng)絡(luò)網(wǎng)絡(luò)結(jié)構(gòu)的子模型,然后調(diào)用這個(gè)子模型獲取中間層輸出,用于跳階結(jié)構(gòu)。利用函數(shù)API創(chuàng)建子模型,inputs就是預(yù)訓(xùn)練網(wǎng)絡(luò),outputs就是需要的中間層,這個(gè)子模型會(huì)繼承預(yù)訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)。因?yàn)榇嬖诙鄠€(gè)下采樣層,需要獲得多個(gè)下采樣輸出,所以需要?jiǎng)?chuàng)建多輸出模型。將各層層名保存在列表中,通過列表表達(dá)式從層名列表中獲得各個(gè)中間層。和創(chuàng)建單輸出模型類似創(chuàng)建多輸出模型,不過outputs為中間層列表。不過由于多輸出模型繼承預(yù)訓(xùn)練網(wǎng)絡(luò),當(dāng)前模型不能訓(xùn)練。在每一次進(jìn)行調(diào)節(jié)結(jié)構(gòu)之前需要對獲取的中間層輸出多進(jìn)行一次卷積,這樣做的目的是為了進(jìn)行特征提取,然后再進(jìn)行add操作。1.1.3LinkNet網(wǎng)絡(luò)的實(shí)現(xiàn)LinkNet[7]網(wǎng)絡(luò)類似于U-Net[5]網(wǎng)絡(luò),主要是通過卷積和反卷積實(shí)現(xiàn)??紤]到代碼的復(fù)用性,定義卷積塊和反卷積塊,然后封裝編碼塊和解碼塊,最后調(diào)用編碼塊和解碼塊,進(jìn)行模塊“組裝”形成LinkNet[7]網(wǎng)絡(luò)。卷積塊包括卷積層;數(shù)據(jù)歸一化層,激活層。在卷積層中定義卷積和個(gè)數(shù)。卷積核kernel_size。卷積沿高度和寬度的步長膨脹寬度strides,strides默認(rèn)參數(shù)為1,經(jīng)歷一次卷積后,圖像大小不發(fā)生改變。填充方式默認(rèn)為same填充。數(shù)據(jù)歸一化層,對輸入數(shù)據(jù)進(jìn)行歸一化處理,防止在訓(xùn)練途中數(shù)據(jù)發(fā)生改變導(dǎo)致梯度消失或者梯度爆炸。激活層,用于卷積激活,為了使神經(jīng)網(wǎng)絡(luò)的擬合程度更高,激活函數(shù)常為非線性函數(shù)。這里的激活層利用線性函數(shù)relu激活,因?yàn)閞elu函數(shù)是分段函數(shù),經(jīng)過組合后的神經(jīng)網(wǎng)絡(luò)非線性。對輸入圖像進(jìn)行卷積特征提取,然后對圖像做歸一化批處理,最后激活卷積。反卷積塊的封裝和卷積塊類似。不過反卷積塊是進(jìn)行的反卷積,strides的默認(rèn)參數(shù)為2,即每經(jīng)歷一次反卷積,圖像和標(biāo)簽放大一次。因?yàn)槟P偷淖詈筝敵鍪且粋€(gè)反卷積,所以不需要對反卷積進(jìn)行激活,所以設(shè)置一個(gè)boolean值變量,用來判斷是否進(jìn)行反卷積激活。編碼器模塊由一個(gè)縮放和一個(gè)沒有縮放殘差結(jié)構(gòu)組成。進(jìn)行縮放的殘差結(jié)構(gòu):調(diào)用卷積模塊,設(shè)置strides為2,將圖像大小縮小1/2,再進(jìn)行一次大小不發(fā)生改變的卷積,然后將第一次卷積結(jié)果同第二次卷積結(jié)果相加。沒有進(jìn)行縮放的殘差結(jié)構(gòu):對輸入進(jìn)行兩次大小不發(fā)生改變的卷積,將輸入和兩次卷積后的結(jié)果相加。解碼器模塊的主要的作用是對圖像進(jìn)行放大,使得圖片的輸出和輸入大小一致,由卷積層、反卷積層和卷積層組成。通過調(diào)用卷積模塊和反卷積模塊完成。LinkNet網(wǎng)絡(luò)通過“組裝”編碼器模塊和解碼器模塊組成,編碼器和解碼器需要一一對應(yīng),因?yàn)榻獯a器輸出需要同對應(yīng)的編碼器輸出相加然后再進(jìn)行解碼。1.1.4U-Net網(wǎng)絡(luò)的修改在U-Net[5]網(wǎng)絡(luò)中添加殘差網(wǎng)絡(luò),在下采樣中后的兩次卷積輸出直接加上下采樣結(jié)果。其網(wǎng)絡(luò)結(jié)構(gòu)如下。卷積卷積卷積下采樣add圖1.5U-Net網(wǎng)絡(luò)中添加殘差塊1.4訓(xùn)練結(jié)果收集模塊1.4.1語義分割的優(yōu)化器的選擇幾種常用的優(yōu)化器:SGD,Momentum,AdaGrad,RMSProp,Adam。隨機(jī)梯度下降算法SGD,每次只使用一個(gè)樣本來進(jìn)行更新梯度,因?yàn)槭且粋€(gè)樣本進(jìn)行更新的原因,SGD速度比較快,能夠根據(jù)新的樣本實(shí)時(shí)更新模型,但是其梯度震蕩嚴(yán)重。動(dòng)量Momentum,動(dòng)量即矢量,具有方向,用來描述梯度。如果獲取到的梯度方向和前一時(shí)刻的梯度方向一致,那么梯度則會(huì)增強(qiáng);如果獲取到的梯度方向和前一時(shí)刻的梯度方向不一致,那么梯度則會(huì)變?nèi)鮗10]。自適應(yīng)梯度算法AdaGrad,當(dāng)開始訓(xùn)練的時(shí)候?qū)W習(xí)率應(yīng)當(dāng)設(shè)置為比較大,因?yàn)榇藭r(shí)離最優(yōu)點(diǎn)比較遠(yuǎn),當(dāng)訓(xùn)練快要結(jié)束的時(shí)候,應(yīng)該降低學(xué)習(xí)率,因?yàn)榇丝屉x最優(yōu)點(diǎn)比較近。自適應(yīng)算法能夠根據(jù)自身狀態(tài)自動(dòng)調(diào)節(jié)學(xué)習(xí)率。因?yàn)榉帜傅拇笮≈饕汕皌時(shí)刻的梯度的平方和決定,而梯度的平方和變化過快可能導(dǎo)致訓(xùn)練提前結(jié)束[10]。(1.1)gt是t時(shí)刻的模型的梯度。tgt2均方根傳播RMSProp,RMSProp是在AdaGrad的基礎(chǔ)上添加了一個(gè)衰減系數(shù)。這個(gè)衰減系數(shù)可以用來來控制獲取的歷史信息的多少,也可以認(rèn)為是一種指數(shù)加權(quán)的方式,目的是消除梯度下降時(shí)候的梯度擺動(dòng)。Adam優(yōu)化器可以看作是RMSProp和Momentum的結(jié)合,Adam優(yōu)化器考慮到了梯度的一階矩估計(jì)、二階矩估計(jì),對兩者進(jìn)行了綜合考慮后獲得的更新步長。其特點(diǎn)有收斂快,易調(diào)參,內(nèi)存需求少,可以自動(dòng)調(diào)節(jié)學(xué)習(xí)率,不受梯度影響取值等。綜合條件比較下來Adam優(yōu)化器算是性能不錯(cuò)的優(yōu)化器。所以本論文的優(yōu)化器選擇Adam1.4.2語義分割的評價(jià)指標(biāo)因?yàn)闃?biāo)簽的取值范圍是[0,33]不是獨(dú)熱編碼所以使用的損失函數(shù)是SparseCategoricalCrossentropy。語義分割的一個(gè)重要評價(jià)標(biāo)準(zhǔn)交并比IoU。(1.2)因?yàn)轭A(yù)測輸出的結(jié)果是一個(gè)長度為34張量,但是MeanIoU方法需要的是一個(gè)數(shù)值,所以需要重寫MeanIoU方法,取預(yù)測輸出張量的最大值作為預(yù)測輸入結(jié)果,然后和真實(shí)值做比較獲取評測標(biāo)準(zhǔn)IoU。利用metrics()函數(shù)獲取語義分割的loss函數(shù)和acc函數(shù),用來獲取語義分割的損失值和準(zhǔn)確率指標(biāo)。因

溫馨提示

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

評論

0/150

提交評論