Unet实现细胞分割

本文介绍了如何利用Unet模型进行细胞分割任务,具体步骤包括数据预处理、使用数据增强、在Google Colab上免费GPU训练模型、模型保存及预测。通过30张512x512的图像和标签数据,作者展示了在有限数据下进行模型训练的方法,并给出了训练和预测的代码片段。

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

目的:实现细胞分割
数据集:isbi挑战赛的数据,只有30张512x512的image和label
思路:

  1. 读取数据,将数据转换成 30x512x512x1格式;
  2. 由于数据太少,所以进行数据增强;(注意:对训练数据进行增强的时候image和label增强方式要一致)
  3. 搭建模型。这里直接调用segmentation-models模块的Unet;(提前pip install segmentation-models)
  4. 训练。推荐用Google的Colaboratory,免费GPU亲测真的好用;
  5. 保存模型;
  6. 预测。这里预测暂时5张图片看看效果;

数据处理+训练+保存模型 代码

#coding=utf-8
from segmentation_models import Unet
from keras.preprocessing.image import ImageDataGenerator
from PIL import Image
from keras.optimizers import *
import numpy as np
import os
import skimage.io as io
import skimage.transform as trans
import matplotlib.pyplot as plt
import random

#给定路径,起点和终点,进行图像增强,每次迭代返回一个batch_size的训练图片集和标签集 -> 这里的起点和终点对应下标都是包含在内的!
def train_image_generator(image_path,label_path,st,ed,batch_size,aug = None): 
    nowinx = st #设定初始图片
    while True:
        im_array = []
        lb_array = []
        for i in range(batch_size):
            im = Image.open(os.path.join(image_path,str(nowinx)+'.png'))
            tmp_im_array = np.array(im) #图片转numpy数组
            tmp_im_array = tmp_im_array / 255 #对数据进行归一化
            tmp_im_array = tmp_im_array[np.newaxis,:,:] #numpy数组添加一维,为了把二维图片转成三维图片集
            
            lb = Image.open(os.path.join(label_path,str(nowinx)+'.png'))
            tmp_lb_array = np.array(lb) #图片转numpy数组
            tmp_lb_array = tmp_lb_array / 255
            tmp_lb_array[
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值