1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        基于UNet網(wǎng)絡(luò)實(shí)現(xiàn)的人像分割 | 附數(shù)據(jù)集

        共 5686字,需瀏覽 12分鐘

         ·

        2021-10-02 20:25

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        主要內(nèi)容

        人像分割簡介
        UNet的簡介
        UNet實(shí)現(xiàn)人像分割
        人像分割簡介


        人像分割的相關(guān)應(yīng)用非常廣,例如基于人像分割可以實(shí)現(xiàn)背景的替換做出各種非??犰诺男Ч?。我們將訓(xùn)練數(shù)據(jù)擴(kuò)充到人體分割,那么我們就是對(duì)人體做美顏特效處理,同時(shí)對(duì)背景做其他的特效處理,這樣整張畫面就會(huì)變得更加有趣,更加提高顏值了,這里我們對(duì)人體前景做美顏調(diào)色處理,對(duì)背景做了以下特效:

        ①景深模糊效果,用來模擬雙攝聚焦效果;
        ②馬賽克效果
        ③縮放模糊效果
        ④運(yùn)動(dòng)模糊效果
        ⑤油畫效果
        ⑥線條漫畫效果
        ⑦Glow夢(mèng)幻效果
        ⑧鉛筆畫場(chǎng)景效果
        ⑨擴(kuò)散效果

        例子:




        例子來源:https://blog.csdn.net/Trent1985/article/details/80578841

        https://zhuanlan.zhihu.com/p/48080465 (實(shí)現(xiàn)背景灰化)

        而在在實(shí)現(xiàn)這些效果之前,所需要的一步操作都是需要將人像摳出來。今天的主要內(nèi)容是要介紹如何使用UNet實(shí)現(xiàn)人像分割。


        UNet的簡介

        UNet的結(jié)構(gòu)非常簡單,廣泛應(yīng)用于醫(yī)學(xué)圖像分割,2015年發(fā)表在 MICCAI,谷歌學(xué)術(shù)上目前引用量8894,可以看出來其影響力。

        UNet的結(jié)構(gòu),有兩個(gè)最大的特點(diǎn),U型結(jié)構(gòu)和skip-connection(如下圖)。


        UNet網(wǎng)絡(luò),類型于一個(gè)U字母:首先進(jìn)行Conv(兩次)+Pooling下采樣;然后Deconv反卷積進(jìn)行上采樣(部分采用resize+線性插值上采樣),crop之前的低層feature map,進(jìn)行融合;然后再次上采樣。重復(fù)這個(gè)過程,直到獲得輸出388x388x2的feature map,最后經(jīng)過softmax獲得output segment map??傮w來說與FCN思路非常類似。

        U-Net采用了與FCN完全不同的特征融合方式:拼接!

        參考資料:https://zhuanlan.zhihu.com/p/57437131

        https://www.zhihu.com/question/269914775/answer/586501606


        UNet實(shí)現(xiàn)人像分割


        該項(xiàng)目是基于 https://github.com/milesial/Pytorch-UNet (2.6k star 車輛分割)修改的,并提供人像分割的數(shù)據(jù)集(1.15G)。

        人像分割項(xiàng)目鏈接:https://github.com/leijue222/portrait-matting-unet-flask


        官方下載鏈接:http://www.cse.cuhk.edu.hk/leojia/projects/automatting/index.html

        或者:

        百度網(wǎng)盤:http://pan.baidu.com/s/1dE14537

        密碼:ndg8

        該項(xiàng)目已經(jīng)提供了預(yù)訓(xùn)練模型,如果你不想重新訓(xùn)練,可以自己clone下來,按照下面的操作一步一步運(yùn)行即可。


        環(huán)境配置

        • Python 3.6

        • PyTorch >= 1.1.0

        • Torchvision >= 0.3.0

        • Flask 1.1.1

        • future 0.18.2

        • matplotlib 3.1.3

        • numpy 1.16.0

        • Pillow 6.2.0

        • protobuf 3.11.3

        • tensorboard 1.14.0

        • tqdm==4.42.1

        # clone 項(xiàng)目git clone https://github.com/leijue222/portrait-matting-unet-flask.git
        # 進(jìn)入到文件夾中cd portrait-matting-unet-flask/
        #?準(zhǔn)備好一張待分割的人像圖片,運(yùn)行下面的代碼即可生成mask并保存python?predict.py?-i?image.jpg?-o?output.jpg

        作者提供的測(cè)試demo



        如果你想重新訓(xùn)練的話,也很容易,根據(jù)上面提供的數(shù)據(jù)集,將原圖和mask分別

        放置在 文件夾 data/imgs和 data/masks 路徑下即可


        然后運(yùn)行下面的代碼

        python train.py -e 200 -b 1 -l 0.1 -s 0.5 -v 15.0

        各個(gè)參數(shù)的含義


        -e 表示 epoch 數(shù)

        -b 表示?batch size

        -l 表示學(xué)習(xí)率

        -s 表示 scale

        -v 表示 驗(yàn)證集所占的百分比


        最后我們?cè)诳匆幌?UNet 網(wǎng)絡(luò)的核心代碼


        定義UNet 需要用的主要模塊

        class DoubleConv(nn.Module):????"""(convolution?=>?[BN]?=>?ReLU)?*?2"""    def __init__(self, in_channels, out_channels):        super().__init__()        self.double_conv = nn.Sequential(            nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1),            nn.BatchNorm2d(out_channels),            nn.ReLU(inplace=True),            nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1),            nn.BatchNorm2d(out_channels),            nn.ReLU(inplace=True)????????)    def forward(self, x):        return self.double_conv(x)
        class Down(nn.Module): """Downscaling with maxpool then double conv"""
        def __init__(self, in_channels, out_channels): super().__init__() self.maxpool_conv = nn.Sequential( nn.MaxPool2d(2), DoubleConv(in_channels, out_channels)????????) def forward(self, x): return self.maxpool_conv(x)
        class Up(nn.Module):????"""Upscaling?then?double?conv""" def __init__(self, in_channels, out_channels, bilinear=True):????????super().__init__() # if bilinear, use the normal convolutions to reduce the number of channels if bilinear: self.up = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True) else: self.up = nn.ConvTranspose2d(in_channels // 2, in_channels // 2, kernel_size=2, stride=2)
        self.conv = DoubleConv(in_channels, out_channels)
        def forward(self, x1, x2): x1 = self.up(x1) # input is CHW diffY = torch.tensor([x2.size()[2] - x1.size()[2]]) diffX = torch.tensor([x2.size()[3] - x1.size()[3]])
        x1 = F.pad(x1, [diffX // 2, diffX - diffX // 2, diffY // 2, diffY - diffY // 2]) x = torch.cat([x2, x1], dim=1)????????return?self.conv(x)
        class OutConv(nn.Module): def __init__(self, in_channels, out_channels): super(OutConv, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=1)
        def forward(self, x): return self.conv(x)

        利用上面定義好的模塊,輕松的實(shí)現(xiàn)UNet網(wǎng)絡(luò)

        class UNet(nn.Module):    def __init__(self, n_channels, n_classes, bilinear=True):        super(UNet, self).__init__()        self.n_channels = n_channels        self.n_classes = n_classes        self.bilinear = bilinear
        self.inc = DoubleConv(n_channels, 64) self.down1 = Down(64, 128) self.down2 = Down(128, 256) self.down3 = Down(256, 512) self.down4 = Down(512, 512) self.up1 = Up(1024, 256, bilinear) self.up2 = Up(512, 128, bilinear) self.up3 = Up(256, 64, bilinear) self.up4 = Up(128, 64, bilinear) self.outc = OutConv(64, n_classes)
        def forward(self, x): x1 = self.inc(x) x2 = self.down1(x1) x3 = self.down2(x2) x4 = self.down3(x3) x5 = self.down4(x4) x = self.up1(x5, x4) x = self.up2(x, x3) x = self.up3(x, x2) x = self.up4(x, x1) logits = self.outc(x) return logits


        資料匯總


        人像分割項(xiàng)目鏈接:https://github.com/leijue222/portrait-matting-unet-flask


        數(shù)據(jù)集下載

        百度網(wǎng)盤:http://pan.baidu.com/s/1dE14537

        密碼:ndg8


        官方下載鏈接:http://www.cse.cuhk.edu.hk/leojia/projects/automatting/index.html


        好消息,小白學(xué)視覺團(tuán)隊(duì)的知識(shí)星球開通啦,為了感謝大家的支持與厚愛,團(tuán)隊(duì)決定將價(jià)值149元的知識(shí)星球現(xiàn)時(shí)免費(fèi)加入。各位小伙伴們要抓住機(jī)會(huì)哦!


        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 68
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            狠狠插狠狠爱 | 国产毛片AV一区二区三区牛牛影视 | 美女草比 | 五月丁香激情综合 | 黄色片黄色片黄色片黄色片黄色片黄色片 | 一区二区三区日韩 | 美女靠逼视频下载 | 青青操原 | 暗网幼女 | 男性操女性 |