大家好,我是微學AI,今天給大家?guī)砩疃葘W習實戰(zhàn)23(進階版)-語義分割實戰(zhàn),實現(xiàn)人物圖像摳圖的效果。語義分割是計算機視覺中的一項重要任務,其目標是將圖像中的每個像素都分配一個語義類別標簽。與傳統(tǒng)的目標檢測或分類任務不同,語義分割不僅需要識別圖像中存在的對象以及它們的位置,還需要對每個像素進行精細的分類。
一、計算機視覺中的語義分割應用
語義分割可以在許多應用中使用,例如自動駕駛車輛感知道路、醫(yī)學圖像分析中的腫瘤分割、視頻監(jiān)控中的行人追蹤等等。通常情況下,語義分割使用卷積神經(jīng)網(wǎng)絡來完成,例如 U-Net、FCN、DeepLab 等。通過這些深度學習模型的訓練和優(yōu)化,我們可以更好地理解圖像中的語義信息,并且可以實現(xiàn)高效準確的語義分割任務。
二、人物語義分割應用
要實現(xiàn)語義分割功能,我們需要使用預訓練過的神經(jīng)網(wǎng)絡模型。我將使用DeepLabV3模型,可以在Pytorch中直接獲取。
原始的DeepLab方法基于空洞卷積將全連接層替換為可學習的參數(shù),以解決上采樣問題。比較于普通的卷積,空洞卷積可以增加卷積核的感受野,從而保留更多的上下文信息。同時使用空洞率(dilation rate)可以一定程度上改變輸出的分辨率。
在傳統(tǒng)的卷積操作中,每個卷積核只處理其鄰近像素的信息,而使用空洞卷積后,卷積核可以 "看到" 更多的像素,即更大的感受野,從而能夠更好地捕獲圖像中的全局信息。同時,空洞卷積還增加了卷積層的有效感受野大小,這樣可以避免在保持分辨率的同時丟棄有用信息的問題。
空洞卷積創(chuàng)建案例:
import torch
# 定義空洞卷積層
conv = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, dilation=2)
# 定義輸入
input = torch.randn(1, 3, 32, 32)
# 進行空洞卷積操作
output = conv(input)
# 查看輸出形狀
print(output.shape)
三、DeepLabV3模型
在DeepLabV3中,使用了ASPP模塊。ASPP是通過在空洞卷積中設置不同的采樣率來捕捉圖像中各種尺度的信息,這種多尺度信息獲取方式可以幫助模型更好地捕捉到不同大小物體的輪廓和上下文信息。最后,將這些并行的分支進行平均池化和1x1卷積來融合,并上采樣得到像素級別的分割結(jié)果。
?DeepLabV3模型訓練過程:
1. 數(shù)據(jù)準備:準備帶有像素級注釋的圖像數(shù)據(jù)集。例如,PASCAL VOC, Cityscapes或COCO等數(shù)據(jù)集。每個像素都需要有一個對應的標簽,表示該像素屬于哪個類別。
2. 數(shù)據(jù)增強:通過圖像旋轉(zhuǎn)、縮放、翻轉(zhuǎn)等方式對訓練數(shù)據(jù)進行增強,以增加訓練數(shù)據(jù)的多樣性并提高模型的泛化能力。
3. 網(wǎng)絡構(gòu)建:DeepLabV3包括一個用于特征提取的卷積神經(jīng)網(wǎng)絡(例如ResNet、Xception等)以及一個叫作ASPP(Atrous Spatial Pyramid Pooling,空洞空間金字塔池化)的模塊。ASPP模塊包含了多個不同采樣率的空洞卷積層,用于捕捉不同尺度的信息。這些并行的分支在最后通過一個全局平均池化和一個1x1卷積層進行融合。
4. 損失函數(shù):通常使用交叉熵損失來衡量模型預測結(jié)果和真實結(jié)果之間的差異。通過計算每個像素預測類別的概率分布與真實標簽的概率分布之間的交叉熵損失,來更新模型的權(quán)重。
5. 優(yōu)化算法:選擇優(yōu)化器(如SGD、Adam等)來最小化損失函數(shù)。通過不斷地輸入圖像,模型進行前向傳播并計算損失,然后通過反向傳播來更新權(quán)重。
6. 模型訓練:重復迭代優(yōu)化步驟,直到達到一定的收斂條件,例如固定周期、損失平穩(wěn)等。
7. 模型評估和驗證:在驗證集和測試集上評估模型的性能,根據(jù)需要調(diào)整超參數(shù)、網(wǎng)絡結(jié)構(gòu)等。?
四、代碼實現(xiàn)
import torch
import torchvision
import numpy as np
from PIL import Image
from torchvision import transforms
def segment_person(image_path, output_path):
# 加載預訓練的DeepLabV3模型
model = torchvision.models.segmentation.deeplabv3_resnet101(pretrained=True)
model.eval()
# 讀取圖片并轉(zhuǎn)換
input_image = Image.open(image_path).convert("RGB")
preprocess = transforms.Compose([
transforms.Resize((256, 256)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0)
#if torch.cuda.is_available():
input_batch = input_batch.to('cpu')
model.to('cpu')
with torch.no_grad():
output = model(input_batch)['out'][0]
output = torch.argmax(output, dim=0).byte().cpu().numpy()
# 人物語義分割標簽 (在PASCAL VOC數(shù)據(jù)集中,人物用標簽15表示)
output_person = (output == 15)
# 應用掩碼
mask = output_person.astype(np.uint8) * 255
mask = Image.fromarray(mask)
masked_image = Image.composite(input_image.resize((256, 256)), Image.new('RGB', mask.size), mask)
masked_image.save(output_path)
# 使用方法
input_image_path = "111.png"
output_image_path = "222.png"
segment_person(input_image_path, output_image_path)
運行結(jié)果:我們輸入111.png圖片, 輸出222.png圖片
圖中的女生是通過AI生成的。有感興趣AI生成圖片的也可以關注:
深度學習實戰(zhàn)9-文本生成圖像-本地電腦實現(xiàn)text2img。
往期作品:
?深度學習實戰(zhàn)項目
1.深度學習實戰(zhàn)1-(keras框架)企業(yè)數(shù)據(jù)分析與預測
2.深度學習實戰(zhàn)2-(keras框架)企業(yè)信用評級與預測
3.深度學習實戰(zhàn)3-文本卷積神經(jīng)網(wǎng)絡(TextCNN)新聞文本分類
4.深度學習實戰(zhàn)4-卷積神經(jīng)網(wǎng)絡(DenseNet)數(shù)學圖形識別+題目模式識別
5.深度學習實戰(zhàn)5-卷積神經(jīng)網(wǎng)絡(CNN)中文OCR識別項目
6.深度學習實戰(zhàn)6-卷積神經(jīng)網(wǎng)絡(Pytorch)+聚類分析實現(xiàn)空氣質(zhì)量與天氣預測
7.深度學習實戰(zhàn)7-電商產(chǎn)品評論的情感分析
8.深度學習實戰(zhàn)8-生活照片轉(zhuǎn)化漫畫照片應用
9.深度學習實戰(zhàn)9-文本生成圖像-本地電腦實現(xiàn)text2img
10.深度學習實戰(zhàn)10-數(shù)學公式識別-將圖片轉(zhuǎn)換為Latex(img2Latex)
11.深度學習實戰(zhàn)11(進階版)-BERT模型的微調(diào)應用-文本分類案例
12.深度學習實戰(zhàn)12(進階版)-利用Dewarp實現(xiàn)文本扭曲矯正
13.深度學習實戰(zhàn)13(進階版)-文本糾錯功能,經(jīng)常寫錯別字的小伙伴的福星
14.深度學習實戰(zhàn)14(進階版)-手寫文字OCR識別,手寫筆記也可以識別了
15.深度學習實戰(zhàn)15(進階版)-讓機器進行閱讀理解+你可以變成出題者提問
16.深度學習實戰(zhàn)16(進階版)-虛擬截圖識別文字-可以做紙質(zhì)合同和表格識別
17.深度學習實戰(zhàn)17(進階版)-智能輔助編輯平臺系統(tǒng)的搭建與開發(fā)案例
18.深度學習實戰(zhàn)18(進階版)-NLP的15項任務大融合系統(tǒng),可實現(xiàn)市面上你能想到的NLP任務
19.深度學習實戰(zhàn)19(進階版)-SpeakGPT的本地實現(xiàn)部署測試,基于ChatGPT在自己的平臺實現(xiàn)SpeakGPT功能
20.深度學習實戰(zhàn)20(進階版)-文件智能搜索系統(tǒng),可以根據(jù)文件內(nèi)容進行關鍵詞搜索,快速找到文件
21.深度學習實戰(zhàn)21(進階版)-AI實體百科搜索,任何名詞都可搜索到的百科全書
22.深度學習實戰(zhàn)22(進階版)-AI漫畫視頻生成模型,做自己的漫畫視頻
...(待更新)文章來源:http://www.zghlxwxcb.cn/news/detail-541598.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-541598.html
到了這里,關于深度學習實戰(zhàn)23(進階版)-語義分割實戰(zhàn),實現(xiàn)人物圖像摳圖的效果(計算機視覺)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!