打通图像增强tensorflow版Unet_v2代码

本文介绍了如何在基础的U-net代码基础上,通过ImageDataGenerator进行图像增强,包括旋转、平移、错切等操作,并详细展示了数据合并、分裂及保存到.npy模型文件的过程。作者还提供了完整代码,涵盖了数据预处理、模型构建与实验结果对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

数据path结构

代码调试

构建数据生成器对象

Augmentation函数

doAugmentate函数

 splitMerge函数

保存到.npy模型文件

完整代码

data.py

unet.py

实验结果

基础v1版:打通tensorflow版Unet_v1代码_WRStop的博客-优快云博客

代码来源&参考,改动都是在此基础上改动:U-net:运行你的第一个U-net进行图像分割_decouples的博客-优快云博客

数据path结构

代码调试

只更改了data.py,增加图像增强

构建数据生成器对象

# 数据生成器对象
		self.datagen = ImageDataGenerator(
							        rotation_range=0.2, # 随机旋转度数
							        width_shift_range=0.05, # 随机水平平移
							        height_shift_range=0.05, # 随机竖直平移
							        shear_range=0.05, # 随机错切变换
							        zoom_range=0.05,  # 随机放大
							        horizontal_flip=True, # 水平翻转
							        fill_mode='nearest') # 填充方式

Augmentation函数

合并train与label图片,save到merge路径下

 (0.tif)

doAugmentate函数

增强一张图片,其中imgnum为一张图片增强后的结果图片有几张,保存到aug_merge中

(这里的图片是Augmentation函数后的merge图片,所以也是对merge图片进行增强,输出的结果图片也是merge的)

以下都以增强两次即imgnum=2为例

        

                                             0_0_3144.tif                                  0_0_5058.tif

 splitMerge函数

将aug_merge中增强过的merge图片分开为aug_train与aug_label

        ​​​​​​​

0_0_3144_train.tif                           0_0_5058_train.tif 

         

                                       0_0_3144_label.tif                         0_0_5058_label.tif        

保存到.npy模型文件

与v1版的文件路径、文件名和加载方式有较大区别,

文件路径:aug_train和aug_label下分0-29文件夹分别存储增强后的图像

create_train_data中

imgs = glob.glob(self.data_path+"/*/*."+self.img_type) # 添加/*
imgs.sort(key=lambda x: int(x.split('/')[4][:-10])) #3,-4更改为4,-10

文件名:从单纯的0.tif变成0_0_3144_label.tif,所以在匹配上花了些时间

create_train_data中

		for imgname in imgs:
			midname = imgname[23:imgname.rindex("_")] #[imgname.rindex("/")+1:]更改为[23:32]
			img = load_img(self.data_path + "/" + midname + "_train.tif",grayscale = True)
			label = load_img(self.label_path + "/" + midname + "_label.tif",grayscale = True)
			img = img_to_array(img)
			label = img_to_array(label)
			
			imgdatas[i] = img
			imglabels[i] = label
			if i % 100 == 0:
				print('Done: {0}/{1} train'.format(i, len(imgs)))
			i += 1

完整代码

data.py

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import numpy as np 
import os
import glob
import cv2
#from libtiff import TIFF

class myAugmentation(object):
	
	"""
	一个用于图像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值