国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于圖像分割的預(yù)處理 transform

這篇具有很好參考價(jià)值的文章主要介紹了關(guān)于圖像分割的預(yù)處理 transform。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1. 介紹

2. 關(guān)于分割中的 resize 問題

3. 分割的 transform

3.1 隨機(jī)縮放?RandomResize

3.2 隨機(jī)水平翻轉(zhuǎn)?RandomHorizontalFlip

3.3?隨機(jī)豎直翻轉(zhuǎn)?RandomVerticalFlip

3.4 隨機(jī)裁剪?RandomCrop

3.5 ToTensor

3.6 normalization

3.7?Compose

3.8 中心裁剪

3.9 Resize 縮放

4. 預(yù)處理結(jié)果可視化


1. 介紹

圖像分割的預(yù)處理不像分類那樣好操作,因?yàn)榉诸惖膌abel就是一個(gè)類別,圖像增強(qiáng)的操作都是對(duì)原始圖像操作的。

圖像分割的label和img是嚴(yán)格對(duì)應(yīng)的,或者說兩者的空間分辨率(h*w)一樣且像素點(diǎn)的對(duì)應(yīng)位置都不能改變。否則,監(jiān)督學(xué)習(xí)就失去了作用。而深度學(xué)習(xí)中,數(shù)據(jù)增強(qiáng)是不必可少的,對(duì)于數(shù)據(jù)更少的醫(yī)學(xué)圖像來說,數(shù)據(jù)增強(qiáng)更加必不可少。

所以,本章主要聊聊 圖像分割中的數(shù)據(jù)增強(qiáng)

下面是DRIVE數(shù)據(jù)集的預(yù)處理可視化:

關(guān)于圖像分割的預(yù)處理 transform

2. 關(guān)于分割中的 resize 問題

圖像分割的resize問題,本人一直沒有弄明白....

分割最后的目的應(yīng)該是將前景從圖像中口出來,那么兩者的尺寸肯定需要保證一樣的。然而,例如unet一類的網(wǎng)絡(luò)輸入都是固定大小480*480,那么最后分割的分辨率也就是480*480,顯然已經(jīng)和最原始的圖像不一樣了

現(xiàn)在不管是分類,還是分割網(wǎng)絡(luò)的輸入都不需要和原論文一致了,網(wǎng)絡(luò)里面都做了優(yōu)化,例如最大池化層等等....

不管網(wǎng)絡(luò)如何優(yōu)化,大部分預(yù)處理中都增加了resize的操作。那么能保證輸入圖像和輸出的分辨率一樣,但是最原始的圖像還是不能一致。例如,原始512*512,resize 480*480 輸入給網(wǎng)絡(luò)產(chǎn)生 480*480 的分割圖像,480和512已經(jīng)不一樣了

雖然最后分割出來的圖像也可以通過resize還原成最原始的尺寸。但是插值又成了問題,更好的線性插值會(huì)導(dǎo)致分割圖像的灰度值改變。例如分割的圖是二值圖像,背景為0前景為255,通過插值會(huì)導(dǎo)致出現(xiàn)0-255的任何一個(gè)數(shù)字,變成了灰度圖像。當(dāng)然最近鄰插值可以避免這一問題,但最近鄰插值顯然在圖像處理中不是一個(gè)好的選擇。

之前想過,用雙線性插值resize分割圖像,然后利用閾值處理產(chǎn)生二值圖。但是,這樣的方法不僅僅麻煩,還有很多的問題,且違背了end to end的思想

下面純個(gè)人瞎想...僅供參考...

所以說,解決的辦法就是訓(xùn)練的圖像隨機(jī)的resize,例如需要給網(wǎng)絡(luò)的輸入是480*480,那么隨機(jī)將訓(xùn)練圖像變成縮放成例如300-500之之間任意的大小,再裁剪成480*480輸入給分割網(wǎng)絡(luò)

這樣的好處就是,網(wǎng)絡(luò)就不會(huì)對(duì)單純的圖像縮放敏感

那么,再隨機(jī)分割的時(shí)候,就不需要resize,直接輸入原圖就行了

3. 分割的 transform

如下,分割任務(wù)中圖像預(yù)處理的測(cè)試代碼

其中就只要保證img和label是同時(shí)變換即可

關(guān)于圖像分割的預(yù)處理 transform

3.1 隨機(jī)縮放?RandomResize

如下,在給定的min和max直接隨機(jī)生成一個(gè)整數(shù),然后resize即可。

分割的label圖像要采用最近鄰算法,否則resize之后的label就不是二值圖像

class RandomResize(object):
    def __init__(self, min_size, max_size=None):
        self.min_size = min_size
        if max_size is None:
            max_size = min_size
        self.max_size = max_size

    def __call__(self, image, target):
        size = random.randint(self.min_size, self.max_size)
        # 這里size傳入的是int類型,所以是將圖像的最小邊長(zhǎng)縮放到size大小
        image = F.resize(image, size)
        target = F.resize(target, size, interpolation=T.InterpolationMode.NEAREST)
        return image, target

3.2 隨機(jī)水平翻轉(zhuǎn)?RandomHorizontalFlip

flip_prob 就是翻轉(zhuǎn)的概率

class RandomHorizontalFlip(object):
    def __init__(self, flip_prob):
        self.flip_prob = flip_prob

    def __call__(self, image, target):
        if random.random() < self.flip_prob:
            image = F.hflip(image)
            target = F.hflip(target)
        return image, target

3.3?隨機(jī)豎直翻轉(zhuǎn)?RandomVerticalFlip

和水平翻轉(zhuǎn)的一樣

class RandomVerticalFlip(object):
    def __init__(self, flip_prob):
        self.flip_prob = flip_prob

    def __call__(self, image, target):
        if random.random() < self.flip_prob:
            image = F.vflip(image)
            target = F.vflip(target)
        return image, target

3.4 隨機(jī)裁剪?RandomCrop

隨機(jī)裁剪的代碼如下,需要注意的是,因?yàn)閳D像很可能不足裁剪的大小,所以需要填充

class RandomCrop(object):
    def __init__(self, size):
        self.size = size

    def __call__(self, image, target):
        image = pad_if_smaller(image, self.size)
        target = pad_if_smaller(target, self.size, fill=255)
        crop_params = T.RandomCrop.get_params(image, (self.size, self.size))
        image = F.crop(image, *crop_params)
        target = F.crop(target, *crop_params)
        return image, target

填充的代碼,這里填充255代表不敢興趣的區(qū)域

def pad_if_smaller(img, size, fill=0):
    # 如果圖像最小邊長(zhǎng)小于給定size,則用數(shù)值fill進(jìn)行padding
    min_size = min(img.size)
    if min_size < size:
        ow, oh = img.size
        padh = size - oh if oh < size else 0
        padw = size - ow if ow < size else 0
        img = F.pad(img, (0, 0, padw, padh), fill=fill)
    return img

3.5 ToTensor

這里label不能進(jìn)行官方實(shí)現(xiàn)的totensor方法,因?yàn)闅w一化,前景像素的灰度值就會(huì)被改變

dtype 是因?yàn)橐褂媒徊骒負(fù)p失,需要為整型,且label的維度中不能有channel

class ToTensor(object):
    def __call__(self, image, target):
        image = F.to_tensor(image)
        target = torch.as_tensor(np.array(target), dtype=torch.int64)
        return image, target

3.6 normalization

normalization 的實(shí)現(xiàn)也很簡(jiǎn)單

class Normalize(object):
    def __init__(self, mean, std):
        self.mean = mean
        self.std = std

    def __call__(self, image, target):
        image = F.normalize(image, mean=self.mean, std=self.std)
        return image, target

3.7?Compose

將transform 逐個(gè)實(shí)現(xiàn)就行了

class Compose(object):
    def __init__(self, transforms):
        self.transforms = transforms

    def __call__(self, image, target):
        for t in self.transforms:
            image, target = t(image, target)
        return image, target

3.8 中心裁剪

class CenterCrop(object):
    def __init__(self, size):
        self.size = size

    def __call__(self, image, target):
        image = F.center_crop(image, self.size)
        target = F.center_crop(target, self.size)
        return image, target

3.9 Resize 縮放

? ? ? ? image = F.resize(image,(self.size,self.size)) 可以縮放成width = height

# 將圖像和標(biāo)簽縮放
class Resize(object):
    def __init__(self, size:list):
        self.size = size

    def __call__(self, image, target):
        image = F.resize(image, self.size)    
        target = F.resize(target, self.size, interpolation=T.InterpolationMode.NEAREST)
        return image, target

4. 預(yù)處理結(jié)果可視化

dataset里面改成這樣就行了

關(guān)于圖像分割的預(yù)處理 transform

加載完數(shù)據(jù)這樣調(diào)用即可

關(guān)于圖像分割的預(yù)處理 transform

測(cè)試代碼:

label 中灰度值只有0 1 255

label 中沒有 channel

# 可視化數(shù)據(jù)
def plot(data_loader):
    plt.figure(figsize=(12,8))
    imgs,labels = data_loader
    for i,(x,y) in enumerate(zip(imgs,labels)):
        x = np.transpose(x.numpy(),(1,2,0))
        x[:,:,0] = x[:,:,0]*0.127 + 0.709       # 去 normalization
        x[:,:,1] = x[:,:,1]*0.079 + 0.381
        x[:,:,2] = x[:,:,2]*0.043 + 0.224
        y = y.numpy()

        # print(np.unique(y))   # 0 1 255
        # print(x.shape)      # 480*480*3
        # print(y.shape)      # 480*480

        plt.subplot(2,4,i+1)
        plt.imshow(x)

        plt.subplot(2,4,i+5)
        plt.imshow(y)
    plt.show()

顯示結(jié)果:

關(guān)于圖像分割的預(yù)處理 transform

在dataset 里面,將前景像素改成120,就可以看到label的細(xì)節(jié)

關(guān)于圖像分割的預(yù)處理 transform

?關(guān)于圖像分割的預(yù)處理 transform文章來源地址http://www.zghlxwxcb.cn/news/detail-440689.html

到了這里,關(guān)于關(guān)于圖像分割的預(yù)處理 transform的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • torchvision.transforms 數(shù)據(jù)預(yù)處理:ToTensor()

    ToTensor() 是pytorch中的數(shù)據(jù)預(yù)處理函數(shù),包含在 torchvision.transforms 模塊下。一般用于處理圖像數(shù)據(jù),所以其處理對(duì)象是 PIL Image 和 numpy.ndarray 。 必須要聲明不能只看函數(shù)名,就以為 ToTensor() 只是將圖像轉(zhuǎn)為 tensor,其實(shí)它的功能不止于此 看一下 ToTensor() 函數(shù)的源碼: 大意是:

    2024年02月02日
    瀏覽(23)
  • 數(shù)據(jù)預(yù)處理——fit()函數(shù),transform()函數(shù),fit_transform()函數(shù)

    數(shù)據(jù)預(yù)處理——fit()函數(shù),transform()函數(shù),fit_transform()函數(shù)

    sklearn 中封裝的各種算法 調(diào)用之前都要 fit。 fit 相對(duì)于整個(gè)代碼而言,為后續(xù)API服務(wù), 用于從一個(gè)訓(xùn)練集中學(xué)習(xí)模型參數(shù),包括歸一化時(shí)要用到的均值,標(biāo)準(zhǔn)偏差 fit 之后,可以調(diào)用各種API方法, transform 是其中之一。 fit_transform 與 transform 運(yùn)行結(jié)果一致,但是 fit 與 transfor

    2024年02月05日
    瀏覽(21)
  • Halcon 深度學(xué)習(xí)之語(yǔ)義分割 預(yù)處理 案例解析

    Halcon 深度學(xué)習(xí)之語(yǔ)義分割 預(yù)處理 案例解析

    聲明:本篇是個(gè)人針對(duì)于語(yǔ)義分割預(yù)處理案例的理解,有理解不到位或者錯(cuò)誤的地方,還望各位能夠給予指正,在此表示感謝! 例子名稱: segment_pill_defects_deep_learning_1_preprocess ①:導(dǎo)入原圖文件夾,標(biāo)注文件夾,類別信息等 ②:通過Deep Learning Tool 工具創(chuàng)建的語(yǔ)義分割文件【

    2024年02月09日
    瀏覽(18)
  • 圖像預(yù)處理算法————灰度化處理

    圖像預(yù)處理算法————灰度化處理

    圖像預(yù)處理算法適合在FPGA上完成,原理簡(jiǎn)單且需要快速處理,通常有灰度化、中值、均值濾波等,以及顏色空間轉(zhuǎn)換算法。 灰度圖像是一種特殊的彩色圖像(R=G=B的彩色圖像) 只有一種顏色分量,單通道的0-255 方法:一般有分量法、最大值法、平均值法、加權(quán)平均法四種方

    2024年01月17日
    瀏覽(25)
  • 使用 Monai 和 PyTorch 預(yù)處理 3D Volumes以進(jìn)行腫瘤分割

    使用 Monai 和 PyTorch 預(yù)處理 3D Volumes以進(jìn)行腫瘤分割

    針對(duì)在使用傳統(tǒng)圖像處理工具時(shí)可能遇到的困難,深度學(xué)習(xí)已成為醫(yī)療保健領(lǐng)域的主要解決方案。 因?yàn)獒t(yī)學(xué)圖像比標(biāo)準(zhǔn)圖像更難處理(高對(duì)比度、人體的廣泛變化……)深度學(xué)習(xí)用于分類、對(duì)象檢測(cè),尤其是分割任務(wù)。 在分割方面,深度學(xué)習(xí)用于分割人體器官,如肝臟、肺

    2023年04月11日
    瀏覽(30)
  • 圖像預(yù)處理方法

    圖像預(yù)處理方法

    兩個(gè)基本的形態(tài)學(xué)操作是腐 和膨脹。他們 的變體構(gòu)成了開運(yùn)算 ,閉運(yùn)算, 梯度等。 根據(jù)卷積核的大小前景的所有像素會(huì)腐 掉 變?yōu)?0 ,所以前景物體會(huì)變小整幅圖像的白色區(qū)域會(huì)減少。 對(duì)于去除白噪聲很有用 也可以用來斷開兩個(gè) 在一塊的物體等。 函數(shù)原型: ?src: 輸入原

    2023年04月11日
    瀏覽(36)
  • 圖像預(yù)處理技術(shù)與算法

    圖像預(yù)處理是計(jì)算機(jī)視覺和圖像處理中非常關(guān)鍵的第一步,其目的是為了提高后續(xù)算法對(duì)原始圖像的識(shí)別、分析和理解能力。以下是一些主要的圖像預(yù)處理技術(shù): 1.圖像增強(qiáng): 對(duì)比度調(diào)整:通過直方圖均衡化(Histogram Equalization)等方法改善圖像整體或局部的對(duì)比度。 伽瑪校

    2024年02月20日
    瀏覽(35)
  • 【第十七屆智能車】智能車圖像處理(1)-圖像預(yù)處理

    【第十七屆智能車】智能車圖像處理(1)-圖像預(yù)處理

    本博客使用的硬件是逐飛總鉆風(fēng)130°無(wú)畸變攝像頭,采用的圖像分辨率為188*120,主控為CH32V307VCT6,使用DVI接口進(jìn)行連接。 我們?cè)诒敬伪荣愔胁捎玫氖穷^尾車總鉆風(fēng)攝像頭+中間車線性CCD的方案。這兩個(gè)感光部件各有優(yōu)劣,使用方式和圖像處理也大相徑庭。這里討論的是總鉆風(fēng)

    2024年02月08日
    瀏覽(26)
  • 使用 SKimage 的圖像預(yù)處理

    使用 SKimage 的圖像預(yù)處理

    介紹 圖像是視覺對(duì)象的二維表示,例如照片、繪畫或素描。在數(shù)字成像中,圖像存儲(chǔ)為像素值數(shù)組,其中每個(gè)像素代表圖像亮度和顏色的樣本。每個(gè)像素的顏色可以由一個(gè)或多個(gè)通道表示,如傳統(tǒng)彩色圖像中的紅色、綠色和藍(lán)色 (RGB) 通道。在本文中,你將學(xué)習(xí)各種圖像預(yù)處

    2024年02月03日
    瀏覽(28)
  • 圖像預(yù)處理 Tricks【1】:Contours

    圖像預(yù)處理 Tricks【1】:Contours

    輪廓可以簡(jiǎn)單地理解為連接所有連續(xù)點(diǎn)(沿物體邊界)的曲線,這些點(diǎn)通常具有相同的顏色或強(qiáng)度。 輪廓在圖像分析中具有重要意義,是物體形狀分析和對(duì)象檢測(cè)和識(shí)別的有用工具,是理解圖像語(yǔ)義信息的重要依據(jù)。 本文主要介紹了在 opencv 中,一些重要的用于處理物體輪廓

    2024年02月11日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包