日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > pytorch >内容正文

pytorch

unet图片数据增强_numpy实现深度学习遥感图像语义分割数据增强(支持多波段)

發(fā)布時(shí)間:2025/4/16 pytorch 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unet图片数据增强_numpy实现深度学习遥感图像语义分割数据增强(支持多波段) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

數(shù)據(jù)增強(qiáng)是指對(duì)訓(xùn)練樣本數(shù)據(jù)進(jìn)行某種變換操作,從而生成新數(shù)據(jù)的過程。數(shù)據(jù)增強(qiáng)的根本目的是得到充足的樣本數(shù)據(jù)量,避免模型訓(xùn)練過程中產(chǎn)生過擬合現(xiàn)象。

正文

對(duì)于遙感影像來說,由于成像過程傳感器對(duì)同一地物在不同角度拍攝會(huì)在影像上展現(xiàn)出不同的位置和形態(tài),所以經(jīng)過變換的樣本可以使模型更好地學(xué)習(xí)地物的旋轉(zhuǎn)不變的特征,從而更好地適應(yīng)不同形態(tài)的圖像。因此我們對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行幾何變換(包括水平翻轉(zhuǎn)、豎直翻轉(zhuǎn)以及對(duì)角翻轉(zhuǎn))的數(shù)據(jù)增強(qiáng)操作。原圖像水平翻轉(zhuǎn)垂直翻轉(zhuǎn)對(duì)角翻轉(zhuǎn)

代碼實(shí)現(xiàn):

因?yàn)槿绻嗖ǘ蔚脑?#xff0c;利用OpenCV對(duì)圖像進(jìn)行翻轉(zhuǎn)就會(huì)報(bào)錯(cuò),所以我們使用numpy進(jìn)行翻轉(zhuǎn)的實(shí)現(xiàn)。

import gdal

import numpy as np

import os

import cv2

# 讀取tif數(shù)據(jù)集

def readTif(fileName, xoff = 0, yoff = 0, data_width = 0, data_height = 0):

dataset = gdal.Open(fileName)

if dataset == None:

print(fileName + "文件無法打開")

# 柵格矩陣的列數(shù)

width = dataset.RasterXSize

# 柵格矩陣的行數(shù)

height = dataset.RasterYSize

# 波段數(shù)

bands = dataset.RasterCount

# 獲取數(shù)據(jù)

if(data_width == 0 and data_height == 0):

data_width = width

data_height = height

data = dataset.ReadAsArray(xoff, yoff, data_width, data_height)

# 獲取仿射矩陣信息

geotrans = dataset.GetGeoTransform()

# 獲取投影信息

proj = dataset.GetProjection()

return width, height, bands, data, geotrans, proj

# 保存tif文件函數(shù)

def writeTiff(im_data, im_geotrans, im_proj, path):

if 'int8' in im_data.dtype.name:

datatype = gdal.GDT_Byte

elif 'int16' in im_data.dtype.name:

datatype = gdal.GDT_UInt16

else:

datatype = gdal.GDT_Float32

if len(im_data.shape) == 3:

im_bands, im_height, im_width = im_data.shape

elif len(im_data.shape) == 2:

im_data = np.array([im_data])

im_bands, im_height, im_width = im_data.shape

#創(chuàng)建文件

driver = gdal.GetDriverByName("GTiff")

dataset = driver.Create(path, int(im_width), int(im_height), int(im_bands), datatype)

if(dataset!= None):

dataset.SetGeoTransform(im_geotrans) #寫入仿射變換參數(shù)

dataset.SetProjection(im_proj) #寫入投影

for i in range(im_bands):

dataset.GetRasterBand(i + 1).WriteArray(im_data[i])

del dataset

train_image_path = r"Data\train\image"

train_label_path = r"Data\train\label"

# 進(jìn)行幾何變換數(shù)據(jù)增強(qiáng)

imageList = os.listdir(train_image_path)

labelList = os.listdir(train_label_path)

tran_num = len(imageList) + 1

for i in range(len(imageList)):

# 圖像

img_file = train_image_path + "\\" + imageList[i]

im_width, im_height, im_bands, im_data, im_geotrans, im_proj = readTif(img_file)

# 標(biāo)簽

label_file = train_label_path + "\\" + labelList[i]

label = cv2.imread(label_file)

# 圖像水平翻轉(zhuǎn)

im_data_hor = np.flip(im_data, axis = 2)

hor_path = train_image_path + "\\" + str(tran_num) + imageList[i][-4:]

writeTiff(im_data_hor, im_geotrans, im_proj, hor_path)

# 標(biāo)簽水平翻轉(zhuǎn)

Hor = cv2.flip(label, 1)

hor_path = train_label_path + "\\" + str(tran_num) + labelList[i][-4:]

cv2.imwrite(hor_path, Hor)

tran_num += 1

# 圖像垂直翻轉(zhuǎn)

im_data_vec = np.flip(im_data, axis = 1)

vec_path = train_image_path + "\\" + str(tran_num) + imageList[i][-4:]

writeTiff(im_data_vec, im_geotrans, im_proj, vec_path)

# 標(biāo)簽垂直翻轉(zhuǎn)

Vec = cv2.flip(label, 0)

vec_path = train_label_path + "\\" + str(tran_num) + labelList[i][-4:]

cv2.imwrite(vec_path, Vec)

tran_num += 1

# 圖像對(duì)角鏡像

im_data_dia = np.flip(im_data_vec, axis = 2)

dia_path = train_image_path + "\\" + str(tran_num) + imageList[i][-4:]

writeTiff(im_data_dia, im_geotrans, im_proj, dia_path)

# 標(biāo)簽對(duì)角鏡像

Dia = cv2.flip(label, -1)

dia_path = train_label_path + "\\" + str(tran_num) + labelList[i][-4:]

cv2.imwrite(dia_path, Dia)

tran_num += 1

后記

有問題歡迎留言評(píng)論,覺得不錯(cuò)可以動(dòng)動(dòng)手指點(diǎn)個(gè)贊同&喜歡

我的其他文字:馨意:keras遙感圖像Unet語(yǔ)義分割(支持多波段&多類)?zhuanlan.zhihu.com馨意:遙感大圖像深度學(xué)習(xí)忽略邊緣(劃窗)預(yù)測(cè)?zhuanlan.zhihu.com

總結(jié)

以上是生活随笔為你收集整理的unet图片数据增强_numpy实现深度学习遥感图像语义分割数据增强(支持多波段)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。