【GNN】圖神經網絡學習小結 and 筆記匯總
1166
2025-04-03
前言:
AI正在改變我們的生活,正在改變我們身邊的各行各業,但是這條通往智能世界的路并不平坦,其中一個巨大鴻溝就是AI人才的稀缺。在中國龐大的IT從業群體,AI開發者缺口達百萬級。
AI將成為全民普及性的技能,所以今天華為云EI為大家帶來《2020華為云AI實戰營》免費課程,大幅降低AI學習門檻,幫助龐大的軟件開發者群體快速掌握AI技能,把AI用起來。
課程主要內容包括圖像分類、物體檢測、圖像分割、人臉識別、OCR、視頻分析、自然語言處理和語音識別這八大熱門AI領域的基礎知識、經典數據集和經典算法的介紹,每章課程都是實戰案例,模型訓練、測試、評估全流程覆蓋,配合代碼講解和課后作業,幫助您掌握八大熱門AI領域的模型開發能力。
2020年華為云AI實戰營 第三章 圖像分割
一、 圖像分割介紹
1.1概述
圖像分割就是把圖像分成若干個特定的、具有獨特性質的區域并提出感興趣目標的技術和過程。它是由圖像處理到圖像分析的關鍵步驟。現有的圖像分割方法主要分以下幾類:基于閾值的分割方法、基于區域的分割方法、基于邊緣的分割方法以及基于特定理論的分割方法等。從數學角度來看,圖像分割是將數字圖像劃分成互不相交的區域的過程。圖像分割的過程也是一個標記過程,即把屬于同一區域的像素賦予相同的編號。
1.2實例分割任務
? 分類任務(Classification and localization):檢測出對象的位置和類別;不對同類型不同對象做出區別
? 目標檢測(Object detection):將圖片中的對象分別檢測出來并檢測其類別
? 語義分割(Semantic segmentation):將圖片進行像素級分割;不對同類型的不同對象進行區分
? 實例分割(Instance segmentation):同樣對圖片進行像素級分割;將不同的對象分別識別出來
1.3實例分割應用場景
實例分割是計算機領域中非常重要的領域,實例分割是目標檢測和語義分割的結合,在圖像中將目標檢測出來(目標檢測),然后對每個像素打上標簽(語義分割)。它在自動駕駛、醫學影像、高精度GIS識別和3D建模等場景都有廣泛的應用。
1.4 Mask RCNN完成過程
Mask R-CNN是大神何凱明的力作,將Object Detection與Semantic Segmentation合在了一起做。它的貢獻主要是以下幾點。
第一,神經網絡有了多個分支輸出。Mask R-CNN使用類似Faster R-CNN的框架,Faster R-CNN的輸出是物體的bounding box和類別,而Mask R-CNN則多了一個分支,用來預測物體的語義分割圖。也就是說神經網絡同時學習兩項任務,可以互相促進。
第二,在語義分割中使用Binary Mask。原來的語義分割預測類別需要使用0 1 2 3 4等數字代表各個類別。在Mask R-CNN中,檢測分支會預測類別。這時候分割只需要用0 1預測這個物體的形狀面具就行了。
第三,Mask R-CNN提出了RoiAlign用來替換Faster R-CNN中的RoiPooling。RoiPooling的思想是將輸入圖像中任意一塊區域對應到神經網絡特征圖中的對應區域。RoiPooling使用了化整的近似來尋找對應區域,導致對應關系與實際情況有偏移。這個偏移在分類任務中可以容忍,但對于精細度更高的分割則影響較大。
1.5模型關鍵概念
Backbone網絡、ResNet網絡、FPN、RPN、Rol Align和 Head 網絡
Mask R-CNN算法的主要步驟為:
首先,將輸入圖片送入到特征提取網絡得到特征圖。
然后對特征圖的每一個像素位置設定固定個數的ROI(也可以叫Anchor),然后將ROI區域送入RPN網絡進行二分類(前景和背景)以及坐標回歸,以獲得精煉后的ROI區域。
對上個步驟中獲得的ROI區域執行論文提出的ROIAlign操作,即先將原圖和feature map的pixel對應起來,然后將feature map和固定的feature對應起來。
最后對這些ROI區域進行多類別分類,候選框回歸和引入FCN生成Mask,完成分割任務。
1.6 COCO數據集介紹
COCO數據集
http://cocodataset.org/#home
COCO數據集,意為“Common Objects In Context”,是一組具有挑戰性的、高質量的計算機視覺數據集,是最先進的神經網絡,此名稱還用于命名這些數據集使用的格式。
該數據集的格式可以被高級神經網絡庫自動理解,例如Facebook的Detectron2,甚至還有專門為處理 COCO 格式的數據集而構建的工具,例如COCO- annotator和COCOapi。了解此數據集的表示方式將有助于使用和修改現有數據集以及創建自定義數據集。
COCO 是一個大規模的對象檢測、分割和字幕數據集。
COCO有幾個特點:
大規模目標檢測、分割以及圖片描述數據集超像素
物體分割、對象分割、語義識別、超過330K張圖像、80個分類類別、91個物體種類,每張圖片提供5種描述,一共250,000個人體關鍵點標注
小結:
這次學習我們了解了實例分割的概念和應用場景,mask R-CNN的結構以及關鍵概念,介紹了COCO數據集。
二、 Mask R-CNN算法完成實例分割
動手實踐
點擊鼠標右鍵,在新標簽頁中打開此鏈接https://nbviewer.jupyter.orgl,打開新的網頁再依次右鍵復制下面的實踐案例地址、粘貼到新打開網頁的搜索框中,按回車進行訪問
·實例分割Mask R-CNN實踐案例地址: https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_image_segmentation_mask/Mask%20R-CNN.ipynb
實例分割-Mask R-CNN 模型
這期我們將進行實例分割模型Mask R-CNN的訓練和測試的學習。在計算機視覺領域,實例分割(Instance Segmentation)是指從圖像中識別物體的各個實例,并逐個將實例進行像素級標注的任務。實例分割技術在自動駕駛、醫學影像、高精度GIS識別、3D建模輔助等領域有廣泛的應用。本示例將對實例分割領域經典的Mask R-CNN模型進行簡單介紹,并使用Matterport開源Mask R-CNN實現 ,展示如何在華為云ModelArts上訓練Mask R-CNN模型。
點擊跳轉至Mask R-CNN模型詳解
進入ModelArts
點擊如下鏈接:https://www.huaweicloud.com/product/modelarts.html ?, 進入ModelArts主頁。點擊“進入控制臺”按鈕,輸入用戶名和密碼登錄,進入ModelArts使用頁面
創建ModelArts notebook
下面,我們在ModelArts中創建一個notebook開發環境,ModelArts notebook提供網頁版的Python開發環境,可以方便的編寫、運行代碼,并查看運行結果。
第一步:在ModelArts服務主界面依次點擊“開發環境”、“創建”
第二步:填寫notebook所需的參數:
項目
建議填寫方式
名稱
自定義環境名稱
工作環境
Python3
資源池
選擇\"公共資源池\"即可
類型
GPU
規格
[限時免費]體驗規格GPU版
存儲配置
EVS
磁盤規格
5GB
第三步:配置好notebook參數后,點擊下一步,進入notebook信息預覽。確認無誤后,點擊“立即創建”
第四步:創建完成后,返回開發環境主界面,等待Notebook創建完畢后,打開Notebook,進行下一步操作
在ModelArts中創建開發環境
接下來,我們創建一個實際的開發環境,用于后續的實驗步驟。
第一步:點擊下圖所示的“打開”按鈕,進入剛剛創建的Notebook
第二步:創建一個Python3環境的的Notebook。點擊右上角的\"New\",然后選擇Tensorflow-1.13.1開發環境。 第三步:點擊左上方的文件名\"Untitled\",并輸入一個與本實驗相關的名稱
在Notebook中編寫并執行代碼
在Notebook中,我們輸入一個簡單的打印語句,然后點擊上方的運行按鈕,可以查看語句執行的結果:
開發環境準備好啦,接下來可以愉快地寫代碼啦!
Mask R-CNN模型訓練部分
第一步:導入相應的Python庫,準備預訓練模型
首先進行包的安裝與引用,對需要的代碼和數據進行下載
Mask R-CNN模型訓練部分
第一步:導入相應的Python庫,準備預訓練模型
第二步:生成相關配置項
我們定義Config類的子類MyTrainConfig,指定相關的參數,較為關鍵的參數有:
? NAME: Config的唯一名稱
? NUM_CLASSES: 分類的數量,COCO中共有80種物體+背景
? IMAGE_MIN_DIM和IMAGE_MAX_DIM: 圖片的最大和最小尺寸,我們生成固定的128x128的圖片,因此都設置為128
? TRAIN_ROIS_PER_IMAGE: 每張圖片上訓練的RoI個數
? STEPS_PER_EPOCH和VALIDATION_STEPS: 訓練和驗證時,每輪的step數量,減少step的數量可以加速訓練,但是檢測精度降低
第三步:準備數據集
我們使用封裝好的CocoDataset類,生成訓練集和驗證集。
創建模型
第一步:用"training"模式創建模型對象,用于形狀數據集的訓練
第二步:加載預訓練模型的權重
接下來,我們使用預訓練的模型,結合Shapes數據集,對模型進行訓練
訓練模型
Keras中的模型可以按照制定的層進行構建,在模型的train方法中,我們可以通過layers參數來指定特定的層進行訓練。layers參數有以下幾種預設值:
? heads:只訓練head網絡中的分類、mask和bbox回歸
? all: 所有的layer
? 3+: 訓練ResNet Stage3和后續Stage
? 4+: 訓練ResNet Stage4和后續Stage
? 5+: 訓練ResNet Stage5和后續Stage
此外,layers參數還支持正則表達式,按照匹配規則指定layer,可以調用model.keras_model.summary()查看各個層的名稱,然后按照需要指定要訓練的層。
使用Mask R-CNN 檢測圖片物體
第一步:定義InferenceConfig,并創建"Inference"模式的模型對象,將我們生成的模型權重信息加載進來
第二步:從驗證數據集中隨機選出一張圖片進行預測,并顯示結果
第三步:也可以通過上傳自己的圖片進行預測。
上傳圖片方式:點擊網頁的’upload‘按鈕,將本地圖片文件上傳,上傳后圖片所在的路徑存儲為test_path。
評估模型
這一步我們對自己訓練出的模型進行一個簡單的評估。計算模型的平均精度mAP(mean Average Precision)
總結:
圖像分割,顧名思義,這是將圖像分割為多個部分的過程。在這個過程中,圖像中的每個像素都與一個對象類型相關聯。圖像分割主要有兩種類型:語義分割和實例分割。
在語義分割中,所有相同類型的對象都使用一個類標簽進行標記,而在實例分割中,相似的對象使用各自的標簽。
在Mask R-CNN這個架構中,使用邊界框和語義分割將每個像素劃分為一組類別,對對象進行分類和局部化。對每個感興趣的區域得到一個分割掩碼,生成一個類標簽和一個邊界框作為最終輸出。該架構是Faster ?R-CNN的擴展。Faster R-CNN由regions proposer和深度卷積網絡和利局部檢測器組成。
注:本文整理自華為云社區內容共創活動之華為云AI實戰營:圖像分割
查看活動詳情:https://bbs.huaweicloud.com/blogs/308924
AI 云學院 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。