unet网络python代码详解_Keras:Unet网络实现多类语义分割方式

本文介绍了如何用Keras实现Unet网络进行多类语义分割,包括训练模型和测试模型的代码示例,以及模型效果的展示。通过实例展示了在医学图像等领域应用的潜力。
摘要由CSDN通过智能技术生成

1 介绍

u-net最初是用来对医学图像的语义分割,后来也有人将其应用于其他领域。但大多还是用来进行二分类,即将原始图像分成两个灰度级或者色度,依次找到图像中感兴趣的目标部分。

本文主要利用u-net网络结构实现了多类的语义分割,并展示了部分测试效果,希望对你有用!

2 源代码

(1)训练模型

from __future__ import print_function

import os

import datetime

import numpy as np

from keras.models import model

from keras.layers import input, concatenate, conv2d, maxpooling2d, conv2dtranspose, averagepooling2d, dropout, \

batchnormalization

from keras.optimizers import adam

from keras.layers.convolutional import upsampling2d, conv2d

from keras.callbacks import modelcheckpoint

from keras import backend as k

from keras.layers.advanced_activations import leakyrelu, relu

import cv2

pixel = 512 #set your image size

batch_size = 5

lr = 0.001

epoch = 100

x_channel = 3 # training images channel

y_channel = 1 # label iamges channel

x_num = 422 # your traning data number

pathx = 'i:\\pascal voc dataset\\train1\\images\\' #change your file path

pathy = 'i:\\pascal voc dataset\\train1\\segmentationobject\\' #change your file path

#data processing

def generator(pathx, pathy,batch_size):

while 1:

x_train_files = os.listdir(pathx)

y_train_files = os.listdir(pathy)

a = (np.arange(1, x_num))

x = []

y = []

for i in range(batch_size):

index = np.random.choice(a)

# print(index)

img = cv2.imread(pathx + x_train_files[index], 1)

img = np.array(img).reshape(pixel, pixel, x_channel)

x.append(img)

img1 = cv2.imread(pathy + y_train_files[index], 1)

img1 = np.array(img1).reshape(pixel, pixel, y_ch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值