U-Net源码上实现自己数据集的分割任务

本文档介绍了如何在Windows环境下,利用Python 3.5、TensorFlow 1.9.0和Keras 2.2.4实现U-Net网络模型,对256x256大小、8位深的PNG图像进行二类分割任务。数据集包括样本和对应的标签图像,存储在同一目录下不同文件夹中。训练和测试过程分别在两个Python文件中完成。在训练过程中遇到图片位深、命名和输出图像颜色问题,并给出了解决方案。
摘要由CSDN通过智能技术生成

# 深度学习还没开始就想放弃系列 #

环境: win7+python 3.5+ tensorflow 1.9.0 + keras 2.2.4

参考博客: U-net源码讲解(Keras)源码解析很棒很细!

                  全卷积神经网络图像分割(U-net)-keras实现代码根本来源于该博主的Github

                   深度学习数据增强(data_augmentation):Keras ImageDataGenerator : keras的图像增强讲解,方便理解源码函数;

                   Keras中文文档——图片预处理 : 无意中翻到的,学习keras可以留存。

目的 : 利用U-Net (keras)实现自己数据集的分割任务,二类。

数据集准备: 

样本: size: 256*256 位深为8,.png格式;

标签: size: 256*256 ,.png格式,使用photoshop软件标注控制位深为8,图片名于样本名字相同。

存储位置: 同一个根目录下的两个文件夹中,文件名为:image, label

测试图片:位深为8,

主要代码:model.py:存放U-Net网络模型,keras写起来真的很简单!!

# model.py
import numpy as np 
import os
import skimage.io as io
import skimage.transform as trans
import numpy as np
from keras.models import *
from keras.layers import *
from keras.optimizers import *
from keras.callbacks import ModelCheckpoint, LearningRateScheduler
from keras import backend as keras

def unet(pretrained_weights = None,input_size = (256,256,1)):
    inputs = Input(input_size)
    conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs)
    conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv1)
    pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)
    conv2 = Conv2D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool1)
    conv2 = Conv2D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv2)
    pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)
    conv3 = Conv2D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool2)
    conv3 = Conv2D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv3)
    pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)
    conv4 = Conv2D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool3)
    conv4 = Conv2D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv4)
    drop4 = Dropout(0.5)(conv4)
    pool4 = MaxPooling2D(pool_size=
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值