版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PyTorch深度學(xué)習(xí)項目教程
工業(yè)檢測圖像分割I(lǐng)MAGESEGMENTATION要點:UNet、數(shù)據(jù)標(biāo)注、第三方框架的使用
項目背景ProjectBackground問題:圖像分割是計算機視覺的基本任務(wù)之一。圖像分割旨在將圖像分成若干個互不重疊的區(qū)域或像素集合,使得每個區(qū)域內(nèi)的像素具有相似的特征。在工業(yè)檢測中,圖像分割主要用于將感興趣的目標(biāo)(如產(chǎn)品、物體或缺陷)與背景進行分離。解決:在傳統(tǒng)數(shù)字圖像處理中,一般采用閾值分割、區(qū)域生長、邊緣檢測、圖割等方法,自從深度學(xué)習(xí)技術(shù)普及以來,基于UNet結(jié)構(gòu)的分割模型迅速得到了推廣,通過大量的標(biāo)記數(shù)據(jù)進行訓(xùn)練,深度學(xué)習(xí)分割模型的準(zhǔn)確性大大超越了傳統(tǒng)算法。知識目標(biāo)KnowledgeObjectives理解圖像分割的基本概念及其在工業(yè)檢測中的應(yīng)用學(xué)習(xí)分割數(shù)據(jù)標(biāo)注的方法和技巧掌握圖像分割檢測算法的開發(fā)流程和關(guān)鍵步驟學(xué)習(xí)并深入理解UNet網(wǎng)絡(luò)結(jié)構(gòu)及其在圖像分割中的應(yīng)用能力目標(biāo)AbilityGoals能夠熟練使用LabelMe等工具完成分割數(shù)據(jù)的標(biāo)注工作能夠掌握將LabelMe生成的數(shù)據(jù)格式轉(zhuǎn)換為分割模型所支持的數(shù)據(jù)格式的方法能夠運用UNet網(wǎng)絡(luò)結(jié)構(gòu)開發(fā)圖像分割算法,并對其進行優(yōu)化和調(diào)整具備獨立解決實際項目中圖像分割問題的能力素養(yǎng)目標(biāo)ProfessionalAttainments具備從實際項目出發(fā),理解項目需求和應(yīng)用場景的能力能夠根據(jù)項目需求,獨立選取合適的開發(fā)工具和算法框架具備良好的創(chuàng)新意識和團隊協(xié)作能力,能夠在項目中發(fā)揮積極作用注重核心價值觀的培養(yǎng),將技術(shù)應(yīng)用于產(chǎn)業(yè)發(fā)展之中目錄任務(wù)1了解圖像分割需求任務(wù)2數(shù)據(jù)集構(gòu)建任務(wù)3圖像分割網(wǎng)絡(luò)訓(xùn)練任務(wù)4網(wǎng)絡(luò)推理及結(jié)果評價01任務(wù)1了解圖像分割需求1.1工業(yè)檢測的流程實際應(yīng)用中,需要分離不規(guī)則的圖像區(qū)域,方便進行下一步操作。為了實現(xiàn)硅鋼片料的測量,首先需要對圖像進行分割處理,然后再進行具體的測量1.2圖像分割圖像分割是圖像分析的第一步,是計算機視覺的基礎(chǔ),是圖像理解的重要組成部分,同時也是圖像處理中最困難的問題之一。所謂圖像分割是指根據(jù)灰度、彩色、空間紋理、幾何形狀等特征把圖像劃分為若干個互不相交的區(qū)域,使得這些特征在同一個區(qū)域內(nèi)表現(xiàn)出一致性或相似性,而在不同區(qū)域間表現(xiàn)出明顯的不同。簡單地說就是在一幅圖像中,把目標(biāo)從背景中分離出來。本質(zhì)來講,圖像分割是一種將像素分類的過程,分類的依據(jù)包括像素間的相似性、非連續(xù)性等。圖像分割包括語義分割和實例分割兩種類型。在語義分割中,所有物體都是同一類型的,所有相同類型的物體都使用一個類標(biāo)簽進行標(biāo)記,而在實例分割中,相似的物體可以有自己獨立的標(biāo)簽,類似于目標(biāo)檢測與語義分割的結(jié)合體。原始圖像語義分割實例分割02任務(wù)2數(shù)據(jù)集構(gòu)建2.1數(shù)據(jù)標(biāo)注提供的數(shù)據(jù)集位于:
圖像本身存在陰影、圖像背景存在明暗變化等,傳統(tǒng)的圖像分割,例如閾值、分水嶺算法等,在本圖像上分割效果較差難點:2.1數(shù)據(jù)標(biāo)注打開文件目錄創(chuàng)建標(biāo)注多邊形框“CTRL+”組合鍵放大圖像“EditPolygons”調(diào)整多邊形貼合待分割目標(biāo)LabelMe多邊形標(biāo)注2.2數(shù)據(jù)格式轉(zhuǎn)換及數(shù)據(jù)集劃分一般標(biāo)注后的數(shù)據(jù)需要轉(zhuǎn)為PNG格式的圖像,見源代碼文件夾下的“l(fā)abelme2voc.py”文件:2.2數(shù)據(jù)格式轉(zhuǎn)換及數(shù)據(jù)集劃分還需要進一步將索引格式的PNG轉(zhuǎn)為標(biāo)簽值為[0,1,2,…]的PNG:ann_dir=r'F:\sinline-data\voc\SegmentationClass'
ann_dest_dir=r'F:\sinline-data\voc\ann’
defgen_ann():
ann_files=os.listdir(ann_dir)
forann_fileinann_files:
file_ext=os.path.splitext(ann_file)
iffile_ext[1]=='.png':
#判斷是否為png文件
imgfile=ann_dir+'\\'+ann_file
destfile=ann_dest_dir+'\\'+ann_file
img=cv2.imread(imgfile,0)
newann=np.where(img!=0,1,img)
#print(np.max(new_matrix))
cv2.imwrite(destfile,newann)
jpg_dir=r'F:\sinline-data\voc\JPEGImages'
png_dest_dir=r'F:\sinline-data\voc\img'
defgen_png():
jpg_files=os.listdir(jpg_dir)
forjpg_fileinjpg_files:
file_ext=os.path.splitext(jpg_file)
iffile_ext[1]=='.jpg':
#判斷是否為png文件
imgfile=jpg_dir+'\\'+jpg_file
pngfile=png_dest_dir+'\\'+file_ext[0]+'.png'
img=cv2.imread(imgfile,0)
img=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
#print(np.max(new_matrix))
cv2.imwrite(pngfile,img)標(biāo)簽轉(zhuǎn)為PNG原JPG圖像轉(zhuǎn)為PNG2.2數(shù)據(jù)格式轉(zhuǎn)換及數(shù)據(jù)集劃分拷貝140張圖像到“images/training”文件夾拷貝20張圖像到“images/validation”下將同名的標(biāo)準(zhǔn)PNG文件分別拷貝到“annotations/training”和“annotations/validation”文件夾內(nèi)03任務(wù)3圖像分割網(wǎng)絡(luò)訓(xùn)練3.1UNet網(wǎng)絡(luò)概述UNet及其變體包括編碼器和解碼器兩部分。在編碼器部分進行特征提取,采用VGG或ResNet網(wǎng)絡(luò),每經(jīng)過一個池化層圖像縮小一半,包括原圖,一共有5次縮?。辉诮獯a器部分進行上采樣或反卷積操作,每上采樣一次,圖像放大一倍,并和特征提取部分對應(yīng)的通道位置進行矩陣拼接,這種拼接稱為特征融合。由于網(wǎng)絡(luò)結(jié)構(gòu)像U型,所以叫UNet網(wǎng)絡(luò)3.1UNet網(wǎng)絡(luò)概述1.編碼器(Encoder):卷積塊(ConvolutionalBlocks):編碼器由多個卷積塊組成,每個卷積塊包括卷積層(通常是3x3卷積核)、批量歸一化(BatchNormalization)和激活函數(shù)(通常是ReLU)。這些卷積塊幫助網(wǎng)絡(luò)學(xué)習(xí)圖像的低級特征。
-池化層(PoolingLayer):在每個卷積塊之后,通常會添加一個池化層,例如最大池化或平均池化,以減小特征圖的大小,同時保留重要信息。2.連接橋(Bridge):中心連接橋(CenterBridge):在編碼器的頂部,存在一個中心連接橋,它連接編碼器和解碼器的對應(yīng)層。這一層有助于在解碼器中還原丟失的空間信息。3.解碼器(Decoder):反卷積塊(DeconvolutionalBlocks):解碼器由多個反卷積塊組成,每個塊包含反卷積層(也稱為轉(zhuǎn)置卷積)、批量歸一化和激活函數(shù)。這些塊有助于學(xué)習(xí)圖像的高級語義信息。
上采樣層(UpsamplingLayer):在每個反卷積塊之后,可以添加上采樣層,以增加特征圖的大小,與編碼器中的池化層相對應(yīng)。連接操作(Concatenation):解碼器中的每一層都與編碼器中相應(yīng)的層連接,通過skipconnections(跳躍連接),這有助于將底層和高層的語義信息結(jié)合在一起。4.輸出層:1x1卷積層:最后,通過一個1x1卷積層,將解碼器的輸出映射為最終的分割結(jié)果。這一層的輸出通道數(shù)量通常等于分割任務(wù)中的類別數(shù)。UNet的整體結(jié)構(gòu)使其能夠同時利用圖像的低級和高級特征,從而在圖像分割任務(wù)中表現(xiàn)出色。這種結(jié)構(gòu)的設(shè)計也使得網(wǎng)絡(luò)對于輸入圖像的不同尺寸具有一定的魯棒性。3.2UNet網(wǎng)絡(luò)的建立UNet網(wǎng)絡(luò)結(jié)構(gòu)本身并不復(fù)雜,但是由于UNet可以內(nèi)嵌VGG、ResNet等多種網(wǎng)絡(luò)結(jié)構(gòu),同時UNet家族網(wǎng)絡(luò)結(jié)構(gòu)變體較多,因此圖像分割一般采用開源框架進行實現(xiàn)SMP框架:
pretrainedmodels==0.7.4efficientnet-pytorch==0.7.1timm==0.9.7albumentationstqdmpillowsix需要安裝的軟件包:3.2UNet網(wǎng)絡(luò)的建立環(huán)境配置:“File”→“Settings”→“PythonInterpreter”→“AddInterpreter”→“CondaEnvironment”在segmentation_models_pytorch/__init__.py添加from.importutils3.2UNet網(wǎng)絡(luò)的建立在segmentation_models_pytorch/__init__.py添加from.importutils3.3創(chuàng)建DataSet類classDatasetGuigang(BaseDataset):
""“GuiGangDataset.Readimages,applyaugmentationandpreprocessingtransformations.
Args:
images_dir(str):pathtoimagesfolder
masks_dir(str):pathtosegmentationmasksfolder
class_values(list):valuesofclassestoextractfromsegmentationmask
augmentation(albumentations.Compose):datatransfromationpipeline
(e.g.flip,scale,etc.)
preprocessing(albumentations.Compose):datapreprocessing
(e.g.noralization,shapemanipulation,etc.)
"""
CLASSES=['background','guigang',]
def__init__(
self,
images_dir,
masks_dir,
classes=None,
augmentation=None,
preprocessing=None,
):
self.ids=os.listdir(images_dir)
self.images_fps=[os.path.join(images_dir,image_id)forimage_idinself.ids]
self.masks_fps=[os.path.join(masks_dir,image_id)forimage_idinself.ids]
#convertstrnamestoclassvaluesonmasks
self.class_values=[self.CLASSES.index(cls.lower())forclsinclasses]
self.augmentation=augmentation
self.preprocessing=preprocessing
def__getitem__(self,i):
#readdata
image=cv2.imread(self.images_fps[i])
image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
mask=cv2.imread(self.masks_fps[i],0)
#extractcertainclassesfrommask(e.g.chips)
masks=[(mask==v)forvinself.class_values]
mask=np.stack(masks,axis=-1).astype('float')
#applyaugmentations
ifself.augmentation:
sample=self.augmentation(image=image,mask=mask)
image,mask=sample['image'],sample['mask']
#applypreprocessing
ifself.preprocessing:
sample=self.preprocessing(image=image,mask=mask)
image,mask=sample['image'],sample['mask']
returnimage,mask
def__len__(self):
returnlen(self.ids)
開源框架中對于數(shù)據(jù)集的格式有自己的要求可以根據(jù)示例程序進行修改滿足模型訓(xùn)練讀寫要求即可3.3創(chuàng)建DataSet類SMP框架中引用了第三方的數(shù)據(jù)增強庫,這個庫在構(gòu)建自己的深度學(xué)習(xí)項目時也可以應(yīng)用importalbumentationsasalbudefget_training_augmentation():
train_transform=[
albu.HorizontalFlip(p=0.5),
#albu.PadIfNeeded(min_height=512,min_width=512,always_apply=True,border_mode=0),
#albu.PadIfNeeded(2112,2112),
albu.Resize(height=1024,width=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 檔案員競聘演講稿
- 讀書心得體會
- 龍年元旦聯(lián)歡晚會閉幕詞(9篇)
- 新教材高考地理二輪復(fù)習(xí)一8類識圖技法專項訓(xùn)練技法8區(qū)域分布圖判讀含答案
- 第二十五章 銳角的三角比(單元重點綜合測試)
- 統(tǒng)編版語文二年級上學(xué)期期末備考真題分類匯編專題04 名篇名句默寫 (含答案)
- 陜西省西安市曲江第一小學(xué)2024-2025學(xué)年三年級上學(xué)期期中學(xué)業(yè)水平測試科學(xué)試題(無答案)
- 廣東省汕尾市華大實驗學(xué)校2024-2025學(xué)年第一學(xué)期期中考試九年級化學(xué)試卷
- 采礦權(quán)購買合同范本
- 廣州居民租房協(xié)議格式
- 蘇教版二年級上冊數(shù)學(xué) 7的乘法口訣 教學(xué)課件
- 功能主義基本理論和思想發(fā)展
- SAPAPO快速指引
- 總裁辦部門職責(zé)文件
- 音樂教師述職報告
- 英語語法入門筆記(崔榮容-)(共43頁)
- LS風(fēng)險矩陣評價準(zhǔn)則(3頁)
- 機房維護表格-運維部
- 安全標(biāo)識中英文可直接打印
- 小學(xué)四年級上冊音樂-第8課《龍里格龍》--人音版(簡譜)(19張)ppt課件
- 1π到100π表比較全
評論
0/150
提交評論